몇 가지 사실을 기반으로 프롤로그를 사용하여 가장 오래된 사람을 찾아야합니다. 예를 들어 다음과 같이프롤로그에서 가장 오래된 사람 찾기
?- oldest(rose).
True.
?- oldest(X).
X = rose.
내 코드는하지만, 제대로 동작하지 않습니다 :
는age(john, 10).
age(mary, 15).
age(rose, 75).
age(jack, 49).
age(carl, 17).
age(lucy, 66).
콘솔 출력해야
oldest(P) :- age(P, X) , age(_, Y) , X >= Y.
내가 오류를 찾을 수 없습니다,하지만 난 그것이 역 추적과 관련된 것이라고 생각해보십시오. 누군가 날 도와 줄 수 있니? 나는 프롤로그에게 새로운 사람이다.
감사합니다. 하지만이 정의와 내 차이점은 무엇입니까? 왜 이거 작동합니까? – renatov
당신의 코드는 글자 그대로'가장 오래된 '술어를 읽으면 * 거의 * 하나 더 젊은 사람이 첫 번째 사람을 찾는다 – CapelliC
@renatov'가장 오래된'술어를 문자 그대로 읽으면''P''가 가장 오래된 것입니다 ** **''X''가' P' *와 * 나이가'Y', *,'Y'가'X'보다 작거나 같은 사람이 있습니다. 'P'보다 더 어린 사람이 한 명이라면 성공할 것입니다. 그것은 * 다른 모든 *이 더 젊어 야한다는 제약을 확립하지 않습니다. – lurker