0

(私はstackoverflowの完全な初心者です。質問を適切に行うために最善を尽くします。そうでない場合は、お気軽に調査してください)。

だから、私は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 に置き換えます。どうすればいいのかわかりませんが。

最初の方法が最も簡単だと思いますが、現在の要素と次の要素を削除するにはどうすればよいですか?

これは正確には宿題ではありません。宿題の準備です..!

編集:私はこのように解決しました..あなたを見るのはまったくいいことではありません

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 に答える