我对 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)
我如何添加或减去SomeList并SomeList2创建列表列表?结果总和说
sumList([[2,4,6,8],[10,12,14,16]])
Run Code Online (Sandbox Code Playgroud)
或反之亦然减法?任何帮助都将不胜感激,而不是寻找代码而是洞察力!
我知道如何在Prolog中找到特定元素的索引,但有没有办法找到大于say的数字的第一个实例的索引X.例如,假设我有一个列表,但是列表中的某个地方有一个大于1的随机数.我怎样才能找到大于的第一个实例的索引1?我是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)