У меня возникают проблемы с определенной частью моего алгоритма, и я надеялся, что кто-то имеет представление о том, что я делаю неправильно.Судоку решения/генерации алгоритма в PHP
Моя программа в основном работает следующим образом:
Создание 81 пустых ячеек, заполнить каждый шаг клеток на этапе при проверке, если она действует там.
У меня есть 3 действительных чека и действительная проверка по горизонтали (если числа удваиваются или больше в 1 строке) уже дает мне проблемы.
Это моя функция:
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()
возвращает номер int, который я проверил, чтобы получить правильное значение.
проблема это как-то никогда не возвращает истинное
Есть идеи? Очевидно, это только часть кода, если вам нужно больше, чтобы помочь, написать комментарий, и я буду править :)
проклятье. Теперь я чувствую себя глупо. теперь отлично работает! – gempir
любая идея, почему мой код теперь останавливается в ячейке 9? Ячейка 9 является первой ячейкой второй строки, поэтому она не должна работать с ошибкой – gempir