Да, я знаю, что в этом нет ничего нового, и уже есть много вопросов (у него даже есть свой собственный тег), но я хотел бы создать Soloku Solver на Java исключительно для обучения себя написанию кода. это более эффективно.
Вероятно, самый простой способ сделать это в программе - это иметь массу циклов for, которые анализируют каждый столбец и строку, собирают возможные значения каждой ячейки, а затем отсеивают ячейки только с одной возможностью (независимо от того, содержат ли они только 1). число, или они являются единственной ячейкой в своей строке / столбце, которая содержит это число), пока у вас не будет решена головоломка. Конечно, сама мысль о действии должна поднять красный флаг в голове каждого программиста.
То, что я ищу, - это методология, позволяющая решить эту проблему как можно более эффективным способом (пожалуйста, постарайтесь не включать слишком много кода - я хочу сам разобраться в этой части).
Я хочу избегать математических алгоритмов, если это вообще возможно - это было бы слишком просто, и 100% не моя работа.
Если бы кто-то мог предоставить пошаговый, эффективный мыслительный процесс для решения головоломки Судоку (будь то человек или компьютер), я был бы очень счастлив :). Я ищу что-то расплывчатое (так что это вызов), но достаточно информативное (чтобы я не совсем растерялся), чтобы начать.
Большое спасибо,
Юстиан Мейер
EDIT:
Глядя на мой код, я задумался: каковы будут некоторые возможности для сохранения этих решающих состояний (то есть сетки Судоку). 2D-массивы и 3D-массивы приходят на ум. Что может быть лучше? 2D может быть проще в управлении с поверхности, но 3D Arrays также предоставит номер "box" / "cage".
EDIT:
Nevermind. Я собираюсь пойти с 3D-массивом.