私の割り当てのための私のコードは、正しく動作していません。 これは、コードの最初の行に示されているように、家族の事実を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