0

たとえば、2 つのリストがあります。

List1 = [ [1,2,3,4], [2,4,5,4],[4,5,2,5],.....]
List2= [ [2,4,4,1], [5,6,1,2], [4,2,3,4],.....]

ここで、2 つのリストを見て、リスト 1 内の各リストの 3 番目の要素、つまりリスト 2 の要素を比較します。それらが同じである場合、リストを list1 内に残し、次のリストに進みます。それらが同じでない場合は、list1 の横にあるリストを別のリスト (つまり、list3) に入れます。だから何か

compare([][][]).
compare([[firstele, second ele, third ele, fourth ele]|list1],[firstele2, second ele2, third ele2, fourth ele2]|list2],list3):-
   ....... condition......

どうすればいいですか?

4

1 に答える 1

0

次のコードを見てください。

convert([],[]).
convert([L|Lt],[Q|Qt]) :- L>64, L<91, Q is L+32, convert(Lt,Qt).
convert([L|Lt],[L|Qt]) :- convert(Lt,Qt).

Prolog は常に最初の true を探します。したがって、line1 が true でない場合は line2 に移動し、line2 が true でない場合は line3 に移動します。各行が真であるためには、すべてのステートメントが真でなければなりません。このロジックでは、L>64、L<91 の両方が true になり、Q が L+32 の場合、convert(Lt,Qt) が実行されます (両方とも true 3 行目は実行されません)。ただし、L>64、L<91 のいずれかが false の場合、3 行目が実行されます。したがって、従来のプログラム (上記のプロローグ プログラムを C または Java で作成する場合) は次のようになります。

if(L>64 && L<91){
  Q=L+32;
  convert(Lt,Qt);
}
else if (the 1st of each list is same){
  convert(Lt,Qt);
}

お役に立てれば。(ご質問の正確な内容はわかりませんでしたが、条件の書き方をお探しのようでした。)

于 2013-04-15T00:47:52.017 に答える