作成しているファクトのサブセットを一致させようとしていますが、テストケースはうまく機能していました!
x([1,2,3,4],'bleah')。 x([1,2,4],'bleah2')。 x([1,2],'bleah8')。 x([1,3,4],'bleah3')。 x([5,6,7,8],'bleah5')。 x([6,7,8,9],'bleah6')。 fuzzy(X,R) :- x(Z, R), サブセット(X,Z) . 残り(X、Y、D、M):- x(Z、D)、選択(X、Z、N)、選択(Y、N、M)。 ペア (X、Y、R) :- x([X、Y]、R) ; x([Y,X],R)。 出力: ?- x([1,2|REST],D)。 レスト = [3, 4], D =ブリー。 レスト = [4]、 D = ブレア 2 ; 残り = []、 D = bleah8 ; 間違い。 ?- ペア(2,1,D)。 D = bleah8 ; 間違い。 ?- fuzzy([2,1],R)。 R =ブリー。 R = bleah2 ; R = bleah8 ; 間違い。 ?- 残り (2,1,D,M)。 D =ブリー、 M = [3, 4] ; D =ブリー2、 M = [4] ; D =ブリー8、 M = [] ; 間違い。
次に、次の潜在的なケースを表すファクトを追加しましたが、今ではかなり壊れています。私は Prolog を初めて使用します。これがなぜなのか、どのように修正すればよいのかわかりません。
x([6,X,8,9],'woot') :- (X+0) > 7. 出力: ?- x([1,2|REST],D)。 レスト = [3, 4], D =ブリー。 レスト = [4]、 D = ブレア 2 ; 残り = []、 D = bleah8 ; 間違い。 ?- ペア(2,1,D)。 D = bleah8 ; 間違い。 ?- fuzzy([2,1],R)。 R =ブリー。 R = bleah2 ; R = bleah8 ; エラー: >/2: 引数が十分にインスタンス化されていません ^ 例外: (9) _G260+0>7 ? アボート % 実行が中止されました ?- 残り (2,1,D,M)。 D =ブリー、 M = [3, 4] ; D =ブリー2、 M = [4] ; D =ブリー8、 M = [] ; エラー: >/2: 引数が十分にインスタンス化されていません ^ 例外: (10) _G270+0>7 ? アボート % 実行が中止されました ?- x([_,15,_,_],D)。 D = ウート。
提案を歓迎します。