Prolog,创建一个谓词,从 3 个列表中获取 3 个对角线值
Prolog, create a predicate that grab 3 diagonal values from 3 lists
您好,我有 3 个列表 = [1,2,3]、[4,5,6]、[7,8,9]
我想创建一个谓词,使用 3 列表中的对角线值创建 2 列表。
下面是使用上述谓词的一些示例:
?- diagonal([1,2,3], [4,5,6], [7,8,9], D1, D2).
D1 = [1,5,9],
D2 = [3,5,7].
D1 = [3,5,7],
D2 = [1,5,9].
现在我只能考虑对其进行硬编码,但它只会返回 1 个答案,而不是让我按 space 得到第二个答案。
任何帮助。
解决这个问题,只需要使用统一
diagonal([A,_,B], [_,C,_], [D,_,E], [A,C,E], [B,C,D]).
查询:
?- diagonal([1,2,3], [4,5,6], [7,8,9], D1, D2).
D1 = [1, 5, 9],
D2 = [3, 5, 7].
您好,我有 3 个列表 = [1,2,3]、[4,5,6]、[7,8,9]
我想创建一个谓词,使用 3 列表中的对角线值创建 2 列表。
下面是使用上述谓词的一些示例:
?- diagonal([1,2,3], [4,5,6], [7,8,9], D1, D2).
D1 = [1,5,9],
D2 = [3,5,7].
D1 = [3,5,7],
D2 = [1,5,9].
现在我只能考虑对其进行硬编码,但它只会返回 1 个答案,而不是让我按 space 得到第二个答案。
任何帮助。
解决这个问题,只需要使用统一
diagonal([A,_,B], [_,C,_], [D,_,E], [A,C,E], [B,C,D]).
查询:
?- diagonal([1,2,3], [4,5,6], [7,8,9], D1, D2).
D1 = [1, 5, 9],
D2 = [3, 5, 7].