목록의 A와 B에서 n 번째 요소를 모두 제거하고 싶습니다.이 요소는 서로의 n 번째 요소와 일치하지 않습니다. 예를 들어, A
에 [1,2,3,4,5]
을 포함하고 B
에 [1,2,2,4,7]
을 포함하는 목록이 있습니다. 결과는 목록 C
이 [3,5]
이고 목록이 D
이고 목록이 [2,7]
이어야합니다. 이 작은 코드 조각을 생각해 냈지만 아직 제대로 작동하지 않습니다. 대신 [3,5]
및 [2,7]
의 재귀를 사용하여 목록에 여러 머리글을 추가하는 방법
without_doubles([], [], [_], [_]).
without_doubles([H|T1], [H|T2], C, D):-
without_doubles(T1, T2, C, D).
without_doubles([H1|T1], [H2|T2], [H1|C], [H2|D]):-
without_doubles(T1, T2, C, D).
, 나는
[3,5,_G2442]
및
[2,7,_G2445]
을 얻고있다. 나는 아마 쉽게 고칠 수 있다는 것을 알고 있지만, 나는 그것을 알아낼 수 없다. 미리 도와 줘서 고마워!
은'_'s가'without_doubles ([], [], [_], [_])'에 뭐.? –
저는 개인적으로 기본 케이스가 재귀의 목표 상태를 설명해야한다고 생각했습니다. 따라서 A와 B는 비어 있고 C와 D는 임의의 변수 (예 : '_')를 포함합니다. – Boomer
Prolog에는 실제로 "입력"및 "출력"이 없습니다. 반대 방향으로 질의 할 수도 있습니다. 불행하게도 나는 Haskell/Prolog 인터프리터가 많은 마법적인 일을하는 많은 사람들을 본다. 실제로 통역사가 작동하는 방식은 매우 간단합니다 (최적화는 꽤 복잡합니다). 밑줄은 단순히 익명의 변수를 의미합니다. 'without_double ([], [], [A], [B])'라고 쓸 수 있습니다. 게다가. –