首页 > 解决方案 > Prolog 编程循环通过一个特定的事实

问题描述

我试图按出生顺序定义 4 个后代 charles、andrew、ann、edward。


offspring(andrew).
offspring(ann).
offspring(edward).
offspring(charles).

male(charles).
male(andrew).
female(ann).
male(edward).

older(charles,ann).
older(ann,andrew).
older(andrew,edward).

older_than(J,J):-offspring(J).
older_than(H,Y):-older(H,Z),older(Z,Y).

successor_first(W):- forall(offspring(A), older_than(W,A)),offspring(W),male(W).
successor_first(N):- forall(offspring(B), older_than(N,B)),offspring(N),female(N).


我试图获得年龄较大的男性首先成功,其次是年龄较大的女性的继承顺序。successor_first 的结果应返回 Charles,然后是 Andrew,然后是 Edward,然后是 Ann。但是,它正在返回 Andrew、Edward、Charles、Ann。

标签: prolog

解决方案


推荐阅读