Php 数独解算器上的块扫描说明
我试过这个数独解算器。它很好用 另请参见此电子表格以了解计算中的更多详细信息: 我知道行和列是如何扫描的。从董事会了解到:Php 数独解算器上的块扫描说明,php,algorithm,sudoku,Php,Algorithm,Sudoku,我试过这个数独解算器。它很好用 另请参见此电子表格以了解计算中的更多详细信息: 我知道行和列是如何扫描的。从董事会了解到: 索引=9*行+列 行=楼层(索引/9) col=索引%9 对于块,因为它是从3x3板构建的,所以公式:block\u index=3*row\u block+col\u row。因为每个区块有3行和3列,所以row\u block=floor(row/3)和col\u block=floor(col/3)的公式。从这里我们可以得出结论: block_index = 3*
- 索引=9*行+列
- 行=楼层(索引/9)
- col=索引%9
block\u index=3*row\u block+col\u row
。因为每个区块有3行和3列,所以row\u block=floor(row/3)
和col\u block=floor(col/3)
的公式。从这里我们可以得出结论:
block_index = 3*row_block + col_row
block_index = 3(floor(row/3)) + floor(col/3)
block_index = floor(row/3)*3 + floor(col/3)
这可以解释这些功能:
- 返回行
- 雷顿谷
- 返回块
- 有可能吗
- 可能吗
是否可能\u块功能。以下是函数:
function is_possible_block($number,$block,$sudoku){
$possible = true;
for($x = 0;$x <= 8;$x++){
if($sudoku[floor($block / 3) * 27 + $x % 3 + 9 * floor($x / 3) + 3 * ($block % 3)] == $number){
$possible = false;
}
}
return $possible;
}
如何col=3col\u block+col\u x\u block
,因为据我所知,公式应该是这样的:col=3row\u block+col
我知道col\u x\u块
0-8块上的平均列位置。和行块
0-2块上的平均行位置
你如何解释这个公式?谢谢
更新
现在我知道了<代码>楼层($block/3)*3
和3*($block%3)
确定区块的左上角。然后floor($x/3)
和$x%3
移动块中的每个单元格。我在c中使用它++
for(int k = ((x - 1) / 3) * 3 + 1; k < ((x - 1) / 3) * 3 + 4; k++
for(int k=((x-1)/3)*3+1;k<((x-1)/3)*3+4;k++
因为“x”是整数“/”操作返回int值
也许3(floor($block-1/3))可以帮助你。解释算法?解释公式。我们如何得到公式?我不知道如何在is_u-mable_-block公式中推理。你能给出你答案的更多细节吗?它是基于0或基于1的数独?我们如何得到数字4?我确定数组[10][10]当x=4,5,6 in((x-1)/3)*3+1返回((x-1)/3)返回1,和((x-1)/3)*3+1返回4你能发布你函数的其余部分吗?我真的很困惑你的公式。因为你使用基于1的数独,你的公式是for(int k=((x-1)/3)*3+1;k<((x-1)/3)*3+4;k++
如果我将其转换为基于0的,那么对于(int k=((x)/3)*3;k<((x)/3)将变成这样*3+3;k++
。但是如何使用它?k是什么?x是什么?如果$block=0x=0,k=0;x=1,k=1;x=2,k=2;x=3,k=9;x=4,k=10;x=5,k=11;x=6,k=18;x=7,k=19;x=8,k=20,那么结果应该是这样的:x是函数的参数
for(int k = ((x - 1) / 3) * 3 + 1; k < ((x - 1) / 3) * 3 + 4; k++