【发布时间】:2011-03-04 06:49:54
【问题描述】:
如何在 Haskell 中用给定的数字缩短字符串。
说:
comp :: String -> String
short :: String -> String
chomp (x:xs) = (x : takeWhile (==x) xs)
使用comp 我想从字符串的开头选择一系列重复的字符,使用
最多包含九个字符的运行。
例如:
short "aaaavvvdd"
将输出"aaaa"
和short "dddddddddd"
输出"ddddddddd"。
我知道我需要take,但不确定如何将其放入代码中。
我已经做到了,但它不起作用
short x:xs | length(short x:xs) >9 = take(9)
| otherwise = comp
【问题讨论】:
-
这是作业吗?如果是,请添加作业标签。
-
不,我只是觉得无聊,决定自学haskell
-
到目前为止,您的定义非常好,您只是在语法上苦苦挣扎。这就是我认为你试图写的内容:
short xs | length (chomp xs) > 9 = take 9 xs | otherwise = chomp xs。不是世界上最有效的东西,但它会让你开始。
标签: haskell