0

(我是stackoverflow的新手,会尽我所能适当地问我的问题,如果我不这样做,请随时调查我)。

所以,我是 Haskell 的新手,我正在做一些练习来掌握它。

我已经解决了一半的练习,即用辅音 + 'o' + 那个辅音替换字符串中每个出现的辅音,然后返回新字符串,代码如下:

hurdyGurdy c = concat [ if n `elem` "AEOUYaeouy" then [n] else [n, 'o', n] | n <- c]

虽然我完全坚持将 hurdyGurdy 字符串变回它对应的正常单词,即“HoHelollolo”应该变成“Hello”。

所以我在想我知道每个辅音都会有一个下一个字符'o',如果我可以将这些从列表中删除/删除,那就太棒了。或者如果我用 n 替换整个 [n, 'o', n]。虽然我只是不知道该怎么做。

我猜第一种方法是最简单的,但我如何摆脱当前元素和下一个元素?

这不完全是家庭作业,它是家庭作业的热身..!

编辑:我已经这样解决了..看着你不太好

unRovarsprak ("") = ("")
unRovarsprak (c1:'o':c2:xs)
       | isConsonant c1 = c1 : unRovarsprak xs
   | otherwise   = xs
unRovarsprak (c1:xs) 
   | c1 `elem` vokaler = c1 : unRovarsprak xs
   | otherwise      = xs
4

1 回答 1

2

您可能需要使用以下排序基础:

unHurdyGurdy (c1:'o':c2:xs)
  | isConsonnant c1 && c2 == c1 = c1 : unHurdyGurdy xs

这留给读者一个练习:

  • 写作isConsonnant
  • 处理元音
  • 处理模式匹配失败(不是 的结果的字符串hurdyGurdy
于 2013-10-10T11:11:28.233 回答