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