小编bgi*_*ers的帖子

在序言中减去或添加列表列表?

我对 prolog 还很陌生,我正试图弄乱列表列表。我很好奇如何添加两个列表列表或减去它们以生成一个列表列表。如果我有两个列表列表可以说,

SomeList = [[1,2,3,4],[5,6,7,8]]  
SomeList2 = [[1,2,3,4],[5,6,7,8]]
Run Code Online (Sandbox Code Playgroud)

我如何添加或减去SomeListSomeList2创建列表列表?结果总和说

sumList([[2,4,6,8],[10,12,14,16]]) 
Run Code Online (Sandbox Code Playgroud)

或反之亦然减法?任何帮助都将不胜感激,而不是寻找代码而是洞察力!

list prolog

4
推荐指数
1
解决办法
1027
查看次数

第一个元素的索引大于X(Prolog)

我知道如何在Prolog中找到特定元素的索引,但有没有办法找到大于say的数字的第一个实例的索引X.例如,假设我有一个列表,但是列表中的某个地方有一个大于1的随机数.我怎样才能找到大于的第一个实例的索引1?我是Prolog的新手,并且不太善于谓词的子目标.

list prolog clpfd

4
推荐指数
1
解决办法
355
查看次数

在Prolog中掩饰

我最近一直试图找出Prolog并且一直在搞乱Prolog中的列表清单.我试图在p Prolog中创建一种掩模.我有一个谓词,它决定了Prolog中两个列表列表(L1和L2可以说)之间的区别,并将它们保存为列表列表(让我们说R).我有另一个谓词,只是说明差异是否等于零(noDifference).我希望有两个结果列表(M1和M2)基于L1和L2与R相比.例如我想将L1和L2的所有值与R进行比较,如果负值在某个位置然后,在L1的相同位置的值被保存到M1中.如果正值位于R的位置,那么L2的相同位置的值将被保存到M2中,如果这是有意义的话.在所有这些之前,我检查我的noDifference函数,看看差异是否为0,如果是这样,M1和M2的列表列表的所有值都将为0.

这是我到目前为止(我不确定我是否正确启动)

masker(L1,L2,R,M1,M2):- noDifference(R1), M1=R, M2=R1;
Run Code Online (Sandbox Code Playgroud)

而对于其余部分,这里的一些示例值应该在引擎盖下

L1=[[1,5,3,8],[1,5,3,8]]
L2=[[5,4,7,4],[5,4,7,4]]
R=[[4,-1,4,-4],[4,-1,4,-4]]
M1=[[0,5,0,8],[0,5,0,8]]Neg values of L1 at R are stored rest are 0)
M2=[[5,0,7,0],[5,0,7,0]](Pos values of L2 at R are stored rest are 0)
Run Code Online (Sandbox Code Playgroud)

如果我到目前为止所做的任何见解是正确的,如何正确地制定子目标/我应该去的地方将是非常棒的!

用ex谓词编辑

?- masker([[1,5,3,8],[1,5,3,8]],
          [[5,4,7,4],[5,4,7,4]],
          [[4,-1,4,-4],[4,-1,4,-4]], M1, M2).
M1=[[0,5,0,8],[0,5,0,8]].
M2=[[5,0,7,0],[5,0,7,0]].
Run Code Online (Sandbox Code Playgroud)

list prolog masking clpfd

3
推荐指数
1
解决办法
198
查看次数

标签 统计

list ×3

prolog ×3

clpfd ×2

masking ×1