prolog - 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。
解决方案
推荐阅读
- wordpress - 调整旋转木马上的图像大小
- sql - 如果 where 子句不返回任何内容,则在聚合列中返回 null
- nuxt.js - 如何在 vuetify 中的 v-navigation-drawer 迷你变体中垂直居中 v-list?
- python - 提高事件持续时间计算的性能
- flutter - 如何修复 ImagePicker 取消按钮上的“NoSuchMethodError:getter 'path' was called on null”?
- regex - 在 2 个连续数字之间查找 (regEx)
- swift - SwiftUI:如何将数组传递给要在 ForEach 中使用的视图
- flutter - Flutter integration_test - 制作截图
- java - Spring Files.readString() 不适用于设置为 Java 11 的 Maven
- javascript - Vue.js,从子级向父级发出多个参数