|
|
\item \lect Use propositional logic to solve Sudoku. Rules: A Sudoku grid consists of a 9x9 square, which is partitioned into nine 3x3 squares. The goal of the game is to write one number from 1 to 9 in each cell in such a way, that each row, each column, and each 3x3-square contains each number exactly once. Usually several numbers are already given.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% source: https://texample.net/tikz/examples/sudoku/
%%%% Author: Roberto Bonvallet, published 2012-02-01, last accessed 2021-02-14, modified
\newcounter{row} \newcounter{col} \newcommand\setrow[9]{ \setcounter{col}{1} \foreach \n in {#1, #2, #3, #4, #5, #6, #7, #8, #9} { \edef\x{\value{col} - 0.5} \edef\y{9.5 - \value{row}} \node[anchor=center] at (\x, \y) {\n}; \stepcounter{col} } \stepcounter{row} }
\begin{center} \begin{tikzpicture}[scale=.35] \begin{scope} \draw (0, 0) grid (9, 9); \draw[very thick, scale=3] (0, 0) grid (3, 3);
\setcounter{row}{1} \setrow { }{6}{ } {7}{ }{ } {1}{5}{ } \setrow { }{ }{3} {9}{ }{ } {8}{ }{ } \setrow { }{ }{2} {3}{ }{ } { }{4}{9}
\setrow { }{ }{7} { }{ }{4} { }{ }{ } \setrow { }{4}{ } { }{9}{ } { }{8}{ } \setrow { }{ }{ } {1}{ }{ } {4}{ }{ }
\setrow {6}{7}{ } { }{ }{9} {3}{ }{ } \setrow { }{ }{9} { }{ }{2} {5}{ }{ } \setrow { }{2}{8} { }{ }{7} { }{6}{ }
\node[anchor=center] at (4.5, -1) {Sudoku}; \end{scope} \end{tikzpicture} \end{center}
In order to model SUDOKU using propositional logic, we first need to define the propositional variables that we want to use in our formula. We define variables $x_{ijk}$ for every row $i$, for every column $j$, and for every value $k$. This encoding yields to 729 variables ranging from $x_{111}$ to $x_{999}$. Using this variables, define the constraints for the rows, the columns, the 3x3-squares and the predefined numbers. \\ \vspace{0.5cm}
|