ECLiPSe CLP 类型错误?
ECLiPSe CLP Type error in dim?
我试图在 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 是一个数独板:
Board = [
[_, 9, 8, _, _, _, _, _, _],
[_, _, _, _, 7, _, _, _, _],
[_, _, _, _, 1, 5, _, _, _],
[1, _, _, _, _, _, _, _, _],
[_, _, _, 2, _, _, _, _, 9],
[_, _, _, 9, _, 6, _, 8, 2],
[_, _, _, _, _, _, _, 3, _],
[5, _, 1, _, _, _, _, _, _],
[_, _, _, 4, _, _, _, 2, _]].
有人知道为什么会这样吗?
您正在调用 dim/2,它需要一个数组作为第一个参数。但是 Board 在您的情况下是一个列表。可以通过调用获得一个简单的转换:
array_list(BoardArray,Board)
注意事项:由于数独游戏的行数和列数始终相等,因此您也可以使用相同的变量来说明维度。像这样:
dim(Sudoku,[N,N])
编辑:
为了也转换内部列表,您想要遍历列表列表并将每一行列表转换为数组。如下所示:
(foreach(Row,Board), foreach(RowArray,Out)
do
array_list(RowArray,Row)
),
array_list(BoardArray,Out)
我们同时遍历 Board 和 Out,以便将每个行列表转换为行数组,在循环之后,我们还将父板列表转换为板数组。
这似乎已经得到回答 .
我试图在 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 是一个数独板:
Board = [
[_, 9, 8, _, _, _, _, _, _],
[_, _, _, _, 7, _, _, _, _],
[_, _, _, _, 1, 5, _, _, _],
[1, _, _, _, _, _, _, _, _],
[_, _, _, 2, _, _, _, _, 9],
[_, _, _, 9, _, 6, _, 8, 2],
[_, _, _, _, _, _, _, 3, _],
[5, _, 1, _, _, _, _, _, _],
[_, _, _, 4, _, _, _, 2, _]].
有人知道为什么会这样吗?
您正在调用 dim/2,它需要一个数组作为第一个参数。但是 Board 在您的情况下是一个列表。可以通过调用获得一个简单的转换:
array_list(BoardArray,Board)
注意事项:由于数独游戏的行数和列数始终相等,因此您也可以使用相同的变量来说明维度。像这样:
dim(Sudoku,[N,N])
编辑:
为了也转换内部列表,您想要遍历列表列表并将每一行列表转换为数组。如下所示:
(foreach(Row,Board), foreach(RowArray,Out)
do
array_list(RowArray,Row)
),
array_list(BoardArray,Out)
我们同时遍历 Board 和 Out,以便将每个行列表转换为行数组,在循环之后,我们还将父板列表转换为板数组。
这似乎已经得到回答