논리 수수께끼로 일을하고 내가 어떻게 작동하는지에 대한 일반적인 생각을 가지고이 코드 예제에서 http://www.anselm.edu/internet/compsci/faculty_staff/mmalita/HOMEPAGE/logic/bufalo.txt확실이 /가 무엇을 좀 프롤로그 예제를 통해보고 된
first_names([keith,libby,margo,nora,otto]).
last_names([fell,grant,hall,ivey,jule]).
ages([2,3,4,5,6]).
start(Sol):- first_names(F),last_names(L),ages(A),
Sol=[[F1,L1,A1],[F2,L2,A2],[F3,L3,A3],[F4,L4,A4],[F5,L5,A5]],
F=[F1,F2,F3,F4,F5], % if order is not important!
member([libby,jule,_],Sol), % 1
set_equal([L1,L2,L3,L4,L5],L), % write correspondence
set_equal([A1,A2,A3,A4,A5],A),
member([keith,_,AgeK],Sol), % 2
member([_,ivey,AgeI],Sol),AgeK is AgeI+1,
member([nora,_,AgeN],Sol),AgeI is AgeN+1,
member([margo,_,AgeM],Sol),
member([_,fell,AgeF],Sol),AgeF is 3+AgeM,
member([otto,_,AgeO],Sol),member([_,hall,AgeH],Sol).
우연히,하지만 난 것 구체적으로 모르겠다.
첫 번째 필드는 성으로, 두 번째 필드는 성으로, 세 번째 필드는 밑줄로 밑줄이있는 누락 된 정보가있는 원자 목록으로 정의하는 것이 좋습니다. 그러나 왜 이것이 Sol 배열에 멤버와 함께 호출되고 있는지 잘 모르겠습니다. 이 컨텍스트에서 무엇을하는지 확신 할 수 없음
또한이 코드에서는 set_equal 및 F =의 목적을 이해하지 못합니다. 그것은 전혀 참조되지 않은 세 가지 변수를 설정하는 것 같습니다.
도움 주셔서 감사합니다. bibmm.pl에서 구문 몇 가지 문제가있다, 적어도 set_equal/3으로 변경해야합니다 :
, 당신은 나를 위해 제발 고장날 수 틀림없이 더 나은 무엇입니까? – user1066886
그것은 '내 코드'가 아니므로, 내가 제공 한 링크에서 가져 왔습니다 ... 어쨌든, 순열 방식으로 순열을 생성합니다. 라이브러리 /리스트에 순열이 2 개 있기 때문에 – CapelliC