프롤로그에서이 문제를 해결하고 싶습니다. 목록 [3,2,4,1,5,7,8,9,10,8]
을주고 예를 들어목록의 각 요소에 대한 설명 프롤로그
All elements on the left of it are smaller than it and all the elements on the right of it are larger than it.
이 대답은 지금까지 내가했습니다 5,7
될 것이다 : 나는이 조건을 만족 목록의 모든 요소를 찾기 위해 자연수의 목록을 제공합니다 엘리먼트가 위에 설명 된 조건을 만족하면 true 또는 false를 반환하는리스트의 엘리먼트가 주어진다면이 함수를 만들도록한다.
check(Elem, List) :-
seperate(Elem, List, List1, List2),
lesser(Elem, List1, X1),
bigger(Elem, List2, X2),
size(X1, L1),
size(X2, L2),
size(List, L3),
match(L1, L2, L3),
이제 목록이 주어진 다른 조건부를 만들고 싶습니다. 목록의 각 요소에 대해 위 계산을 수행합니다. 사실 하나 이상의 요소가 그것을 만족시킬 수 있기 때문에 문제를 만족시키는 모든 요소를 가진 또 다른 목록을 만들고 싶습니다.
질문은 ?-predicate_name([[3,2,4,1,5,7,8,9,10,8],N).
과 같으며 결과는 요소 목록입니다.
Sry Prolog의 올바른 용어를 사용하지 않는 경우입니다. 순차 논리 언어로하고 싶은 것이 더 구체적이라는 것을 설명 할 것입니다. 그러나 그렇게 생각하는 것은 좋지 않습니다. 술어 검사가 목록의 목록과 요소를 제공하는 함수로 간주되면 요소가 문제의 조건을 충족시키는 지 여부에 상관없이 참 또는 거짓을 반환합니다. 이제 목록의 각 요소를 구문 분석하고 각각에 대해 함수 검사를 호출하려고합니다. 그게 사실이라면 나는 다른 요소에 a.k.a 결과를 추가 할 것이다. 프롤로그에서이 작업을 수행하려고하지만 목록을 반복하는 방법을 모르겠습니다.
'check' 관계에는 세 개의 인수가 있지만'check2' 관계는 두 개의 인수로 호출합니다. 'check'가 변수'List2'에서 하나의 항목, 즉'Elem'을 포함하는 목록으로 돌아가 길 원합니까? – traitor
작성한 것은 모든 요소에 대해 점검이 사실인지 여부를 테스트합니다. 정확히 무엇을 원하니? "Do this Do that"에서 "do that do"와 함께 더 자세히 설명하십시오. – User
@alpha 나는 포스트를 편집했는데, 나는 한 가지 주장을 잊어 버렸습니다. – JmRag