パッケージとバージョンのリストを取得するプログラムを作成しようとしています。候補セットに競合するバージョンがない場合は、trueである必要があります。つまり、異なるバージョンでリストされているパッケージがない場合です。
?- conflict_free([cython, gcc, gcc], ['0.11.2', '4.4.3', '4.4.3']).
true.
?- conflict_free([cython, gcc, gcc], ['0.11.2', '4.4.3', '4.4.0']).
false.
?- conflict_free([gfortran, gcc, libc6, libc6], ['4.4.3', '4.4.3', '2.11.1', '2.11.1']).
true.
?- conflict_free([gfortran, gcc, libc6, libc6], ['4.4.3', '4.4.3', '2.11.1', '2.7.3']).
false.
position / 4を使用して、次のように動作する繰り返し要素のインデックスを見つけようとしました。
?- positions([a, b, c, b, c, a, d, b, c], b, Posn, 0).
Posn = [1, 3, 7].
?- positions([cython, gcc, gcc], gcc, Posn, 0).
Posn = [1, 2].
再帰的に使用position/4
して、戻り値Posn
が> =2
であるかどうかを確認してから、バージョンリストのインデックスを使用して、別のバージョンがあるかどうかを確認しました。しかし、それは私にとってはうまくいきませんでした...
助言がありますか?