2
我的问题是: 在学习序言时,我想制作一个NxN数独求解器。 该解算器将得到输入像学习序言,数独求解器
[[1,2,3,4],[3,4,1,2],[2,3,4,1],[4,1,2,3]]
当他们中的一些可能是变量。求解器必须解决这个数独。 问题是方式更小:
firstElementsOf([],_).
firstElementsOf([[X|_]|Rest2],Y) :-
firstElementsOf(Rest2,Y2),
append([X],[Y2],NotFlat),
flatten(NotFlat,Y).
这应该是检查的开始,如果每列有不同的数字。来自firstElementsOf
的Y
应该只包含给定行的第一个元素。在举例:
[1,3,2,4]
可悲的是,由于追加,它总是增加了一个空的空间的Y
列表。 它提供:
[1,3,2,4,_1320]
问题1:有没有摆脱_1320
的一种方式?
问题2:这是对的吗?有没有办法获得输入的第二和第三个元素?
对于第一个......它真正的工作......我甚至不明白为什么。 – Shuumi
第二......我也可以这样做......但我也不明白:)让我看看它以后:) – Shuumi
@Shuumi;答案改进了(用点(2)方案;对于第(1)点中的“为什么”,计算一下'[]'是“空列表”,'_'是“一个值”;如果你写'firstElementsOf ([],_)'你从空列表中强制提取“一个值”(在你的例子中是一个无限变量,_1320) – max66