나는 목록에있는 2 개의 동일하고 연속적인 숫자가 있고 목록에 숫자 x가있는 경우 그 함수를 가지고있다. x를 0으로 변경하고 목록을 반환하고 싶습니다.Haskell : List Comprehension
twoAdjThenThirdZero (x:y:xs) = [if x == y && x `elem` xs then 0 else x | x <- xs]
어떤 이유로 나는 그것을 실행할 때마다 목록의 처음 두 요소를 생략합니다. 또한, 상기 케이스 싶습니다 것과 반대를하고
*Main> twoAdjThenThirdZero [2,3,4,1,2,0,2,3,3]
[4,1,2,0,2,0,0]
. 목록의 끝에 두 개의 3을 유지하고 그 두 번째 요소 인 3을 0으로 만들고 싶습니다.하지만 전환되었습니다.
*Main> twoAdjThenThirdZero [2,2,3,1,2,4]
이 왜 [3,1,0,4]
사람이 알고 있나요? 미리 감사드립니다!
그건 (: 예 : X XS)는'당신'기대 x'하고있어'y'가 하나가 될하기 실제로 목록의 요소는 처음 두 가지 일뿐입니다. 나는 너의 목표를 이해하지 못한다. '[2,1,2,1,2,2,1,1,2,1,2,1]'의 결과물로 무엇을 원합니까? – AndrewC
...'[1,1,1,1]'의 결과로 기대할 수있는 것은 무엇입니까? – phynfo
답변 해 주셔서 감사합니다. [2,1,2,1,2,2,1,1,2,1,2,1]의 경우 [0000221100 , 0,0]. 목록에 다른 번호의 쌍이 있으면 격리 된 번호는 0이어야합니다. – user1670032