(Я полный новичок в stackoverflow, сделаю все возможное, чтобы задать свой вопрос соответствующим образом, не стесняйтесь исследовать меня, если я этого не сделаю).Заменить шаблон элементов в списке Haskell
Итак, я новичок в Haskell, и я делаю несколько упражнений, чтобы повесить его.
Я решил половину упражнений, который должен заменить каждое вхождение согласного в строке с этим согласным + «O» +, что согласным, затем вернуть новую строку, вот код:
hurdyGurdy c = concat [ if n `elem` "AEOUYaeouy" then [n] else [n, 'o', n] | n <- c]
Хотя я полностью застрял в том, чтобы превратить строку hurdyGurdy обратно в соответствующее нормальное слово, то есть «HoHelollolo» должно стать «Hello».
Итак, я думаю, что я знаю, что каждый согласный будет иметь следующий символ «o», и если я могу просто удалить или выбросить их из списка, это все хмурый вопрос. Или если я заменил целое [n, 'o', n] на n. Хотя я просто не знаю, как это сделать.
Я предполагаю, что первый способ был бы самым простым, но как мне избавиться от текущего элемента И следующего?
Это не совсем домашнее задание, это тепло до домашней работы ..!
Edit: Я решил это так .. не совсем приятно смотреть на
тысunRovarsprak ("") = ("")
unRovarsprak (c1:'o':c2:xs)
| isConsonant c1 = c1 : unRovarsprak xs
| otherwise = xs
unRovarsprak (c1:xs)
| c1 `elem` vokaler = c1 : unRovarsprak xs
| otherwise = xs
'' Hohelollolo' или HoHelollolo'? – kennytm
Хорошо, второй, HoHelollolo, просто отредактирован! – Webel
Хорошая работа по его решению! В вставленном коде обратите внимание, что скобки не нужны вокруг '' '' (либо как аргумент, либо возвращаемое значение). Тогда я не совсем уверен, какова роль последней строки, но это может быть вне пределов заданного вами вопроса. –