在Prolog中分割列表并进行迭代

我试图做一些看似非常简单的事情,但我无法理解。我想在Prolog中根据给定的谓词分割一个列表,并对其中的对象进行迭代。例如:

object_properties(jackass, [comedy, -australian]).object_properties(the_godfather, [drama, crime, -character_batman]).

我如何迭代这些列表并将其打印到屏幕上?更具体地说,我需要询问用户该对象是否具有该属性。如果他们回答是,则继续到列表中的下一项;如果他们回答不是,则继续到下一个对象。

任何帮助将不胜感激。


回答:

像这样的代码可以帮助你开始:

object_properties :-    object_properties(O, Ps),    query_user_loop(O, Ps).query_user_loop(_, []).query_user_loop(O, [P|Ps]) :-    write([object, O, has, P, ?]),    read(Answer),    (   Answer == yes    ->  query_user_loop(O, Ps)    ).object_properties(jackass, [comedy, -australian]).object_properties(the_godfather, [drama, crime, -character_batman]).

这可以实现简单的交互(请注意每个答案后的点):

9 ?- object_properties.[object,jackass,has,comedy,?]yes.[object,jackass,has,-australian,?]no.[object,the_godfather,has,drama,?]yes.[object,the_godfather,has,crime,?]yes.[object,the_godfather,has,-character_batman,?]yes.true 

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注