我在算法的某个特定部分遇到了麻烦,希望有人能够指出我做错了什么。
我的程序基本上是这样运作的:
创建 81 个空单元格,在检查它们是否有效的同时一步一步地填充每个单元格。
我有三个有效性检查,而水平有效性检查(如果数字在同一行中重复多次)已经给我带来了麻烦。
这是我的函数:
private function isValidHorizontal($index)
{
for ($i = 0; $i < 81; $i += 9){
$firstIndex = $i * 9;
$lastIndex = 9 * ($i + 1) - 1;
// fisrt loop tracking fowards, 2nd loop tracking backwards
if ($index >= $i && $index <= $lastIndex) {
for ($j = 0; $j <= $lastIndex; $j++) {
if ($this->cell[$index]->getValue() == $j) {
return false;
}
}
for ($k = 0; $k >= $firstIndex; $k--){
if ($this->cell[$index]->getValue() == $j) {
return false;
}
}
}
}
return true;
}
$index
是单元格的位置,当 $index = 0
时,这是第一个单元格。最后一个单元格将为 $index = 80
$this->cell[$index]->getValue()
返回一个整数,我已经检查过,所以我正确地获取了值。
问题在于它似乎从来没有返回 true。
有任何想法吗?显然这只是代码的一部分,如果您需要更多帮助,请写下评论,我会进行编辑 :)