vik*_*tor 4 variables list prolog sudoku
如何使用变量自动填充列表?
喜欢
for(i=1;i<=9,i++){
addtoanylist(X_i);
}
Run Code Online (Sandbox Code Playgroud)
结果如L = [X1,X2,X3,X4,X5,X6,X7,X8,X9].?
因为我想为我的sudokusolver建立一个合适大小的列表.
我在这里得到的大小:
sudoku_size_check(L) :-
len(L,N),
member(N,[4,9,16,25]), %check if its 4x4,9x9..
write('Listlength: '),
write(N),nl,
range(1,N,RangeList), %generate [1,2,3,4] in 4x4, [1..9] in 9x9..
write('Possible numbers: '),
write(RangeList), % in 4x4 its like [1,2,3,4]
nl,
retract(sudoku_settings(_,_)),
assert(sudoku_settings(N,RangeList)). %write stats into global variable
Run Code Online (Sandbox Code Playgroud)
您可以通过反向应用"length"谓词来填充包含自由变量的列表:
length(L, 9).
Run Code Online (Sandbox Code Playgroud)
这导致L = [_G320, _G323, _G326, _G329, _G332, _G335, _G338, _G341, _G344]- 九个自由变量的列表,这些变量可能在以后被绑定.
这对于一个名为"length"的谓词来说是不寻常的,但是如果你以声明的方式阅读它," length(L, 9)"说:" L是任何长度为9的列表." 这正是你想要的 - 一个包含9个自由变量的列表符合该定义的最常见情况.
| 归档时间: |
|
| 查看次数: |
1908 次 |
| 最近记录: |