これは私の問題です:
がアイテム間の距離を超えない制約 (は –匿名変数のリスト として実装されて いる) のサブリストで
distance(List, Nemptylist, SubList)/3
あるかどうかをチェックするプロシージャを作成します。 が完全にインスタンス化されていると仮定します。数が有限である限り、重複した回答が許可されます。Sublist
List
N
N
Nemptylist
N
List
たとえば、
N
= 2 の場合:?- distance( [a,t,d,r,a,n,c,b,c] , [_,_], [a,b,c] ). true ?- distance( [m,a,t,d,r,b,c,t] , [_,_] , [a,b,c] ). false ?- distance([a, t, d, r, a, n, c, b], [_, _], [a, b, c]). false ?- distance([c, c, c, a, c, c, c], [_, _], [a]). true.
この問題を解決しようと何時間も座っていて、最終的に上記の例が機能しましたが、いくつかのテストを実行して失敗しました。
今のところ私の解決策は次のとおりです。
distance( L1 , L2 , [X] ) :-
member(X,L1) .
distance( L1 , L2 , [H|T] ) :-
distance(L1,L2,T) ,
append(Y,Z,L2) ,
T=[Hs|Ts] ,
append([H],Y,W) ,
append(W,[Hs],R) ,
sublist(R,L1) .
prefix(X,L) :- append(X, _, L).
suffix(X,L) :- append(_, X, L).
sublist(X,L) :- suffix(S,L) , prefix(X,S) .
このテストを実行しようとすると:
distance( [r,a,n,c,b,c],[],X) .
ランタイム超過エラーが原因で失敗します。
何時間もデバッグしましたが、本当に疲れました。この恐ろしい任務を終わらせるのを手伝ってください。