文字列(0と1)が交互になっているかどうかをチェックする再帰関数を作成したいと思います。
例えば:
In: 101010
Out: True
In: 110010
Out: False
そのような関数をどのように書くことができますか、そしてその論理をどのように理解することができますか?
リストが0と1の間で交互になるかどうかをチェックする関数を求めていると思います。
これは、再帰を使用してこの問題を解決するための優れた方法だと思います。
alternates ('1':'1':_) = False -- always false if it repeats
alternates ('0':'0':_) = False -- always false if it repeats
alternates [] = True
alternates (x:xs) = alternates xs
最後の行は次のように機能します。要素が含まれている場合、最初の2つのケースでチェックされたためと同じではないことが
わかっているので、先に進んで、の前からチェックします。xs
x
xs
""
一貫性を保つために、および"1"
または"0"
Trueを与える必要があります。交互とは、繰り返しがないことを意味します。