2016-03-17 73 views
1

我試圖讓在Eclipse CLP一個數獨板的尺寸,但是我得到以下錯誤:ECLiPSe CLP鍵入錯誤?

type error in dim([[_389, 9, 8, _395, _397, _399, _401, _403, _405], [_409, _411, _413, _415, 7, _419, _421, _423, _425], [_429, _431, _433, _435, 1, 5, _441, _443, _445], [1, _451, _453, _455, _457, _459, _461, _463, _465], [_469, _471, _473, 2, _477, _479, _481, _483, 9], [_489, _491, _493, 9, _497, 6, _501, 8, 2], [_509, _511, _513, _515, _517, _519, _521, 3, _525], [5, _531, 1, _535, _537, _539, _541, _543, _545], [_549, _551, _553, 4, _557, _559, _561, 2, _565]], [_567, _569]) 

我得到這個當我打電話dim(Board,[R,C]),其中板是一個數獨板:

Board = [ 
[_, 9, 8, _, _, _, _, _, _], 
[_, _, _, _, 7, _, _, _, _], 
[_, _, _, _, 1, 5, _, _, _], 
[1, _, _, _, _, _, _, _, _], 
[_, _, _, 2, _, _, _, _, 9], 
[_, _, _, 9, _, 6, _, 8, 2], 
[_, _, _, _, _, _, _, 3, _], 
[5, _, 1, _, _, _, _, _, _], 
[_, _, _, 4, _, _, _, 2, _]]. 

任何人都知道爲什麼會發生這種情況?

回答

0

你打電話dim/2哪些期望數組作爲第一個參數。然而董事會在你的情況下,是一個列表。一個簡單的轉換可以通過調用獲得:

array_list(BoardArray,Board) 

小記:因爲數獨總會有行和列等量的,你也可以使用相同的變量聲明的維度。像這樣:

dim(Sudoku,[N,N]) 

編輯:

爲了還轉換內部列表,你想通過名單列表進行迭代,每排列表轉換爲數組。這又喜歡以下:

(foreach(Row,Board), foreach(RowArray,Out) 
do 
    array_list(RowArray,Row) 
), 
array_list(BoardArray,Out) 

我們以每排列表轉換成排陣和循環後,通過董事會和輸出迭代同時,我們也母基板列表轉換爲一個板陣列。

這似乎已經回答了here

+0

這似乎已修復它。謝謝! –

+0

雖然我仍然有問題。現在,當我運行dim(BoardArray,[N,N])時,我得到「否」。我想這是因爲現在我有一個列表數組,而不是一個數組數組。這是正確的,我該如何解決這個問題? –

+1

這確實可能是問題所在。我會根據你要找的內容編輯我的答案。 – SND