Как сделать решатель судоку

Обновлено: 05.07.2024

Судоку решатель позволит Вам ввести любую решетку судоку, с которой Вы испытываете затруднения или просто хотите проверить, правильно ли Вы ее решили. Можете ввести решетку, которую Вы увидели в своем любимом журнале, газете или на другом сайте, не предоставляющем возможность решения решеток судоку. Введите цифры в судоку, которое хотите решить, затем нажмите "Решить". Решение Вашей судоку головоломки будет показано мгновенно в большинстве случаев, но есть и такие решетки, с которыми будет необходимо подождать несколько секунд до того, как решение будет показано.

Как решать судоку с помощью Excel? Известно, что существует очень много видов судоку. Но решение каждого из этих видов судоку можно сделать более интересным, если привлечь к этому решению Excel.

Предлагаю: всем любителям этой увлекательной головоломки судоку создать специальный файл в Excel, который будет помогать в решении судоку. Что конкретно будет в этом файле – об этом я буду достаточно подробно рассказывать в статьях моего яндекс-дзен канала. А в этой статье – первое повествование на эту тему.

Итак, создаем файл для решения судоку. Каковы должны быть его основные особенности?

После того, как файл создан, можно приступить к его форматированию. Во-первых, выберем лист Excel, на котором будут происходить основные вычисления. Переименуем его, назовем его Основное судоку. Данный заголовок (ярлык) вполне допустим, при присвоении заголовков листам пробелы разрешены.

Затем изменим ширину каждого столбца. Оптимальная ширина каждого столбца – 3.

Каждый квадратик судоку мы закрасили в определенный цвет – это сделано для того, чтобы было удобно отличать один квадратик (блок) от другого. Цвета для квадратиков желательно выбирать таким образом, чтобы:

  • один цвет был не похож на другой, особенно если речь идет о тех квадратиках, которые расположены рядом друг с другом;
  • цвета не должны быть слишком темными, чтобы можно было хорошо видеть те цифры, что будут расположены внутри этих квадратиков.

Хотя нам надо присвоить 81 имя, ничего сложного в присвоении этих имен нет. Достаточно задействовать всего лишь один макрос:

Результат работы этого макроса – за несколько секунд будут присвоены все нужные нам имена.

Итак, с нумерацией строк, столбцов и квадратиков внутри судоку все понятно.

После присвоения имен остается еще добавить одну небольшую деталь. Поскольку мы решаем судоку 9 х 9, то внутри нашего судоку могут быть целые числа от 1 до 9. Нужно выделить все клетки судоку и с помощью команды Данные→Проверка данных→Проверка данных задать нужные нам параметры:

Вот, в принципе, и всё – основное форматирование ячеек для решения судоку завершено. А что делать дальше – об этом я расскажу в следующих статьях. Поэтому всех любителей судоку приглашаю подписаться на мой канал и ждать новых статей о том, как с помощью Excel можно быстро решать судоку и о многом другом – обо всем, что имеет отношение к Excel, математике и, конечно же, судоку!

Я пытаюсь сделать генератор головоломок судоку. Это намного сложнее, чем я ожидал, и чем больше я увлекаюсь этим, тем сложнее становится!

Мой текущий подход состоит в том, чтобы разбить проблему на 2 этапа:

  1. Создайте полную (решенную) головоломку судоку.
  2. Удалите числа до тех пор, пока они не будут решены и у них будет только 1 решение

На шаге 1, так как я использую методы грубой силы, я сталкиваюсь с некоторыми проблемами во время выполнения. Есть ли оптимальный способ заполнить полную головоломку судоку?

У меня самая продаваемая игра Судоку в магазине приложений для iOS. Вот как я генерировал головоломки.

Я не отвечаю, как кодировать генератор здесь. Вы можете гуглить и найти тонны кода генератора головоломок онлайн. Начни там. Но чтобы сделать хорошую игру, нужно сделать хорошую игру. Моя игра не генерирует головоломки на лету.

