我正在尝试编写一个包含软件包和版本列表的程序。如果候选集中没有冲突的版本,它应该是真的。也就是说,如果没有列出不同版本的包。
?- 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
,然后尝试使用版本列表中的索引并查看是否有任何不同的版本。但这对我不起作用...
有什么建议么?