Рубрики
Без рубрики

Как и почему я построил Решатель Судоку

Алгоритм решения судоку

Автор оригинала: Ajit Bhalerao.

Обо мне

студент 3-го курса информатики с отличием в CSE, конкурсный кодировщик на codewars, занимающий менее 20 тыс. Udacity Machine learning Engineer nanodegree holder.

Проблема, которую я хотел решить

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

Что такое решатель Судоку?

Я построил и алгоритм решения судоку, который решал задачи судоку матричного вида 9×9.

Технический стек

Я выбрал python в качестве языка кодирования, так как это было легко, и поскольку задача была сложной, структура и функциональные свойства языка python были довольно полезны для проекта.

Процесс создания решателя Судоку

Процесс был довольно интенсивным,прежде всего, я подошел к чертежной доске, думая о том, как на самом деле это сделать, я нарисовал матрицу 3×3 и подумал, как это можно сделать на этой миниатюрной матрице 3×3.Но найти правильный путь было трудно, и чтобы получить вдохновение или идею о том, как решить эту проблему, я начал решать задачи судоку самостоятельно, легко до уровня эксперта, но как только я освоился с ними, я вернулся к своему проекту, я записал каждую технику или идею в блокнот, который я всегда носил с собой, я убедился, что не слишком ищу это в Google, Я хотел построить это вещь с нуля экспериментируя изо дня в день со строками кода, мне потребовалось 15 дней, чтобы завершить код, и в тот момент, когда правильно заполненная матрица судоку была выдана, я был на седьмом небе от счастья.

Проблемы, с которыми я столкнулся

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

Основные уроки

1)Никогда не обращайтесь в Google, чтобы быстро поверить в свои навыки. 2)Попробуйте, пока вы не взломаете это решение, вам просто нужно его схватить. 3)Много экспериментируйте, не стесняйтесь экспериментировать, боясь нарушить код. 4)Напишите чистый и читаемый код.

Советы и рекомендации

Единственный совет, который я могу дать, – не сдавайтесь, продолжайте бороться, продолжайте экспериментировать, вы получите это, просто не уходите рано

Заключительные мысли и следующие шаги

Ну ,это был забавный опыт, может быть, в будущем я попытаюсь создать графический интерфейс для кода, но сейчас у меня есть другие вещи, с которыми нужно бороться!