prolog

    2热度

    2回答

    例如,如果我想获得总和为10的所有可能的自然数对,我将如何得到prolog来做到这一点? 如果我的代码是这样的: sumsTo10(X,Y):- Z is X+Y, Z == 10. 然后是的,如果我问,如果5,5和10,我得到一个真正的答案,但我想是这样的: ?-sumsTo10(A,B). [1,9] [2,8] ....

    1热度

    1回答

    我定义我的知识基础为: edge(mammal,isa,animal). edge(human,isa,mammal). edge(simba,isa,human). edge(animal,swim,bybirth). edge(human,swim,mustlearn). path(X,Y) :- edge(X,isa,Y). path(X,Y) :- edge(X,isa,Z

    1热度

    1回答

    我制作了专家系统,但我有一些错误。它的作品询问用户一些问题,他们回答“是”或“否”(西班牙文中的'si','no')。问题是,当我验证答案时,程序返回“false”。 这里的代码有错误的部分: :- dynamic respondeSi/1. :- dynamic respondeNo/1. :- dynamic seriesSugeridas/2. abrirBase :- r

    0热度

    2回答

    三名涉嫌抢劫的犯罪嫌疑人,爱丽丝,鲍勃,卡尔。至少其中一人是有罪的。 这里的条件是: 如果A是有罪的,他正好有1帮凶。 如果B有罪,他恰好有2个同谋。 谁是有罪? 我该如何编写一个Prolog脚本来解决guilty(X)给帮派带来的问题?

    3热度

    2回答

    我用swiprolog,并与像一些事实,一个knowlegdebase SWI-Prolog的规则声明元素数量未知,例如[det,noun,verb,prep],并应为传递的“语法”生成新规则。新规则应该根据既定事实和新语法产生一个“句子”。我测试了一些东西,但我没有得到它的工作。 我认为所需的规则看起来像: new_rule(List) :- Head=sentence(X),

    1热度

    1回答

    我试图在Prolog中创建自己的排序规则,经过大量的试验和错误之后,除了按下按钮之外,我能够使其工作。在swipl中,它会将我列表的最后一个值添加到列表中。 使用的代码如下: 分钟以列表找到的最小值,并返回它 min([H|[]],H). min([H|T],Min) :- min(T,CurrentMin), H < CurrentMin, Min = H. m

    0热度

    1回答

    我是Prolog的新手,我在菜单中遇到循环编号问题。 这里是编码: la3:-nl, write('-------MENU-------'),nl, write('1. Biodata'),nl, write('2. Looping Number'),nl, write('3. Exit'),nl, write('Choose : '),read(

    -1热度

    1回答

    这种方式实际上有效。但是有没有简单的答案。 dayname(Num,Name) :- member([Num,Name], [[1,'Monday'],[2,'Tuesday'],[3,'Wednesday'],[4,'Thursday'], [5,'Friday'],[6,'Saturday'],[7,'Sunday'],[8,'Monday'],

    2热度

    2回答

    我想弄清楚如何在count和sum规则上使用递归。 我通常用list,findall和length或findall和sum_list来做,但我不确定这是否是我所有情况下的最佳选择。 这是我的做法与列表: %person(name, surname, age) person('A', 'H', 22). person('B', 'G', 24). person('C', 'F', 20).

    1热度

    1回答

    我想知道如何实现附加到成员谓词。 我有这个会员 member2(X, [X|T]). member2(X, [H|T]) :- member2(X,T). 我怎么能实现追加到这一点。 谢谢!