***すれ立てるまでもない質問はここで 第56刷***
■ このスレッドは過去ログ倉庫に格納されています
0467デフォルトの名無しさん
NGNG/*
経路図
[1]--[2]--[3]--[10]
| | / |
[4]--[5]--[6]
| / | |
[7]--[8]--[9]--[11]
*/
/* リスト内の要素を比較 */
my_member( X, [X | R] ).my_member( X, [Y | R] ) :- my_member( X, R ).
/* 要素を削除 */
remove( X, [X | L], L ).remove( X, [Y | L], [Y | Z] ) :- remove( X, L, Z ).
list(0,[1,2,3,4,5,6,7,8,9,10,11]).
addLink(X,Y,[X|Y]).
repeatSearch(L,Path,Pnt,Goal,Ans):- Pnt=:=Goal,!, addLink(Pnt,Path,Ans), %経路を更新する
repeatSearch(L,Path,Pnt,Goal,Ans):- search(L,Path,Pnt,Goal,Ans).
search(L,Path,Pnt,Goal,Ans):-
remove(Pnt,L,NewL), %到達したのでリストから削除
addLink(Pnt,Path,NewPath), %経路を更新する
next(Pnt,Next),
my_member(Next,NewL),
repeatSearch(NewL,NewPath,Next,Goal,Ans).
play(Start,Goal,Ans):-
list(0,L),
search(L,[],Start,Goal,Ans).
こんな感じで探索を組んだのだが、探索結果が自由変数Ansの中に一括で入ってしまっていて、
経路が短い順にソートする方法が分かりません。自由変数の中身を一つづつ取り出す方法ってありますか?
■ このスレッドは過去ログ倉庫に格納されています