Эту программу можно скачать тут. У судоку есть всего одно правило. Необходимо заполнить свободные клетки цифрами от 1 до 9 так, чтобы в каждой строке, в каждом столбце и в каждом малом квадрате 3x3 каждая цифра встречалась бы только один раз. Настоящая программа позволяет облегчить решение этой головоломки. Для этого в ней реализованы подсказки, какие цифры могут стоять в каждой из клеток. Для подсчета подсказок использованы следующие алгоритмы: 1) Поиск ячеек в строке, столбце и малом квадрате 3х3, где может стоять только одна цифра. 2) Если в некоторой строке или столбце или малом квадрате 3х3 может быть только две цифры, например, 1,2, то в других ячейках этой строки или столбца или малого квадрата, соответственно, их быть не может. Для облегчения решения сделана автоматическая подсветка ячеек. При помещении курсора в ячейку, где уже стоит цифра, сиреневым цветом подсвечиваются все ячейки в которых не может стоять та же цифра. Сделан алгоритм автоматического решения (Auto solve). Если в какой-то ячейке может стоять только одна цифра (на основании подсказок), программа ставит ее туда, после чего подсказки пересчитываются и если можно сделать еще один аналогичный ход, решение продолжается. Решение доводится до победы либо останавливается, когда на основании подсказок нельзя принять однозначного решения о следующем ходе. Создан механизм для "предположения" (Assumption). Человек может сделать предположение, наугад, что в некоторой ячейке стоит некоторое число, после чего продолжить решение. Рекомендуется использовать это для ячеек, где может стоять только два числа. Если решение приводит к победе, его догадку можно принять, как верную (подтвердить, Confirm). Если последующие ходы приводят к противоречию (например, в какую-то пустую ячейку уже нельзя написать ни одно из чисел), либо к невозможности принятия однозначного решения о следующем ходе, то можно отменить (Cancel) ходы, которые начались с предположения. Если было получено противоречие, человек может изменить начальное предположение на второй возможный вариант, который, в данном случае, является правильным решением. На главную >>> |