Моё приложение-генератор головоломок работает так, что оно генерирует тысячи головоломок в минуту, но они не все хороши и не все соответствуют определенному уровню сложности. Генератор создает головоломку, затем решает ее, вычисляет рейтинг сложности и оценивает головоломку на основе методов, необходимых для ее решения, и определяет, требуется ли угадывание для ее решения (что обычно плохо). Он выбрасывает любые головоломки, которые не соответствуют критериям. Для сложных, но не невозможных головоломок на быстрой машине может потребоваться час, чтобы создать 100 головоломок, которые точно соответствуют моим требованиям. Вот почему я не делаю это в приложении. Создание головоломок на лету с этими жесткими характеристиками не сработает для того качества головоломок, которое есть в моем приложении.

Головоломки - это строки длиной 162 символа, 81 символ с цифрами и тире или точками, где должны быть пробелы, а затем еще 81 с решением. Затем столбцы для каждой статистики, например, сколько синглов, пар и т. Д.

Мой вывод из всех сеансов генерации - это разделенные запятыми строки со статистикой в ​​виде столбцов. Я возьму, может быть, 10 000 головоломок, принесу их, чтобы преуспеть, и рассортирую их по сложности. Затем внесите их в приложение, чтобы увидеть их на игровом поле. Я также смотрю на них для визуальной привлекательности и видимых образцов для загадки. Тогда я вручную выбираю из них.

Я называю их загадками семян и вот что я имею в виду. Числа в игре судоку на самом деле просто жетоны. Вместо цифр 1-9 они могут быть цветами, символами или буквами. Так что мои загадки с семенами - это не цифры, а буквы ai. Каждая головоломка с семенами меняется на лету, чтобы создать играбельную головоломку:

  1. Перемешать числа / токены. Когда я превращаю буквы ai обратно в числа 1-9, таблица поиска рандомизируется. Это означает, что a не всегда 1. Это само по себе создает около 300 000 вариаций для каждой головоломки.
  2. Поверните головоломку на 90, 180 или 270 градусов. Это добавляет еще 4 варианта.
  3. Флоп головоломки по горизонтали, вертикали или оба. Это добавляет еще 4 варианта.

Следовательно, каждая начальная головоломка может создать 5 806 080 вариаций. Я проверил это на поле с реальными игроками. Люди не знают, что они играют в одну и ту же головоломку. На самом деле это невозможно. Только если они заметят, что шаблон, в котором даны, одинаков каждый раз. Но даже с 100 различными семенами никто не заметит. Миллион пользователей моей игры не имеет. Я также проверил это с решающими приложениями. Приложение решателя не решит головоломку так же, как при повороте или провале. Иногда он даже анализирует его как другой уровень сложности, хотя технически это та же головоломка.

Тем не менее, книга Big Bad Sudoku Book содержит 10 из 1000 головоломок с семенами на 5 уровнях сложности и несколько типов головоломок. Это значит, что в моей игре миллиарды головоломок. С каждыми 10 000 загадками семян есть 58 060 800 000 различных загадок.

В Книге Судоку версии 4 (выйдет в 2016 году) я нашел способ уточнить точную головоломку из этих 58 миллиардов и получить такую ​​же головоломку на устройстве каждого игрока.

Стратегия 2. Группы кандидатов

Подсказка 2.1. Скрытые пары, тройки, четвёрки

То же самое если три цифры-кандидата встречаются только в трёх клетках одной строки/столбца/малого квадрата.

Подсказка 2.2. Открытые пары, тройки, четвёрки

5 комментариев:

Штиф Васлер Клёво) Сами делали? NMitra Угу, муж купил судоку и оставил в туалете :) Есть ещё сложные методы решения, но их, кроме парочки, запомнить тяжеловато и встречаются они довольно редко. Поэтому решила их не использовать. Unknown Эээ. не понял решения своего введённого варианта.
Как-то поменялись цифры: метод1, метод2, и бац - решение готово.
И как оно готово?
NMitra :) Что за пример? Igor A. В разных примерах. Но вроде разобрался.
Просто для "не совсем специалистов" не совсем понятен и итог, выдаваемый практически сразу - без промежуточных шагов ("тут одинаково - значит тут стираем - тут остается только это. ") и без особых комментариев.
Ну да ладно. Это же не обучающая программа :)
Спасибо.

Читайте также: