gpt4 book ai didi

linux - 在 Prolog 中测试包冲突

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:33 25 4
gpt4 key购买 nike

这是一个 Prolog 程序,我想检查 Linux 包之间的依赖关系以及是否存在任何冲突。

dep(gnome1,gcc7).
confl(gcc7,gcc8).

% recursive chain dependency
depend(X,Y):- dep(X,Y).
depend(X,Y):- dep(X,Z), depend(Z,Y).

% conflict(X,Y) holds if X and Y depend
on two packages which conflict, conflict between two
packages should be a symmetric relation.

% my poor attempt
conflict(X,Y):- depend(X,A), depend(Y,B), (confl(A,B) | confl(B,A)).

最佳答案

我认为你的方法几乎是正确的:

dep(gnome1,libc7).
dep(gnome1,gcc7).

dep(gnome2,gnome1).
dep(gnome2,gcc8).

confl(gcc7,gcc8).

% recursive chain dependency
depend(X,Y):- dep(X,Y).
depend(X,Y):- dep(X,Z), depend(Z,Y).

% conflict(X,Y) holds if X and Y depend
% on two packages which conflict, conflict between two
% packages should be a symmetric relation.

conflict(X,Y) :-
depend(X,A), depend(Y,B),
X @< Y, % break symmetry
(confl(A,B) ; confl(B,A)).

我添加了一些(错误的)配置来测试:

11 ?- conflict(X,Y).
X = gnome1,
Y = gnome2 ;
false.

关于linux - 在 Prolog 中测试包冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15325485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com