여기 내 과제에 대한 제 코드가 있는데 제대로 작동하지 않습니다. 코드의 첫 번째 줄에 표시된대로 family(Title,[Name/Speed|_])
형태로 가족 사실을 취하고 잘 알려진 브리지 퍼즐의 가능한 결과를 손전등으로 생성합니다. 그러나 그것이 진실인지 거짓인지는 가족 사실이 있는지 여부에 따라 다릅니다. 모든 사실이 프롤로그 퍼즐, 오류를 찾을 수 없습니다
person(dad,1) person(mom,2) person(kid,5) person(granny,10)
^코드에서 예를
뻗어 경우이 프로그램은 완벽하게 잘 작동, 마지막assert_family
코드가 잘 제거된다.
assert_family
이 올바르게 사용되지 않는 것과 관련이 있습니다. "이 작동하지 않습니다"무엇
family(original, [father/1,mother/2,child/5,granny/10]).
moveFamily(Key,Journey, TotalTime):-
assert_family(Key),
findall(Person+Time, person(Person, Time), Left),
moveFamily(Left, [], Journey),
findall(Time, member([Time|_], Journey), LTime),
sumlist(LTime, TotalTime).
moveFamily([P1-T1, P2-T2], _, [[T, [P1-P2]]]):-
T is max(T1, T2).
moveFamily(Left, Right, [[LT, [P1-P2]],[RT, [P3]]|Journey]):-
select(P1-T1, Left, MLeft1),
select(P2-T2, MLeft1, MLeft2),
LT is max(T1, T2),
select(P3-RT, [P1-T1,P2-T2|Right], MRight),
moveFamily([P3-RT|MLeft2], MRight, Journey).
:- dynamic person/2.
assert_family(Key) :-
family(Key,List),
forall(member(N/V,List),
assertz(person(N,V))).
정확히 말인가요? 과제가 무엇인지 또는 작동하지 않는지에 관해서는 알려주지 않았으므로 그 이유를 설명하는 것은 불가능합니다. 누락 된 정보를 제공하기 위해 질문을 편집하여 여기에 답변해야 할 질문이 있도록하십시오. 그렇게 할 때 우리는 당신의 마음을 읽을 수 없으며 여기에서 당신의 과제를 볼 수 없다는 것을 기억하십시오. 감사. :) –
예 아니오 문제 – user1204349
'Person + Time'이 'Person-Time'이 아닐까요? 그것이 내가 볼 수있는 유일한 문제입니다. – twinterer