Создание решения судоку - PullRequest
       3

Создание решения судоку

0 голосов
/ 02 января 2019

Я пытаюсь создать программу решения судоку, которая получает вектор векторов в качестве входных данных, где каждый вектор внутри вектора является строкой судоку, где каждый '0' является пустой ячейкой в ​​судоку.

До сих пор я нашел каждое возможное число, которое может получить ячейка с '0'.

Итак, проблема в том, что после определения, в какой ячейке есть только одно возможное решение, как я могу поставить это уникальное решение на свою позицию, несмотря на неизменность Clojure?

Программа должна возвращать тот же вектор векторов, где каждый «0» заменяется числом, которое соответствует требованиям.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Если у вас есть вектор векторов, вы можете установить значение ячейки с помощью assoc-in, например,

(def cells [[1 3 0]
            [4 2 1]
            [6 3 0]])

(defn set-cell-value [board row col value]
    (assoc-in board [row col] value))

(set-cell-value cells 0 2 2)
0 голосов
/ 02 января 2019

Если вам нужно иметь состояние, поместите его в atom https://clojuredocs.org/clojure.core/atom Это изменяемый ссылочный тип, который содержит неизменяемые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...