3

私は2つの文字リストを扱っており、次のように、同じ位置に1つを除いて同じ要素があるかどうかを確認したい:

compare([L1,L2,L3,L4],[W1,W2,W3,W4]) :-
((W1 \= L1, W2 = L2, W3 = L3, W4 = L4);
(W1 = L1, W2 \= L2, W3 = L3, W4 = L4);
(W1 = L1, W2 = L2, W3 \= L3, W4 = L4); 
(W1 = L1, W2 = L2, W3 = L3, W4 \= L4)).

これは機能していますが、簡単な方法はありますか?

ありがとう。

4

2 に答える 2

4

を使用して、 @Steven のコードを単調にすることができます。 if_/3(=)/3

cmp_([X|Xs], [Y|Ys]) :-
   if_(X = Y, cmp_(Xs, Ys), Xs = Ys).
于 2016-05-23T09:05:22.897 に答える