2012-11-21 3 views
-4

String (0과 1)이 교대로 있는지 확인하는 재귀 함수를 작성하고 싶습니다.haskell에서 재귀를 사용하여 0과 1을 교대로 확인하십시오.

In: 101010 
Out: True 

In: 110010 
Out: False 

가 어떻게 이러한 함수를 작성할 수 있으며, 어떻게 그 논리를 이해하고있다 : 예를 들어

?

+0

재귀가이를 해결하는 가장 좋은 방법은 아닙니다. – dave4420

+0

코드를 표시하십시오. – Marcin

+0

입력을 목록 또는 정수 (2 진수로 해석)입니까? – dave4420

답변

4

난 당신이 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 

마지막 줄은 다음과 같이 작동합니다.
xs에 요소가있는 경우 처음 두 사례가 확인되었으므로 x과 같지 않습니다. 따라서 앞으로 이동하여 xs의 앞에서부터 확인할 수 있습니다.

일관성을 위해 True를 지정하려면 """1" 또는 "0"이 필요합니다. 번갈아 가며 반복하지 마십시오.

+1

마침내 나는 멘토가 있습니다. 그리고 작동합니다. han 스, 멘토 – sabu

관련 문제