我正在爲我即將開始的考試而過去考試,在完成了一些問題之後,我發現了一個我無法解決的問題。哈斯克爾的字數計劃
它想要一個函數,該函數將接受一個String(或[Char])並返回一個Int字符串中的英文單詞的數量。它說,isWord是一個假設函數,它接受一個字符串並返回一個布爾值,取決於該字是真還是假。 單詞必須從左到右連續排列。給出的例子是「catalogre」。因此,「貓」,「AT」,「產品目錄」,「怪物」和「日誌」,函數應該返回5.
wordsInString :: [Char] -> Int
wordsInString [] = 0
wordsInString x
| isWord (take 1 x)
| isWord (take 2 x)
保險槓只是展示我在想什麼,很顯然它不會工作。
這就是我開始的方式,我在想我可以使用take
函數並每次遞增一個字母,然後將起始字母向下移動到[]
,但我不確定如何實現該遞歸正確。如果任何人有任何想法或可以給我一個方法,這將是偉大的。
我也這麼認爲,但子序列不一定是連續的,他只需要連續的子序列。 – 2012-04-19 08:35:54
這不是「子序列」 - 它只需要連續的子序列。 – Carl 2012-04-19 08:36:23
以'子序列「hhi」',例如在其他人中,你會得到兩個「嗨」結果(一個是第一個出現的h,一個是第二個),最後你會計算兩個單詞而不是一個單詞。 – 2012-04-19 08:38:09