割り当ての場合、リスト内の町を訪問してからへroute/3
のルートがある場合に成功する述語を作成するように求められます。Start
Finish
Visits
私は解決策のアイデアを思いつきましたが、何らかの理由で、終了Visits
後はリストが常に空になり、その理由route
がわかりません。私は質問の解決策を探しているのではなく、正しい方向に私を向けるための何かを探しています。
これまでの私のコードは次のとおりです。
write
私の呼び出しは単にデバッグ上の理由によるものであることに注意してください。
road('Wellington', 'Palmerston North', 143).
road('Palmerston North', 'Wanganui', 74).
road('Palmerston North', 'Napier', 178).
road('Palmerston North', 'Taupo', 259).
road('Wanganui', 'Taupo', 231).
road('Wanganui', 'New Plymouth', 163).
road('Wanganui', 'Napier', 252).
road('Napier', 'Taupo', 147).
road('Napier', 'Gisborne', 215).
road('New Plymouth', 'Hamilton', 242).
road('New Plymouth', 'Taupo', 289).
road('Taupo', 'Hamilton', 153).
road('Taupo', 'Rotorua', 82).
road('Taupo', 'Gisborne', 334).
road('Gisborne', 'Rotorua', 291).
road('Rotorua', 'Hamilton', 109).
road('Hamilton', 'Auckland', 126).
route(Start, Start, Visits) :-
write(Visits), nl.
route(Start, Finish, Visits) :-
write(Visits),nl,
road(Finish, From, _),
route(Start, From, [From | Visits]).
test :-
Visits = [],
route('Auckland', 'Wellington', Visits),
write(Visits).
実行時の出力test.
:
1?-テスト。 [] [パーマストンノース] [ファンガヌイ、パーマストンノース] [タウポ、ファンガヌイ、パーマストンノース] [ハミルトン、タウポ、ファンガヌイ、パーマストンノース] [オークランド、ハミルトン、タウポ、ファンガヌイ、パーマストンノース] [] true。