2011-06-03 61 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