2011-06-03 64 views
0

这个问题需要我完成一个更小的函数,它会消耗一个字符串并产生一个字符串。消费的字符串只包含数字字符,我们将其称为数字(1-9,0)。生成的字符串将由长度为1(单个数字)的字符串组成,该字符串通过重复删除字符串中的第一个或最后一个数字而获得,具体取决于哪一个数字值较大。计划问题更小

例如,

(smaller "5284") 
=> (smaller "284") 
=> (smaller "28") 
=> (smaller "2") 
=> "2" 

如果存在粘结(第一个和最后位之间),去掉最后一个。

例如,

(smaller "131") 
=> (smaller "13") 
=> (smaller "1") 
=> "1" 

那么,如何撰写关于这个问题的计划代码? 非常感谢!

+3

哪部分任务有问题?你的讲义或教科书给你提供了什么提示以解决这个问题? – 2011-06-03 20:22:03

回答

1

这样的事情呢?

(define smaller 
    (lambda (str) 
    (cond 
     [(= 1 (string-length str)) str] 
     [(> (string-ref str 0) (string-ref str (- (string-length str) 1))) (smaller (substring str 0 (- (string-length str) 1)))] 
     [else (smaller (substring str 1))]))) 
+5

请不要直接用完整的解决方案回答作业问题。海报一点也不学习,其他人最终试图维护他们后来编写的代码。让海报显示他们到目前为止所尝试的内容,解释它如何不起作用,并向他们指出如何解决问题。这样,他们实际上必须了解解决方案,因此学到了一些东西。给出答案并不能提供任何教育价值。谢谢。 – 2011-06-03 20:37:37

+0

你说得对。对不起,我一眼就看不到[作业]标签。 – patapizza 2011-06-03 20:38:46

+0

您发布时可​​能不存在;我将它添加为一个编辑。尽管如此,在开头的一句话中,你可以说它是作业:“这个问题需要我完成”和其他东西的措词:“消费的字符串”,“我们将调用的”,“获得的字符串”,以及最终的该段落说:“我怎么写这个问题?”。寻找家庭作业答案的人的所有明显指标。 :) – 2011-06-03 22:13:03