gpt4 book ai didi

database - Prolog 数据库查询

转载 作者:搜寻专家 更新时间:2023-10-30 23:19:38 24 4
gpt4 key购买 nike

用以下形式的事实制作一个约会数据库:

人(姓名,年龄,性别,高度,体重,学历,工资)

给定输入:

数据(亚历克斯,X)。

datable_weight_limit(alex, 170, X). 其中 170 是权重的阈值

如何返回与规则潜在匹配的名称:

  1. 只能匹配异性
  2. 男性应该比女性年长
  3. 男性的教育程度应该高于女性?

我设置了这些关系:

edu_less(hs, bachelor).
edu_less(bachelor, master).
edu_less(master, phd).

edu_lesser(A, B):-
edu_less(A, X),
edu_lesser(X, B).

我试过:

datable(X, Y):-

person(X, Agel, Sexl, Heightl, Weightl, Educationl, Salaryl),

person(Namem, Agem, Sexm, Heightm, Weightm, Educationm, Salarym),

Sexm \== Sexl.

datable(X, Y):-

person(X, Agel, Sexl, Heightl, Weightl, Educationl, Salaryl),

Sexl == female,

findall( X, person(X, _, male, _, _, _, _), Y).

但是我好像运气不好。是否有我遗漏的功能或我执行的错误?

最佳答案

我认为你几乎是正确的。试试这个:

datable(M, F):-
person(M, AgeM, male, HeightM, WeightM, EducationM, SalaryM),
person(F, AgeF, female, HeightF, WeightF, EducationF, SalaryF),
AgeM >= AgeF,
edu_lesser(EducationF, EducationM),
datable_weight_limit(M, MaxWeight),
MaxWeight >= WeightF.

我们假设,教育也是数字。如果您还需要函数 - datable(F,M):

datable(F,M) :-
person(F, _, female, _, _, _, _),
datable(M, F).

关于database - Prolog 数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8124070/

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