Solving LinkedIn Mini Sudoku with Linear Optimization Rodrigo Celso de Lima Porto October 29, 2025
What is Sudoku? ¶ Figure 1: Example of a classic Sudoku puzzle. Source: Wikipedia
Mini Sudoku is based on the classic Sudoku game (from the Japanese 数独, meaning unique numbers in a free translation), which originally consists of a 9 × \times × 9 grid and 9 smaller 3 × \times × 3 matrices, with some squares already pre-filled with digits from 1 to 9. The meaning of its name is due to its objective of filling all the squares without repeating digits in the rows, columns, and smaller grids.
How to Play Mini Sudoku ¶ Figure 2: Example of a Mini Sudoku game. Source: LinkedIn Mini Sudoku
In the case of Mini Sudoku, the game consists of a smaller board dimensions than the classic one, 6 × \times × 6 grid, composed of six 2 × \times × 3 blocks.
Objective Fill all the empty spaces in the game grid with digits from 1 to 6. Rules Each row, column, and 2x3 blocks must be filled with a digit from 1 to 6, without repetition in each row, column or block. Problem Modeling ¶ As I did in my previous articles, the LO model for the Mini Sudoku game requires the definition of the following components:
Ranges
Sets
Objective function
Decision Variables
Constraints
First, let’s define these components considering the most general scenario for building the Abstract Model for the Sudoku game before defining them for the more specific case of Mini Sudoku.
Ranges ¶ In order to consider the most general cases, five ranges will be considered: I I I and J J J to represent the dimensions of the main grid, U U U and V V V for the dimensions of the smaller grids, and an interval K K K for the range of possible values a square can receive.
I = { 1 , ⋯ , n } I = \{1, \cdots, n\} I = { 1 , ⋯ , n } The row range, where n n n is the total number of rows (in this case, n = 6 n = 6 n = 6 ) J = { 1 , ⋯ , n } J = \{1, \cdots, n\} J = { 1 , ⋯ , n } The column range, where the total number of columns is equal to the number of rows for dealing with a square matrix K = { 1 , ⋯ , n } K = \{1, \cdots, n\} K = { 1 , ⋯ , n } Range of possible values, where n n n is the total number of possible digits, which is expected to be equal to the n n n dimensions of the grid U = { 1 , ⋯ , p } U = \{1, \cdots, p\} U = { 1 , ⋯ , p } Number of rows in the game’s submatrices, where p p p is the total number of rows in each submatrix V = { 1 , ⋯ , q } V = \{1, \cdots, q\} V = { 1 , ⋯ , q } Number of columns in the game’s submatrices, where q q q is the total number of columns in each submatrix, which is expected to be p q = n pq = n pq = n , that is, the number of squares in each submatrix should be equal to the number of possible digits. Sets ¶ To facilitate the definition of the constraints, it is important to define at least the set S S S of submatrices and F F F of pre-filled squares. Furthermore, it is necessary to clearly define which squares of the board comprise each of the submatrices S v u S_{vu} S vu . For example, the first submatrix S 11 S_{11} S 11 is composed of squares in rows 1 and 2 and columns whose index ranges go from 1 to 3. S 12 S_{12} S 12 is also composed of squares in rows 1 and 2, but the column indices range from 4 to 6, which is the second half of the column range; and so on for the remaining S v u S_{vu} S vu .
The indices of the v v v and u u u of the submatrices correspond respectively to the indices of the columns and rows. The order is reversed because, for submatrices of dimensions 2 × \times × 3, their arrangement in the main matrix is in the 3 × \times × 2 format.
S = { S v u ∣ ∀ v ∈ V , ∀ u ∈ U } S = \{S_{vu} \mid \forall v \in V, \forall u \in U\} S = { S vu ∣ ∀ v ∈ V , ∀ u ∈ U } Set of submatrices S v u S_{vu} S vu existing in the game S v u = { ( i , j ) ∣ ∀ i ∈ { p ( v − 1 ) + 1 , ⋯ , p v } , ∀ j ∈ { q ( u − 1 ) + 1 , ⋯ , q u } } S_{vu} = \{(i, j) \mid \forall i \in \{p(v-1)+1, \cdots, pv\}, \forall j \in \{q(u-1)+1, \cdots, qu\}\} S vu = {( i , j ) ∣ ∀ i ∈ { p ( v − 1 ) + 1 , ⋯ , p v } , ∀ j ∈ { q ( u − 1 ) + 1 , ⋯ , q u }} Set of squares ( i , j ) ⊆ I × J (i, j) \subseteq I \times J ( i , j ) ⊆ I × J that belong to the submatrix S v u S_{vu} S vu F = { ( i , j , k ) ∣ i ∈ I , j ∈ J , k ∈ K } ⊆ I × J × K F = \{(i, j, k) \mid i \in I, j \in J, k \in K\} \subseteq I \times J \times K F = {( i , j , k ) ∣ i ∈ I , j ∈ J , k ∈ K } ⊆ I × J × K Subset of pre-filled squares. Decision Variables ¶ The decision variables will be binary x i j k x_{ijk} x ijk , representing the decision of whether square ( i , j ) (i, j) ( i , j ) is filled with the value k k k . Therefore, as with the models of the other LinkedIn minigames, the Mini Sudoku is a BLOP .
x i j k ∈ { 0 , 1 } , ∀ ( i , j , k ) ∈ I × J × K x_{ijk} \in \B, \forall (i,j,k) \in I \times J \times K x ijk ∈ { 0 , 1 } , ∀ ( i , j , k ) ∈ I × J × K x i j k = 1 x_{ijk} = 1 x ijk = 1 if square ( i , j ) (i,j) ( i , j ) is filled with the digit k k k x i j k = 0 x_{ijk} = 0 x ijk = 0 otherwise.Objective Function ¶ The Sudoku optimization problem does not have a function to be optimized, since we only want to find a solution that satisfies all the rules of the game. Therefore, the BLPP is a feasibility problem, whose objective function consists of maximizing (or minimizing) an arbitrary constant.
Constraints ¶ Finally, with all the previously defined components, let’s translate the Sudoku rules into mathematical formulations for the BLOP model.
Binary Constraints First of all, it’s important to clearly state the binary nature of the decision variables in the constraint set. x i j k ∈ { 0 , 1 } , ∀ ( i , j , k ) ∈ I × J × K x_{ijk} \in \{0, 1\}, \forall (i, j, k) \in I \times J \times K x ijk ∈ { 0 , 1 } , ∀ ( i , j , k ) ∈ I × J × K Unique-Digits-Per-Row Constraints Since there can be no repetition of values for each row, the sum of the x i j k x_{ijk} x ijk for each row i i i must be equal to 1, and there must be a such constraint for column j j j and for each digit k k k , which in the case of Mini Sudoku will result in 36 constraints. ∑ j ∈ J x i j k = 1 , ∀ i ∈ I , ∀ k ∈ K \sum_{j \in J}{x_{ijk}}=1, \forall i \in I, \forall k \in K j ∈ J ∑ x ijk = 1 , ∀ i ∈ I , ∀ k ∈ K Unique-Digits-Per-Column Constraints The same logic applies to each column j j j of the game, with one constraint for each row i i i and possible digit k k k , resulting in 36 more constraints. ∑ i ∈ I x i j k = 1 , ∀ j ∈ J , ∀ k ∈ K \sum_{i \in I}{x_{ijk}}=1, \forall j \in J, \forall k \in K i ∈ I ∑ x ijk = 1 , ∀ j ∈ J , ∀ k ∈ K Unique-Digits-Per-Submatrix Constraints With the set S S S of submatrices already well defined, it becomes easier to define the set of constraints that prevent repetition of digits for each submatrix S v u S_{vu} S vu . ∑ ( i , j ) ∈ S v u x i j k = 1 , ∀ S v u ∈ S , ∀ k ∈ K \sum_{(i,j) \in S_{vu}}{x_{ijk}}=1, \forall S_{vu} \in S, \forall k \in K ( i , j ) ∈ S vu ∑ x ijk = 1 , ∀ S vu ∈ S , ∀ k ∈ K Single-Digit-Per-Square Constraints In addition, it is necessary to impose a set of constraints to prevent a square from being filled with more than one digit, which is achieved if the sum of x i j k x_{ijk} x ijk is equal to 1 for each square ( i , j ) (i, j) ( i , j ) existing in the game; therefore, 36 more constraints in the case of Mini Sudoku. ∑ k ∈ K x i j k = 1 , ∀ i ∈ I , ∀ j ∈ J \sum_{k \in K}{x_{ijk}}=1, \forall i \in I, \forall j \in J k ∈ K ∑ x ijk = 1 , ∀ i ∈ I , ∀ j ∈ J Already-Filled-Squares Constraints Finally, for each already filled square, we must remember to impose that x i j k = 1 x_{ijk} = 1 x ijk = 1 if the square ( i , j ) (i, j) ( i , j ) is already filled with the digit k k k . x i j k = 1 , ∀ ( i , j , k ) ∈ F x_{ijk}=1, \forall (i,j,k) \in F x ijk = 1 , ∀ ( i , j , k ) ∈ F Abstract Model ¶ With all the components set, we now have assembled the abstract model for a Sudoku game. It’s important to remember that this model assumes the game’s submatrices will be rectangular with dimensions p × q p \times q p × q , such that p q = n pq = n pq = n .
S.t.: ∑ i ∈ I x i j k = 1 , ∀ j ∈ J , ∀ k ∈ K ∑ j ∈ J x i j k = 1 , ∀ i ∈ I , ∀ k ∈ K ∑ k ∈ K x i j k = 1 , ∀ i ∈ I , ∀ j ∈ J ∑ ( i , j ) ∈ S v u x i j k = 1 , ∀ S v u ∈ S , ∀ k ∈ K x i j k = 1 , ∀ ( i , j , k ) ∈ F x i j k ∈ { 0 , 1 } , ∀ ( i , j , k ) ∈ I × J × K \begin{array}{lll}
\text{S.t.:} & & \\
& \sum_{i \in I}{x_{ijk}}=1, & \forall j \in J, \forall k \in K \\
& \sum_{j \in J}{x_{ijk}}=1, & \forall i \in I, \forall k \in K \\
& \sum_{k \in K}{x_{ijk}}=1, & \forall i \in I, \forall j \in J \\
& \sum_{(i,j) \in S_{vu}}{x_{ijk}}=1, & \forall S_{vu} \in S, \forall k \in K \\
& x_{ijk}=1, & \forall (i, j,k) \in F \\
& x_{ijk} \in \B, & \forall (i,j,k) \in I \times J \times K \\
\end{array} S.t.: ∑ i ∈ I x ijk = 1 , ∑ j ∈ J x ijk = 1 , ∑ k ∈ K x ijk = 1 , ∑ ( i , j ) ∈ S vu x ijk = 1 , x ijk = 1 , x ijk ∈ { 0 , 1 } , ∀ j ∈ J , ∀ k ∈ K ∀ i ∈ I , ∀ k ∈ K ∀ i ∈ I , ∀ j ∈ J ∀ S vu ∈ S , ∀ k ∈ K ∀ ( i , j , k ) ∈ F ∀ ( i , j , k ) ∈ I × J × K Concrete Model ¶ The example to be solved in this notebook will be Mini Sudoku No. 60, published on LinkedIn on October 10th , 2025
Figure 3: Mini Sudoku No. 60, October 10th , 2025 (Source: LinkedIn MiniSudoku )
Based on the abstract model, it is possible to instantiate a concrete model for this game, as shown below.
S.t. :
Unique-Digits-Per-Row Constraints x 111 + x 121 + x 131 + x 141 + x 151 + x 161 = 1 x_{111} + x_{121} + x_{131} + x_{141} + x_{151} + x_{161} = 1 x 111 + x 121 + x 131 + x 141 + x 151 + x 161 = 1 (Digit 1 on Row 1 ) x 211 + x 221 + x 231 + x 241 + x 251 + x 261 = 1 x_{211} + x_{221} + x_{231} + x_{241} + x_{251} + x_{261} = 1 x 211 + x 221 + x 231 + x 241 + x 251 + x 261 = 1 (Digit 1 on Row 2 ) x 311 + x 321 + x 331 + x 341 + x 351 + x 361 = 1 x_{311} + x_{321} + x_{331} + x_{341} + x_{351} + x_{361} = 1 x 311 + x 321 + x 331 + x 341 + x 351 + x 361 = 1 (Digit 1 on Row 3 ) x 411 + x 421 + x 431 + x 441 + x 451 + x 461 = 1 x_{411} + x_{421} + x_{431} + x_{441} + x_{451} + x_{461} = 1 x 411 + x 421 + x 431 + x 441 + x 451 + x 461 = 1 (Digit 1 on Row 4 ) x 511 + x 521 + x 531 + x 541 + x 551 + x 561 = 1 x_{511} + x_{521} + x_{531} + x_{541} + x_{551} + x_{561} = 1 x 511 + x 521 + x 531 + x 541 + x 551 + x 561 = 1 (Digit 1 on Row 5 ) x 611 + x 621 + x 631 + x 641 + x 651 + x 661 = 1 x_{611} + x_{621} + x_{631} + x_{641} + x_{651} + x_{661} = 1 x 611 + x 621 + x 631 + x 641 + x 651 + x 661 = 1 (Digit 1 on Row 6 ) x 112 + x 122 + x 132 + x 142 + x 152 + x 162 = 1 x_{112} + x_{122} + x_{132} + x_{142} + x_{152} + x_{162} = 1 x 112 + x 122 + x 132 + x 142 + x 152 + x 162 = 1 (Digit 2 on Row 1 ) x 212 + x 222 + x 232 + x 242 + x 252 + x 262 = 1 x_{212} + x_{222} + x_{232} + x_{242} + x_{252} + x_{262} = 1 x 212 + x 222 + x 232 + x 242 + x 252 + x 262 = 1 (Digit 2 on Row 2 ) x 312 + x 322 + x 332 + x 342 + x 352 + x 362 = 1 x_{312} + x_{322} + x_{332} + x_{342} + x_{352} + x_{362} = 1 x 312 + x 322 + x 332 + x 342 + x 352 + x 362 = 1 (Digit 2 on Row 3 ) x 412 + x 422 + x 432 + x 442 + x 452 + x 462 = 1 x_{412} + x_{422} + x_{432} + x_{442} + x_{452} + x_{462} = 1 x 412 + x 422 + x 432 + x 442 + x 452 + x 462 = 1 (Digit 2 on Row 4 ) x 512 + x 522 + x 532 + x 542 + x 552 + x 562 = 1 x_{512} + x_{522} + x_{532} + x_{542} + x_{552} + x_{562} = 1 x 512 + x 522 + x 532 + x 542 + x 552 + x 562 = 1 (Digit 2 on Row 5 ) x 612 + x 622 + x 632 + x 642 + x 652 + x 662 = 1 x_{612} + x_{622} + x_{632} + x_{642} + x_{652} + x_{662} = 1 x 612 + x 622 + x 632 + x 642 + x 652 + x 662 = 1 (Digit 2 on Row 6 ) x 113 + x 123 + x 133 + x 143 + x 153 + x 163 = 1 x_{113} + x_{123} + x_{133} + x_{143} + x_{153} + x_{163} = 1 x 113 + x 123 + x 133 + x 143 + x 153 + x 163 = 1 (Digit 3 on Row 1 ) x 213 + x 223 + x 233 + x 243 + x 253 + x 263 = 1 x_{213} + x_{223} + x_{233} + x_{243} + x_{253} + x_{263} = 1 x 213 + x 223 + x 233 + x 243 + x 253 + x 263 = 1 (Digit 3 on Row 2 ) x 313 + x 323 + x 333 + x 343 + x 353 + x 363 = 1 x_{313} + x_{323} + x_{333} + x_{343} + x_{353} + x_{363} = 1 x 313 + x 323 + x 333 + x 343 + x 353 + x 363 = 1 (Digit 3 on Row 3 ) x 413 + x 423 + x 433 + x 443 + x 453 + x 463 = 1 x_{413} + x_{423} + x_{433} + x_{443} + x_{453} + x_{463} = 1 x 413 + x 423 + x 433 + x 443 + x 453 + x 463 = 1 (Digit 3 on Row 4 ) x 513 + x 523 + x 533 + x 543 + x 553 + x 563 = 1 x_{513} + x_{523} + x_{533} + x_{543} + x_{553} + x_{563} = 1 x 513 + x 523 + x 533 + x 543 + x 553 + x 563 = 1 (Digit 3 on Row 5 ) x 613 + x 623 + x 633 + x 643 + x 653 + x 663 = 1 x_{613} + x_{623} + x_{633} + x_{643} + x_{653} + x_{663} = 1 x 613 + x 623 + x 633 + x 643 + x 653 + x 663 = 1 (Digit 3 on Row 6 ) x 114 + x 124 + x 134 + x 144 + x 154 + x 164 = 1 x_{114} + x_{124} + x_{134} + x_{144} + x_{154} + x_{164} = 1 x 114 + x 124 + x 134 + x 144 + x 154 + x 164 = 1 (Digit 4 on Row 1 ) x 214 + x 224 + x 234 + x 244 + x 254 + x 264 = 1 x_{214} + x_{224} + x_{234} + x_{244} + x_{254} + x_{264} = 1 x 214 + x 224 + x 234 + x 244 + x 254 + x 264 = 1 (Digit 4 on Row 2 ) x 314 + x 324 + x 334 + x 344 + x 354 + x 364 = 1 x_{314} + x_{324} + x_{334} + x_{344} + x_{354} + x_{364} = 1 x 314 + x 324 + x 334 + x 344 + x 354 + x 364 = 1 (Digit 4 on Row 3 ) x 414 + x 424 + x 434 + x 444 + x 454 + x 464 = 1 x_{414} + x_{424} + x_{434} + x_{444} + x_{454} + x_{464} = 1 x 414 + x 424 + x 434 + x 444 + x 454 + x 464 = 1 (Digit 4 on Row 4 ) x 514 + x 524 + x 534 + x 544 + x 554 + x 564 = 1 x_{514} + x_{524} + x_{534} + x_{544} + x_{554} + x_{564} = 1 x 514 + x 524 + x 534 + x 544 + x 554 + x 564 = 1 (Digit 4 on Row 5 ) x 614 + x 624 + x 634 + x 644 + x 654 + x 664 = 1 x_{614} + x_{624} + x_{634} + x_{644} + x_{654} + x_{664} = 1 x 614 + x 624 + x 634 + x 644 + x 654 + x 664 = 1 (Digit 4 on Row 6 ) x 115 + x 125 + x 135 + x 145 + x 155 + x 165 = 1 x_{115} + x_{125} + x_{135} + x_{145} + x_{155} + x_{165} = 1 x 115 + x 125 + x 135 + x 145 + x 155 + x 165 = 1 (Digit 5 on Row 1 ) x 215 + x 225 + x 235 + x 245 + x 255 + x 265 = 1 x_{215} + x_{225} + x_{235} + x_{245} + x_{255} + x_{265} = 1 x 215 + x 225 + x 235 + x 245 + x 255 + x 265 = 1 (Digit 5 on Row 2 ) x 315 + x 325 + x 335 + x 345 + x 355 + x 365 = 1 x_{315} + x_{325} + x_{335} + x_{345} + x_{355} + x_{365} = 1 x 315 + x 325 + x 335 + x 345 + x 355 + x 365 = 1 (Digit 5 on Row 3 ) x 415 + x 425 + x 435 + x 445 + x 455 + x 465 = 1 x_{415} + x_{425} + x_{435} + x_{445} + x_{455} + x_{465} = 1 x 415 + x 425 + x 435 + x 445 + x 455 + x 465 = 1 (Digit 5 on Row 4 ) x 515 + x 525 + x 535 + x 545 + x 555 + x 565 = 1 x_{515} + x_{525} + x_{535} + x_{545} + x_{555} + x_{565} = 1 x 515 + x 525 + x 535 + x 545 + x 555 + x 565 = 1 (Digit 5 on Row 5 ) x 615 + x 625 + x 635 + x 645 + x 655 + x 665 = 1 x_{615} + x_{625} + x_{635} + x_{645} + x_{655} + x_{665} = 1 x 615 + x 625 + x 635 + x 645 + x 655 + x 665 = 1 (Digit 5 on Row 6 ) x 116 + x 126 + x 136 + x 146 + x 156 + x 166 = 1 x_{116} + x_{126} + x_{136} + x_{146} + x_{156} + x_{166} = 1 x 116 + x 126 + x 136 + x 146 + x 156 + x 166 = 1 (Digit 6 on Row 1 ) x 216 + x 226 + x 236 + x 246 + x 256 + x 266 = 1 x_{216} + x_{226} + x_{236} + x_{246} + x_{256} + x_{266} = 1 x 216 + x 226 + x 236 + x 246 + x 256 + x 266 = 1 (Digit 6 on Row 2 ) x 316 + x 326 + x 336 + x 346 + x 356 + x 366 = 1 x_{316} + x_{326} + x_{336} + x_{346} + x_{356} + x_{366} = 1 x 316 + x 326 + x 336 + x 346 + x 356 + x 366 = 1 (Digit 6 on Row 3 ) x 416 + x 426 + x 436 + x 446 + x 456 + x 466 = 1 x_{416} + x_{426} + x_{436} + x_{446} + x_{456} + x_{466} = 1 x 416 + x 426 + x 436 + x 446 + x 456 + x 466 = 1 (Digit 6 on Row 4 ) x 516 + x 526 + x 536 + x 546 + x 556 + x 566 = 1 x_{516} + x_{526} + x_{536} + x_{546} + x_{556} + x_{566} = 1 x 516 + x 526 + x 536 + x 546 + x 556 + x 566 = 1 (Digit 6 on Row 5 ) x 616 + x 626 + x 636 + x 646 + x 656 + x 666 = 1 x_{616} + x_{626} + x_{636} + x_{646} + x_{656} + x_{666} = 1 x 616 + x 626 + x 636 + x 646 + x 656 + x 666 = 1 (Digit 6 on Row 6 ) Unique-Digits-Per-Column Constraints x 111 + x 211 + x 311 + x 411 + x 511 + x 611 = 1 x_{111} + x_{211} + x_{311} + x_{411} + x_{511} + x_{611} = 1 x 111 + x 211 + x 311 + x 411 + x 511 + x 611 = 1 (Digit 1 on Column 1 ) x 121 + x 221 + x 321 + x 421 + x 521 + x 621 = 1 x_{121} + x_{221} + x_{321} + x_{421} + x_{521} + x_{621} = 1 x 121 + x 221 + x 321 + x 421 + x 521 + x 621 = 1 (Digit 1 on Column 2 ) x 131 + x 231 + x 331 + x 431 + x 531 + x 631 = 1 x_{131} + x_{231} + x_{331} + x_{431} + x_{531} + x_{631} = 1 x 131 + x 231 + x 331 + x 431 + x 531 + x 631 = 1 (Digit 1 on Column 3 ) x 141 + x 241 + x 341 + x 441 + x 541 + x 641 = 1 x_{141} + x_{241} + x_{341} + x_{441} + x_{541} + x_{641} = 1 x 141 + x 241 + x 341 + x 441 + x 541 + x 641 = 1 (Digit 1 on Column 4 ) x 151 + x 251 + x 351 + x 451 + x 551 + x 651 = 1 x_{151} + x_{251} + x_{351} + x_{451} + x_{551} + x_{651} = 1 x 151 + x 251 + x 351 + x 451 + x 551 + x 651 = 1 (Digit 1 on Column 5 ) x 161 + x 261 + x 361 + x 461 + x 561 + x 661 = 1 x_{161} + x_{261} + x_{361} + x_{461} + x_{561} + x_{661} = 1 x 161 + x 261 + x 361 + x 461 + x 561 + x 661 = 1 (Digit 1 on Column 6 ) x 112 + x 212 + x 312 + x 412 + x 512 + x 612 = 1 x_{112} + x_{212} + x_{312} + x_{412} + x_{512} + x_{612} = 1 x 112 + x 212 + x 312 + x 412 + x 512 + x 612 = 1 (Digit 2 on Column 1 ) x 122 + x 222 + x 322 + x 422 + x 522 + x 622 = 1 x_{122} + x_{222} + x_{322} + x_{422} + x_{522} + x_{622} = 1 x 122 + x 222 + x 322 + x 422 + x 522 + x 622 = 1 (Digit 2 on Column 2 ) x 132 + x 232 + x 332 + x 432 + x 532 + x 632 = 1 x_{132} + x_{232} + x_{332} + x_{432} + x_{532} + x_{632} = 1 x 132 + x 232 + x 332 + x 432 + x 532 + x 632 = 1 (Digit 2 on Column 3 ) x 142 + x 242 + x 342 + x 442 + x 542 + x 642 = 1 x_{142} + x_{242} + x_{342} + x_{442} + x_{542} + x_{642} = 1 x 142 + x 242 + x 342 + x 442 + x 542 + x 642 = 1 (Digit 2 on Column 4 ) x 152 + x 252 + x 352 + x 452 + x 552 + x 652 = 1 x_{152} + x_{252} + x_{352} + x_{452} + x_{552} + x_{652} = 1 x 152 + x 252 + x 352 + x 452 + x 552 + x 652 = 1 (Digit 2 on Column 5 ) x 162 + x 262 + x 362 + x 462 + x 562 + x 662 = 1 x_{162} + x_{262} + x_{362} + x_{462} + x_{562} + x_{662} = 1 x 162 + x 262 + x 362 + x 462 + x 562 + x 662 = 1 (Digit 2 on Column 6 ) x 113 + x 213 + x 313 + x 413 + x 513 + x 613 = 1 x_{113} + x_{213} + x_{313} + x_{413} + x_{513} + x_{613} = 1 x 113 + x 213 + x 313 + x 413 + x 513 + x 613 = 1 (Digit 3 on Column 1 ) x 123 + x 223 + x 323 + x 423 + x 523 + x 623 = 1 x_{123} + x_{223} + x_{323} + x_{423} + x_{523} + x_{623} = 1 x 123 + x 223 + x 323 + x 423 + x 523 + x 623 = 1 (Digit 3 on Column 2 ) x 133 + x 233 + x 333 + x 433 + x 533 + x 633 = 1 x_{133} + x_{233} + x_{333} + x_{433} + x_{533} + x_{633} = 1 x 133 + x 233 + x 333 + x 433 + x 533 + x 633 = 1 (Digit 3 on Column 3 ) x 143 + x 243 + x 343 + x 443 + x 543 + x 643 = 1 x_{143} + x_{243} + x_{343} + x_{443} + x_{543} + x_{643} = 1 x 143 + x 243 + x 343 + x 443 + x 543 + x 643 = 1 (Digit 3 on Column 4 ) x 153 + x 253 + x 353 + x 453 + x 553 + x 653 = 1 x_{153} + x_{253} + x_{353} + x_{453} + x_{553} + x_{653} = 1 x 153 + x 253 + x 353 + x 453 + x 553 + x 653 = 1 (Digit 3 on Column 5 ) x 163 + x 263 + x 363 + x 463 + x 563 + x 663 = 1 x_{163} + x_{263} + x_{363} + x_{463} + x_{563} + x_{663} = 1 x 163 + x 263 + x 363 + x 463 + x 563 + x 663 = 1 (Digit 3 on Column 6 ) x 114 + x 214 + x 314 + x 414 + x 514 + x 614 = 1 x_{114} + x_{214} + x_{314} + x_{414} + x_{514} + x_{614} = 1 x 114 + x 214 + x 314 + x 414 + x 514 + x 614 = 1 (Digit 4 on Column 1 ) x 124 + x 224 + x 324 + x 424 + x 524 + x 624 = 1 x_{124} + x_{224} + x_{324} + x_{424} + x_{524} + x_{624} = 1 x 124 + x 224 + x 324 + x 424 + x 524 + x 624 = 1 (Digit 4 on Column 2 ) x 134 + x 234 + x 334 + x 434 + x 534 + x 634 = 1 x_{134} + x_{234} + x_{334} + x_{434} + x_{534} + x_{634} = 1 x 134 + x 234 + x 334 + x 434 + x 534 + x 634 = 1 (Digit 4 on Column 3 ) x 144 + x 244 + x 344 + x 444 + x 544 + x 644 = 1 x_{144} + x_{244} + x_{344} + x_{444} + x_{544} + x_{644} = 1 x 144 + x 244 + x 344 + x 444 + x 544 + x 644 = 1 (Digit 4 on Column 4 ) x 154 + x 254 + x 354 + x 454 + x 554 + x 654 = 1 x_{154} + x_{254} + x_{354} + x_{454} + x_{554} + x_{654} = 1 x 154 + x 254 + x 354 + x 454 + x 554 + x 654 = 1 (Digit 4 on Column 5 ) x 164 + x 264 + x 364 + x 464 + x 564 + x 664 = 1 x_{164} + x_{264} + x_{364} + x_{464} + x_{564} + x_{664} = 1 x 164 + x 264 + x 364 + x 464 + x 564 + x 664 = 1 (Digit 4 on Column 6 ) x 115 + x 215 + x 315 + x 415 + x 515 + x 615 = 1 x_{115} + x_{215} + x_{315} + x_{415} + x_{515} + x_{615} = 1 x 115 + x 215 + x 315 + x 415 + x 515 + x 615 = 1 (Digit 5 on Column 1 ) x 125 + x 225 + x 325 + x 425 + x 525 + x 625 = 1 x_{125} + x_{225} + x_{325} + x_{425} + x_{525} + x_{625} = 1 x 125 + x 225 + x 325 + x 425 + x 525 + x 625 = 1 (Digit 5 on Column 2 ) x 135 + x 235 + x 335 + x 435 + x 535 + x 635 = 1 x_{135} + x_{235} + x_{335} + x_{435} + x_{535} + x_{635} = 1 x 135 + x 235 + x 335 + x 435 + x 535 + x 635 = 1 (Digit 5 on Column 3 ) x 145 + x 245 + x 345 + x 445 + x 545 + x 645 = 1 x_{145} + x_{245} + x_{345} + x_{445} + x_{545} + x_{645} = 1 x 145 + x 245 + x 345 + x 445 + x 545 + x 645 = 1 (Digit 5 on Column 4 ) x 155 + x 255 + x 355 + x 455 + x 555 + x 655 = 1 x_{155} + x_{255} + x_{355} + x_{455} + x_{555} + x_{655} = 1 x 155 + x 255 + x 355 + x 455 + x 555 + x 655 = 1 (Digit 5 on Column 5 ) x 165 + x 265 + x 365 + x 465 + x 565 + x 665 = 1 x_{165} + x_{265} + x_{365} + x_{465} + x_{565} + x_{665} = 1 x 165 + x 265 + x 365 + x 465 + x 565 + x 665 = 1 (Digit 5 on Column 6 ) x 116 + x 216 + x 316 + x 416 + x 516 + x 616 = 1 x_{116} + x_{216} + x_{316} + x_{416} + x_{516} + x_{616} = 1 x 116 + x 216 + x 316 + x 416 + x 516 + x 616 = 1 (Digit 6 on Column 1 ) x 126 + x 226 + x 326 + x 426 + x 526 + x 626 = 1 x_{126} + x_{226} + x_{326} + x_{426} + x_{526} + x_{626} = 1 x 126 + x 226 + x 326 + x 426 + x 526 + x 626 = 1 (Digit 6 on Column 2 ) x 136 + x 236 + x 336 + x 436 + x 536 + x 636 = 1 x_{136} + x_{236} + x_{336} + x_{436} + x_{536} + x_{636} = 1 x 136 + x 236 + x 336 + x 436 + x 536 + x 636 = 1 (Digit 6 on Column 3 ) x 146 + x 246 + x 346 + x 446 + x 546 + x 646 = 1 x_{146} + x_{246} + x_{346} + x_{446} + x_{546} + x_{646} = 1 x 146 + x 246 + x 346 + x 446 + x 546 + x 646 = 1 (Digit 6 on Column 4 ) x 156 + x 256 + x 356 + x 456 + x 556 + x 656 = 1 x_{156} + x_{256} + x_{356} + x_{456} + x_{556} + x_{656} = 1 x 156 + x 256 + x 356 + x 456 + x 556 + x 656 = 1 (Digit 6 on Column 5 ) x 166 + x 266 + x 366 + x 466 + x 566 + x 666 = 1 x_{166} + x_{266} + x_{366} + x_{466} + x_{566} + x_{666} = 1 x 166 + x 266 + x 366 + x 466 + x 566 + x 666 = 1 (Digit 6 on Column 6 ) Unique-Digits-Per-Submatrix Constraints x 111 + x 121 + x 131 + x 211 + x 221 + x 231 = 1 x_{111} + x_{121} + x_{131} + x_{211} + x_{221} + x_{231} = 1 x 111 + x 121 + x 131 + x 211 + x 221 + x 231 = 1 (Digit 1 on Submatrix S 11 S_{11} S 11 ) x 112 + x 122 + x 132 + x 212 + x 222 + x 232 = 1 x_{112} + x_{122} + x_{132} + x_{212} + x_{222} + x_{232} = 1 x 112 + x 122 + x 132 + x 212 + x 222 + x 232 = 1 (Digit 2 on Submatrix S 11 S_{11} S 11 ) x 113 + x 123 + x 133 + x 213 + x 223 + x 233 = 1 x_{113} + x_{123} + x_{133} + x_{213} + x_{223} + x_{233} = 1 x 113 + x 123 + x 133 + x 213 + x 223 + x 233 = 1 (Digit 3 on Submatrix S 11 S_{11} S 11 ) x 114 + x 124 + x 134 + x 214 + x 224 + x 234 = 1 x_{114} + x_{124} + x_{134} + x_{214} + x_{224} + x_{234} = 1 x 114 + x 124 + x 134 + x 214 + x 224 + x 234 = 1 (Digit 4 on Submatrix S 11 S_{11} S 11 ) x 115 + x 125 + x 135 + x 215 + x 225 + x 235 = 1 x_{115} + x_{125} + x_{135} + x_{215} + x_{225} + x_{235} = 1 x 115 + x 125 + x 135 + x 215 + x 225 + x 235 = 1 (Digit 5 on Submatrix S 11 S_{11} S 11 ) x 116 + x 126 + x 136 + x 216 + x 226 + x 236 = 1 x_{116} + x_{126} + x_{136} + x_{216} + x_{226} + x_{236} = 1 x 116 + x 126 + x 136 + x 216 + x 226 + x 236 = 1 (Digit 6 on Submatrix S 11 S_{11} S 11 ) x 141 + x 151 + x 161 + x 241 + x 251 + x 261 = 1 x_{141} + x_{151} + x_{161} + x_{241} + x_{251} + x_{261} = 1 x 141 + x 151 + x 161 + x 241 + x 251 + x 261 = 1 (Digit 1 on Submatrix S 12 S_{12} S 12 ) x 142 + x 152 + x 162 + x 242 + x 252 + x 262 = 1 x_{142} + x_{152} + x_{162} + x_{242} + x_{252} + x_{262} = 1 x 142 + x 152 + x 162 + x 242 + x 252 + x 262 = 1 (Digit 2 on Submatrix S 12 S_{12} S 12 ) x 143 + x 153 + x 163 + x 243 + x 253 + x 263 = 1 x_{143} + x_{153} + x_{163} + x_{243} + x_{253} + x_{263} = 1 x 143 + x 153 + x 163 + x 243 + x 253 + x 263 = 1 (Digit 3 on Submatrix S 12 S_{12} S 12 ) x 144 + x 154 + x 164 + x 244 + x 254 + x 264 = 1 x_{144} + x_{154} + x_{164} + x_{244} + x_{254} + x_{264} = 1 x 144 + x 154 + x 164 + x 244 + x 254 + x 264 = 1 (Digit 4 on Submatrix S 12 S_{12} S 12 ) x 145 + x 155 + x 165 + x 245 + x 255 + x 265 = 1 x_{145} + x_{155} + x_{165} + x_{245} + x_{255} + x_{265} = 1 x 145 + x 155 + x 165 + x 245 + x 255 + x 265 = 1 (Digit 5 on Submatrix S 12 S_{12} S 12 ) x 146 + x 156 + x 166 + x 246 + x 256 + x 266 = 1 x_{146} + x_{156} + x_{166} + x_{246} + x_{256} + x_{266} = 1 x 146 + x 156 + x 166 + x 246 + x 256 + x 266 = 1 (Digit 6 on Submatrix S 12 S_{12} S 12 ) x 311 + x 321 + x 331 + x 411 + x 421 + x 431 = 1 x_{311} + x_{321} + x_{331} + x_{411} + x_{421} + x_{431} = 1 x 311 + x 321 + x 331 + x 411 + x 421 + x 431 = 1 (Digit 1 on Submatrix S 21 S_{21} S 21 ) x 312 + x 322 + x 332 + x 412 + x 422 + x 432 = 1 x_{312} + x_{322} + x_{332} + x_{412} + x_{422} + x_{432} = 1 x 312 + x 322 + x 332 + x 412 + x 422 + x 432 = 1 (Digit 2 on Submatrix S 21 S_{21} S 21 ) x 313 + x 323 + x 333 + x 413 + x 423 + x 433 = 1 x_{313} + x_{323} + x_{333} + x_{413} + x_{423} + x_{433} = 1 x 313 + x 323 + x 333 + x 413 + x 423 + x 433 = 1 (Digit 3 on Submatrix S 21 S_{21} S 21 ) x 314 + x 324 + x 334 + x 414 + x 424 + x 434 = 1 x_{314} + x_{324} + x_{334} + x_{414} + x_{424} + x_{434} = 1 x 314 + x 324 + x 334 + x 414 + x 424 + x 434 = 1 (Digit 4 on Submatrix S 21 S_{21} S 21 ) x 315 + x 325 + x 335 + x 415 + x 425 + x 435 = 1 x_{315} + x_{325} + x_{335} + x_{415} + x_{425} + x_{435} = 1 x 315 + x 325 + x 335 + x 415 + x 425 + x 435 = 1 (Digit 5 on Submatrix S 21 S_{21} S 21 ) x 316 + x 326 + x 336 + x 416 + x 426 + x 436 = 1 x_{316} + x_{326} + x_{336} + x_{416} + x_{426} + x_{436} = 1 x 316 + x 326 + x 336 + x 416 + x 426 + x 436 = 1 (Digit 6 on Submatrix S 21 S_{21} S 21 ) x 341 + x 351 + x 331 + x 441 + x 451 + x 431 = 1 x_{341} + x_{351} + x_{331} + x_{441} + x_{451} + x_{431} = 1 x 341 + x 351 + x 331 + x 441 + x 451 + x 431 = 1 (Digit 1 on Submatrix S 22 S_{22} S 22 ) x 342 + x 352 + x 362 + x 442 + x 452 + x 462 = 1 x_{342} + x_{352} + x_{362} + x_{442} + x_{452} + x_{462} = 1 x 342 + x 352 + x 362 + x 442 + x 452 + x 462 = 1 (Digit 2 on Submatrix S 22 S_{22} S 22 ) x 343 + x 353 + x 363 + x 443 + x 453 + x 463 = 1 x_{343} + x_{353} + x_{363} + x_{443} + x_{453} + x_{463} = 1 x 343 + x 353 + x 363 + x 443 + x 453 + x 463 = 1 (Digit 3 on Submatrix S 22 S_{22} S 22 ) x 344 + x 354 + x 364 + x 444 + x 454 + x 464 = 1 x_{344} + x_{354} + x_{364} + x_{444} + x_{454} + x_{464} = 1 x 344 + x 354 + x 364 + x 444 + x 454 + x 464 = 1 (Digit 4 on Submatrix S 22 S_{22} S 22 ) x 345 + x 355 + x 365 + x 445 + x 455 + x 465 = 1 x_{345} + x_{355} + x_{365} + x_{445} + x_{455} + x_{465} = 1 x 345 + x 355 + x 365 + x 445 + x 455 + x 465 = 1 (Digit 5 on Submatrix S 22 S_{22} S 22 ) x 346 + x 356 + x 366 + x 446 + x 456 + x 466 = 1 x_{346} + x_{356} + x_{366} + x_{446} + x_{456} + x_{466} = 1 x 346 + x 356 + x 366 + x 446 + x 456 + x 466 = 1 (Digit 6 on Submatrix S 22 S_{22} S 22 ) x 511 + x 521 + x 531 + x 611 + x 621 + x 631 = 1 x_{511} + x_{521} + x_{531} + x_{611} + x_{621} + x_{631} = 1 x 511 + x 521 + x 531 + x 611 + x 621 + x 631 = 1 (Digit 1 on Submatrix S 31 S_{31} S 31 ) x 512 + x 522 + x 532 + x 612 + x 622 + x 632 = 1 x_{512} + x_{522} + x_{532} + x_{612} + x_{622} + x_{632} = 1 x 512 + x 522 + x 532 + x 612 + x 622 + x 632 = 1 (Digit 2 on Submatrix S 31 S_{31} S 31 ) x 513 + x 523 + x 533 + x 613 + x 623 + x 633 = 1 x_{513} + x_{523} + x_{533} + x_{613} + x_{623} + x_{633} = 1 x 513 + x 523 + x 533 + x 613 + x 623 + x 633 = 1 (Digit 3 on Submatrix S 31 S_{31} S 31 ) x 514 + x 524 + x 534 + x 614 + x 624 + x 634 = 1 x_{514} + x_{524} + x_{534} + x_{614} + x_{624} + x_{634} = 1 x 514 + x 524 + x 534 + x 614 + x 624 + x 634 = 1 (Digit 4 on Submatrix S 31 S_{31} S 31 ) x 515 + x 525 + x 535 + x 615 + x 625 + x 635 = 1 x_{515} + x_{525} + x_{535} + x_{615} + x_{625} + x_{635} = 1 x 515 + x 525 + x 535 + x 615 + x 625 + x 635 = 1 (Digit 5 on Submatrix S 31 S_{31} S 31 ) x 516 + x 526 + x 536 + x 616 + x 626 + x 636 = 1 x_{516} + x_{526} + x_{536} + x_{616} + x_{626} + x_{636} = 1 x 516 + x 526 + x 536 + x 616 + x 626 + x 636 = 1 (Digit 6 on Submatrix S 31 S_{31} S 31 ) x 541 + x 551 + x 561 + x 641 + x 651 + x 631 = 1 x_{541} + x_{551} + x_{561} + x_{641} + x_{651} + x_{631} = 1 x 541 + x 551 + x 561 + x 641 + x 651 + x 631 = 1 (Digit 1 on Submatrix S 32 S_{32} S 32 ) x 542 + x 552 + x 562 + x 642 + x 652 + x 662 = 1 x_{542} + x_{552} + x_{562} + x_{642} + x_{652} + x_{662} = 1 x 542 + x 552 + x 562 + x 642 + x 652 + x 662 = 1 (Digit 2 on Submatrix S 32 S_{32} S 32 ) x 543 + x 553 + x 563 + x 643 + x 653 + x 663 = 1 x_{543} + x_{553} + x_{563} + x_{643} + x_{653} + x_{663} = 1 x 543 + x 553 + x 563 + x 643 + x 653 + x 663 = 1 (Digit 3 on Submatrix S 32 S_{32} S 32 ) x 544 + x 554 + x 564 + x 644 + x 654 + x 664 = 1 x_{544} + x_{554} + x_{564} + x_{644} + x_{654} + x_{664} = 1 x 544 + x 554 + x 564 + x 644 + x 654 + x 664 = 1 (Digit 4 on Submatrix S 32 S_{32} S 32 ) x 545 + x 555 + x 565 + x 645 + x 655 + x 665 = 1 x_{545} + x_{555} + x_{565} + x_{645} + x_{655} + x_{665} = 1 x 545 + x 555 + x 565 + x 645 + x 655 + x 665 = 1 (Digit 5 on Submatrix S 32 S_{32} S 32 ) x 546 + x 556 + x 566 + x 646 + x 656 + x 666 = 1 x_{546} + x_{556} + x_{566} + x_{646} + x_{656} + x_{666} = 1 x 546 + x 556 + x 566 + x 646 + x 656 + x 666 = 1 (Digit 6 on Submatrix S 32 S_{32} S 32 ) Single-Digit-Per-Square Constraints x 111 + x 112 + x 113 + x 114 + x 115 + x 116 = 1 x_{111} + x_{112} + x_{113} + x_{114} + x_{115} + x_{116} = 1 x 111 + x 112 + x 113 + x 114 + x 115 + x 116 = 1 (Square (1, 1) ) x 121 + x 122 + x 123 + x 124 + x 125 + x 126 = 1 x_{121} + x_{122} + x_{123} + x_{124} + x_{125} + x_{126} = 1 x 121 + x 122 + x 123 + x 124 + x 125 + x 126 = 1 (Square (1, 2) ) x 131 + x 132 + x 133 + x 134 + x 135 + x 136 = 1 x_{131} + x_{132} + x_{133} + x_{134} + x_{135} + x_{136} = 1 x 131 + x 132 + x 133 + x 134 + x 135 + x 136 = 1 (Square (1, 3) ) x 141 + x 142 + x 143 + x 144 + x 145 + x 146 = 1 x_{141} + x_{142} + x_{143} + x_{144} + x_{145} + x_{146} = 1 x 141 + x 142 + x 143 + x 144 + x 145 + x 146 = 1 (Square (1, 4) ) x 151 + x 152 + x 153 + x 154 + x 155 + x 156 = 1 x_{151} + x_{152} + x_{153} + x_{154} + x_{155} + x_{156} = 1 x 151 + x 152 + x 153 + x 154 + x 155 + x 156 = 1 (Square (1, 5) ) x 161 + x 162 + x 163 + x 164 + x 165 + x 166 = 1 x_{161} + x_{162} + x_{163} + x_{164} + x_{165} + x_{166} = 1 x 161 + x 162 + x 163 + x 164 + x 165 + x 166 = 1 (Square (1, 6) ) x 211 + x 212 + x 213 + x 214 + x 215 + x 216 = 1 x_{211} + x_{212} + x_{213} + x_{214} + x_{215} + x_{216} = 1 x 211 + x 212 + x 213 + x 214 + x 215 + x 216 = 1 (Square (2, 1) ) x 221 + x 222 + x 223 + x 224 + x 225 + x 226 = 1 x_{221} + x_{222} + x_{223} + x_{224} + x_{225} + x_{226} = 1 x 221 + x 222 + x 223 + x 224 + x 225 + x 226 = 1 (Square (2, 2) ) x 231 + x 232 + x 233 + x 234 + x 235 + x 236 = 1 x_{231} + x_{232} + x_{233} + x_{234} + x_{235} + x_{236} = 1 x 231 + x 232 + x 233 + x 234 + x 235 + x 236 = 1 (Square (2, 3) ) x 241 + x 242 + x 243 + x 244 + x 245 + x 246 = 1 x_{241} + x_{242} + x_{243} + x_{244} + x_{245} + x_{246} = 1 x 241 + x 242 + x 243 + x 244 + x 245 + x 246 = 1 (Square (2, 4) ) x 251 + x 252 + x 253 + x 254 + x 255 + x 256 = 1 x_{251} + x_{252} + x_{253} + x_{254} + x_{255} + x_{256} = 1 x 251 + x 252 + x 253 + x 254 + x 255 + x 256 = 1 (Square (2, 5) ) x 261 + x 262 + x 263 + x 264 + x 265 + x 266 = 1 x_{261} + x_{262} + x_{263} + x_{264} + x_{265} + x_{266} = 1 x 261 + x 262 + x 263 + x 264 + x 265 + x 266 = 1 (Square (2, 6) ) x 311 + x 312 + x 313 + x 314 + x 315 + x 316 = 1 x_{311} + x_{312} + x_{313} + x_{314} + x_{315} + x_{316} = 1 x 311 + x 312 + x 313 + x 314 + x 315 + x 316 = 1 (Square (3, 1) ) x 321 + x 322 + x 323 + x 324 + x 325 + x 326 = 1 x_{321} + x_{322} + x_{323} + x_{324} + x_{325} + x_{326} = 1 x 321 + x 322 + x 323 + x 324 + x 325 + x 326 = 1 (Square (3, 2) ) x 331 + x 332 + x 333 + x 334 + x 335 + x 336 = 1 x_{331} + x_{332} + x_{333} + x_{334} + x_{335} + x_{336} = 1 x 331 + x 332 + x 333 + x 334 + x 335 + x 336 = 1 (Square (3, 3) ) x 341 + x 342 + x 343 + x 344 + x 345 + x 346 = 1 x_{341} + x_{342} + x_{343} + x_{344} + x_{345} + x_{346} = 1 x 341 + x 342 + x 343 + x 344 + x 345 + x 346 = 1 (Square (3, 4) ) x 351 + x 352 + x 353 + x 354 + x 355 + x 356 = 1 x_{351} + x_{352} + x_{353} + x_{354} + x_{355} + x_{356} = 1 x 351 + x 352 + x 353 + x 354 + x 355 + x 356 = 1 (Square (3, 5) ) x 361 + x 362 + x 363 + x 364 + x 365 + x 366 = 1 x_{361} + x_{362} + x_{363} + x_{364} + x_{365} + x_{366} = 1 x 361 + x 362 + x 363 + x 364 + x 365 + x 366 = 1 (Square (3, 6) ) x 411 + x 412 + x 413 + x 414 + x 415 + x 416 = 1 x_{411} + x_{412} + x_{413} + x_{414} + x_{415} + x_{416} = 1 x 411 + x 412 + x 413 + x 414 + x 415 + x 416 = 1 (Square (4, 1) ) x 421 + x 422 + x 423 + x 424 + x 425 + x 426 = 1 x_{421} + x_{422} + x_{423} + x_{424} + x_{425} + x_{426} = 1 x 421 + x 422 + x 423 + x 424 + x 425 + x 426 = 1 (Square (4, 2) ) x 431 + x 432 + x 433 + x 434 + x 435 + x 436 = 1 x_{431} + x_{432} + x_{433} + x_{434} + x_{435} + x_{436} = 1 x 431 + x 432 + x 433 + x 434 + x 435 + x 436 = 1 (Square (4, 3) ) x 441 + x 442 + x 443 + x 444 + x 445 + x 446 = 1 x_{441} + x_{442} + x_{443} + x_{444} + x_{445} + x_{446} = 1 x 441 + x 442 + x 443 + x 444 + x 445 + x 446 = 1 (Square (4, 4) ) x 451 + x 452 + x 453 + x 454 + x 455 + x 456 = 1 x_{451} + x_{452} + x_{453} + x_{454} + x_{455} + x_{456} = 1 x 451 + x 452 + x 453 + x 454 + x 455 + x 456 = 1 (Square (4, 5) ) x 461 + x 462 + x 463 + x 464 + x 465 + x 466 = 1 x_{461} + x_{462} + x_{463} + x_{464} + x_{465} + x_{466} = 1 x 461 + x 462 + x 463 + x 464 + x 465 + x 466 = 1 (Square (4, 6) ) x 511 + x 512 + x 513 + x 514 + x 515 + x 516 = 1 x_{511} + x_{512} + x_{513} + x_{514} + x_{515} + x_{516} = 1 x 511 + x 512 + x 513 + x 514 + x 515 + x 516 = 1 (Square (5, 1) ) x 521 + x 522 + x 523 + x 524 + x 525 + x 526 = 1 x_{521} + x_{522} + x_{523} + x_{524} + x_{525} + x_{526} = 1 x 521 + x 522 + x 523 + x 524 + x 525 + x 526 = 1 (Square (5, 2) ) x 531 + x 532 + x 533 + x 534 + x 535 + x 536 = 1 x_{531} + x_{532} + x_{533} + x_{534} + x_{535} + x_{536} = 1 x 531 + x 532 + x 533 + x 534 + x 535 + x 536 = 1 (Square (5, 3) ) x 541 + x 542 + x 543 + x 544 + x 545 + x 546 = 1 x_{541} + x_{542} + x_{543} + x_{544} + x_{545} + x_{546} = 1 x 541 + x 542 + x 543 + x 544 + x 545 + x 546 = 1 (Square (5, 4) ) x 551 + x 552 + x 553 + x 554 + x 555 + x 556 = 1 x_{551} + x_{552} + x_{553} + x_{554} + x_{555} + x_{556} = 1 x 551 + x 552 + x 553 + x 554 + x 555 + x 556 = 1 (Square (5, 5) ) x 561 + x 562 + x 563 + x 564 + x 565 + x 566 = 1 x_{561} + x_{562} + x_{563} + x_{564} + x_{565} + x_{566} = 1 x 561 + x 562 + x 563 + x 564 + x 565 + x 566 = 1 (Square (5, 6) ) x 611 + x 612 + x 613 + x 614 + x 615 + x 616 = 1 x_{611} + x_{612} + x_{613} + x_{614} + x_{615} + x_{616} = 1 x 611 + x 612 + x 613 + x 614 + x 615 + x 616 = 1 (Square (6, 1) ) x 621 + x 622 + x 623 + x 624 + x 625 + x 626 = 1 x_{621} + x_{622} + x_{623} + x_{624} + x_{625} + x_{626} = 1 x 621 + x 622 + x 623 + x 624 + x 625 + x 626 = 1 (Square (6, 2) ) x 631 + x 632 + x 633 + x 634 + x 635 + x 636 = 1 x_{631} + x_{632} + x_{633} + x_{634} + x_{635} + x_{636} = 1 x 631 + x 632 + x 633 + x 634 + x 635 + x 636 = 1 (Square (6, 3) ) x 641 + x 642 + x 643 + x 644 + x 645 + x 646 = 1 x_{641} + x_{642} + x_{643} + x_{644} + x_{645} + x_{646} = 1 x 641 + x 642 + x 643 + x 644 + x 645 + x 646 = 1 (Square (6, 4) ) x 651 + x 652 + x 653 + x 654 + x 655 + x 656 = 1 x_{651} + x_{652} + x_{653} + x_{654} + x_{655} + x_{656} = 1 x 651 + x 652 + x 653 + x 654 + x 655 + x 656 = 1 (Square (6, 5) ) x 661 + x 662 + x 663 + x 664 + x 665 + x 666 = 1 x_{661} + x_{662} + x_{663} + x_{664} + x_{665} + x_{666} = 1 x 661 + x 662 + x 663 + x 664 + x 665 + x 666 = 1 (Square (6, 6) ) Already-Filled-Squares Constraints x 111 = 1 x_{111} = 1 x 111 = 1 (Square (1, 1) has Digit 1 ) x 222 = 1 x_{222} = 1 x 222 = 1 (Square (2, 2) has Digit 2 ) x 253 = 1 x_{253} = 1 x 253 = 1 (Square (2, 5) has Digit 3 ) x 346 = 1 x_{346} = 1 x 346 = 1 (Square (3, 4) has Digit 6 ) x 435 = 1 x_{435} = 1 x 435 = 1 (Square (4, 3) has Digit 5 ) x 444 = 1 x_{444} = 1 x 444 = 1 (Square (4, 4) has Digit 4 ) x 524 = 1 x_{524} = 1 x 524 = 1 (Square (5, 2) has Digit 4 ) x 555 = 1 x_{555} = 1 x 555 = 1 (Square (5, 5) has Digit 5 ) x 666 = 1 x_{666} = 1 x 666 = 1 (Square (6, 6) has Digit 6 ) Binary Constraints x 111 ∈ { 0 , 1 } x_{111} \in \B x 111 ∈ { 0 , 1 } x 112 ∈ { 0 , 1 } x_{112} \in \B x 112 ∈ { 0 , 1 } x 113 ∈ { 0 , 1 } x_{113} \in \B x 113 ∈ { 0 , 1 } x 114 ∈ { 0 , 1 } x_{114} \in \B x 114 ∈ { 0 , 1 } x 115 ∈ { 0 , 1 } x_{115} \in \B x 115 ∈ { 0 , 1 } x 116 ∈ { 0 , 1 } x_{116} \in \B x 116 ∈ { 0 , 1 } x 121 ∈ { 0 , 1 } x_{121} \in \B x 121 ∈ { 0 , 1 } x 122 ∈ { 0 , 1 } x_{122} \in \B x 122 ∈ { 0 , 1 } x 123 ∈ { 0 , 1 } x_{123} \in \B x 123 ∈ { 0 , 1 } x 124 ∈ { 0 , 1 } x_{124} \in \B x 124 ∈ { 0 , 1 } x 125 ∈ { 0 , 1 } x_{125} \in \B x 125 ∈ { 0 , 1 } x 126 ∈ { 0 , 1 } x_{126} \in \B x 126 ∈ { 0 , 1 } x 131 ∈ { 0 , 1 } x_{131} \in \B x 131 ∈ { 0 , 1 } x 132 ∈ { 0 , 1 } x_{132} \in \B x 132 ∈ { 0 , 1 } x 133 ∈ { 0 , 1 } x_{133} \in \B x 133 ∈ { 0 , 1 } x 134 ∈ { 0 , 1 } x_{134} \in \B x 134 ∈ { 0 , 1 } x 135 ∈ { 0 , 1 } x_{135} \in \B x 135 ∈ { 0 , 1 } x 136 ∈ { 0 , 1 } x_{136} \in \B x 136 ∈ { 0 , 1 } x 141 ∈ { 0 , 1 } x_{141} \in \B x 141 ∈ { 0 , 1 } x 142 ∈ { 0 , 1 } x_{142} \in \B x 142 ∈ { 0 , 1 } x 143 ∈ { 0 , 1 } x_{143} \in \B x 143 ∈ { 0 , 1 } x 144 ∈ { 0 , 1 } x_{144} \in \B x 144 ∈ { 0 , 1 } x 145 ∈ { 0 , 1 } x_{145} \in \B x 145 ∈ { 0 , 1 } x 146 ∈ { 0 , 1 } x_{146} \in \B x 146 ∈ { 0 , 1 } x 151 ∈ { 0 , 1 } x_{151} \in \B x 151 ∈ { 0 , 1 } x 152 ∈ { 0 , 1 } x_{152} \in \B x 152 ∈ { 0 , 1 } x 153 ∈ { 0 , 1 } x_{153} \in \B x 153 ∈ { 0 , 1 } x 154 ∈ { 0 , 1 } x_{154} \in \B x 154 ∈ { 0 , 1 } x 155 ∈ { 0 , 1 } x_{155} \in \B x 155 ∈ { 0 , 1 } x 156 ∈ { 0 , 1 } x_{156} \in \B x 156 ∈ { 0 , 1 } x 161 ∈ { 0 , 1 } x_{161} \in \B x 161 ∈ { 0 , 1 } x 162 ∈ { 0 , 1 } x_{162} \in \B x 162 ∈ { 0 , 1 } x 163 ∈ { 0 , 1 } x_{163} \in \B x 163 ∈ { 0 , 1 } x 164 ∈ { 0 , 1 } x_{164} \in \B x 164 ∈ { 0 , 1 } x 165 ∈ { 0 , 1 } x_{165} \in \B x 165 ∈ { 0 , 1 } x 166 ∈ { 0 , 1 } x_{166} \in \B x 166 ∈ { 0 , 1 } x 211 ∈ { 0 , 1 } x_{211} \in \B x 211 ∈ { 0 , 1 } x 212 ∈ { 0 , 1 } x_{212} \in \B x 212 ∈ { 0 , 1 } x 213 ∈ { 0 , 1 } x_{213} \in \B x 213 ∈ { 0 , 1 } x 214 ∈ { 0 , 1 } x_{214} \in \B x 214 ∈ { 0 , 1 } x 215 ∈ { 0 , 1 } x_{215} \in \B x 215 ∈ { 0 , 1 } x 216 ∈ { 0 , 1 } x_{216} \in \B x 216 ∈ { 0 , 1 } x 221 ∈ { 0 , 1 } x_{221} \in \B x 221 ∈ { 0 , 1 } x 222 ∈ { 0 , 1 } x_{222} \in \B x 222 ∈ { 0 , 1 } x 223 ∈ { 0 , 1 } x_{223} \in \B x 223 ∈ { 0 , 1 } x 224 ∈ { 0 , 1 } x_{224} \in \B x 224 ∈ { 0 , 1 } x 225 ∈ { 0 , 1 } x_{225} \in \B x 225 ∈ { 0 , 1 } x 226 ∈ { 0 , 1 } x_{226} \in \B x 226 ∈ { 0 , 1 } x 231 ∈ { 0 , 1 } x_{231} \in \B x 231 ∈ { 0 , 1 } x 232 ∈ { 0 , 1 } x_{232} \in \B x 232 ∈ { 0 , 1 } x 233 ∈ { 0 , 1 } x_{233} \in \B x 233 ∈ { 0 , 1 } x 234 ∈ { 0 , 1 } x_{234} \in \B x 234 ∈ { 0 , 1 } x 235 ∈ { 0 , 1 } x_{235} \in \B x 235 ∈ { 0 , 1 } x 236 ∈ { 0 , 1 } x_{236} \in \B x 236 ∈ { 0 , 1 } x 241 ∈ { 0 , 1 } x_{241} \in \B x 241 ∈ { 0 , 1 } x 242 ∈ { 0 , 1 } x_{242} \in \B x 242 ∈ { 0 , 1 } x 243 ∈ { 0 , 1 } x_{243} \in \B x 243 ∈ { 0 , 1 } x 244 ∈ { 0 , 1 } x_{244} \in \B x 244 ∈ { 0 , 1 } x 245 ∈ { 0 , 1 } x_{245} \in \B x 245 ∈ { 0 , 1 } x 246 ∈ { 0 , 1 } x_{246} \in \B x 246 ∈ { 0 , 1 } x 251 ∈ { 0 , 1 } x_{251} \in \B x 251 ∈ { 0 , 1 } x 252 ∈ { 0 , 1 } x_{252} \in \B x 252 ∈ { 0 , 1 } x 253 ∈ { 0 , 1 } x_{253} \in \B x 253 ∈ { 0 , 1 } x 254 ∈ { 0 , 1 } x_{254} \in \B x 254 ∈ { 0 , 1 } x 255 ∈ { 0 , 1 } x_{255} \in \B x 255 ∈ { 0 , 1 } x 256 ∈ { 0 , 1 } x_{256} \in \B x 256 ∈ { 0 , 1 } x 261 ∈ { 0 , 1 } x_{261} \in \B x 261 ∈ { 0 , 1 } x 262 ∈ { 0 , 1 } x_{262} \in \B x 262 ∈ { 0 , 1 } x 263 ∈ { 0 , 1 } x_{263} \in \B x 263 ∈ { 0 , 1 } x 264 ∈ { 0 , 1 } x_{264} \in \B x 264 ∈ { 0 , 1 } x 265 ∈ { 0 , 1 } x_{265} \in \B x 265 ∈ { 0 , 1 } x 266 ∈ { 0 , 1 } x_{266} \in \B x 266 ∈ { 0 , 1 } x 311 ∈ { 0 , 1 } x_{311} \in \B x 311 ∈ { 0 , 1 } x 312 ∈ { 0 , 1 } x_{312} \in \B x 312 ∈ { 0 , 1 } x 313 ∈ { 0 , 1 } x_{313} \in \B x 313 ∈ { 0 , 1 } x 314 ∈ { 0 , 1 } x_{314} \in \B x 314 ∈ { 0 , 1 } x 315 ∈ { 0 , 1 } x_{315} \in \B x 315 ∈ { 0 , 1 } x 316 ∈ { 0 , 1 } x_{316} \in \B x 316 ∈ { 0 , 1 } x 321 ∈ { 0 , 1 } x_{321} \in \B x 321 ∈ { 0 , 1 } x 322 ∈ { 0 , 1 } x_{322} \in \B x 322 ∈ { 0 , 1 } x 323 ∈ { 0 , 1 } x_{323} \in \B x 323 ∈ { 0 , 1 } x 324 ∈ { 0 , 1 } x_{324} \in \B x 324 ∈ { 0 , 1 } x 325 ∈ { 0 , 1 } x_{325} \in \B x 325 ∈ { 0 , 1 } x 326 ∈ { 0 , 1 } x_{326} \in \B x 326 ∈ { 0 , 1 } x 331 ∈ { 0 , 1 } x_{331} \in \B x 331 ∈ { 0 , 1 } x 332 ∈ { 0 , 1 } x_{332} \in \B x 332 ∈ { 0 , 1 } x 333 ∈ { 0 , 1 } x_{333} \in \B x 333 ∈ { 0 , 1 } x 334 ∈ { 0 , 1 } x_{334} \in \B x 334 ∈ { 0 , 1 } x 335 ∈ { 0 , 1 } x_{335} \in \B x 335 ∈ { 0 , 1 } x 336 ∈ { 0 , 1 } x_{336} \in \B x 336 ∈ { 0 , 1 } x 341 ∈ { 0 , 1 } x_{341} \in \B x 341 ∈ { 0 , 1 } x 342 ∈ { 0 , 1 } x_{342} \in \B x 342 ∈ { 0 , 1 } x 343 ∈ { 0 , 1 } x_{343} \in \B x 343 ∈ { 0 , 1 } x 344 ∈ { 0 , 1 } x_{344} \in \B x 344 ∈ { 0 , 1 } x 345 ∈ { 0 , 1 } x_{345} \in \B x 345 ∈ { 0 , 1 } x 346 ∈ { 0 , 1 } x_{346} \in \B x 346 ∈ { 0 , 1 } x 351 ∈ { 0 , 1 } x_{351} \in \B x 351 ∈ { 0 , 1 } x 352 ∈ { 0 , 1 } x_{352} \in \B x 352 ∈ { 0 , 1 } x 353 ∈ { 0 , 1 } x_{353} \in \B x 353 ∈ { 0 , 1 } x 354 ∈ { 0 , 1 } x_{354} \in \B x 354 ∈ { 0 , 1 } x 355 ∈ { 0 , 1 } x_{355} \in \B x 355 ∈ { 0 , 1 } x 356 ∈ { 0 , 1 } x_{356} \in \B x 356 ∈ { 0 , 1 } x 361 ∈ { 0 , 1 } x_{361} \in \B x 361 ∈ { 0 , 1 } x 362 ∈ { 0 , 1 } x_{362} \in \B x 362 ∈ { 0 , 1 } x 363 ∈ { 0 , 1 } x_{363} \in \B x 363 ∈ { 0 , 1 } x 364 ∈ { 0 , 1 } x_{364} \in \B x 364 ∈ { 0 , 1 } x 365 ∈ { 0 , 1 } x_{365} \in \B x 365 ∈ { 0 , 1 } x 366 ∈ { 0 , 1 } x_{366} \in \B x 366 ∈ { 0 , 1 } x 411 ∈ { 0 , 1 } x_{411} \in \B x 411 ∈ { 0 , 1 } x 412 ∈ { 0 , 1 } x_{412} \in \B x 412 ∈ { 0 , 1 } x 413 ∈ { 0 , 1 } x_{413} \in \B x 413 ∈ { 0 , 1 } x 414 ∈ { 0 , 1 } x_{414} \in \B x 414 ∈ { 0 , 1 } x 415 ∈ { 0 , 1 } x_{415} \in \B x 415 ∈ { 0 , 1 } x 416 ∈ { 0 , 1 } x_{416} \in \B x 416 ∈ { 0 , 1 } x 421 ∈ { 0 , 1 } x_{421} \in \B x 421 ∈ { 0 , 1 } x 422 ∈ { 0 , 1 } x_{422} \in \B x 422 ∈ { 0 , 1 } x 423 ∈ { 0 , 1 } x_{423} \in \B x 423 ∈ { 0 , 1 } x 424 ∈ { 0 , 1 } x_{424} \in \B x 424 ∈ { 0 , 1 } x 425 ∈ { 0 , 1 } x_{425} \in \B x 425 ∈ { 0 , 1 } x 426 ∈ { 0 , 1 } x_{426} \in \B x 426 ∈ { 0 , 1 } x 431 ∈ { 0 , 1 } x_{431} \in \B x 431 ∈ { 0 , 1 } x 432 ∈ { 0 , 1 } x_{432} \in \B x 432 ∈ { 0 , 1 } x 433 ∈ { 0 , 1 } x_{433} \in \B x 433 ∈ { 0 , 1 } x 434 ∈ { 0 , 1 } x_{434} \in \B x 434 ∈ { 0 , 1 } x 435 ∈ { 0 , 1 } x_{435} \in \B x 435 ∈ { 0 , 1 } x 436 ∈ { 0 , 1 } x_{436} \in \B x 436 ∈ { 0 , 1 } x 441 ∈ { 0 , 1 } x_{441} \in \B x 441 ∈ { 0 , 1 } x 442 ∈ { 0 , 1 } x_{442} \in \B x 442 ∈ { 0 , 1 } x 443 ∈ { 0 , 1 } x_{443} \in \B x 443 ∈ { 0 , 1 } x 444 ∈ { 0 , 1 } x_{444} \in \B x 444 ∈ { 0 , 1 } x 445 ∈ { 0 , 1 } x_{445} \in \B x 445 ∈ { 0 , 1 } x 446 ∈ { 0 , 1 } x_{446} \in \B x 446 ∈ { 0 , 1 } x 451 ∈ { 0 , 1 } x_{451} \in \B x 451 ∈ { 0 , 1 } x 452 ∈ { 0 , 1 } x_{452} \in \B x 452 ∈ { 0 , 1 } x 453 ∈ { 0 , 1 } x_{453} \in \B x 453 ∈ { 0 , 1 } x 454 ∈ { 0 , 1 } x_{454} \in \B x 454 ∈ { 0 , 1 } x 455 ∈ { 0 , 1 } x_{455} \in \B x 455 ∈ { 0 , 1 } x 456 ∈ { 0 , 1 } x_{456} \in \B x 456 ∈ { 0 , 1 } x 461 ∈ { 0 , 1 } x_{461} \in \B x 461 ∈ { 0 , 1 } x 462 ∈ { 0 , 1 } x_{462} \in \B x 462 ∈ { 0 , 1 } x 463 ∈ { 0 , 1 } x_{463} \in \B x 463 ∈ { 0 , 1 } x 464 ∈ { 0 , 1 } x_{464} \in \B x 464 ∈ { 0 , 1 } x 465 ∈ { 0 , 1 } x_{465} \in \B x 465 ∈ { 0 , 1 } x 466 ∈ { 0 , 1 } x_{466} \in \B x 466 ∈ { 0 , 1 } x 511 ∈ { 0 , 1 } x_{511} \in \B x 511 ∈ { 0 , 1 } x 512 ∈ { 0 , 1 } x_{512} \in \B x 512 ∈ { 0 , 1 } x 513 ∈ { 0 , 1 } x_{513} \in \B x 513 ∈ { 0 , 1 } x 514 ∈ { 0 , 1 } x_{514} \in \B x 514 ∈ { 0 , 1 } x 515 ∈ { 0 , 1 } x_{515} \in \B x 515 ∈ { 0 , 1 } x 516 ∈ { 0 , 1 } x_{516} \in \B x 516 ∈ { 0 , 1 } x 521 ∈ { 0 , 1 } x_{521} \in \B x 521 ∈ { 0 , 1 } x 522 ∈ { 0 , 1 } x_{522} \in \B x 522 ∈ { 0 , 1 } x 523 ∈ { 0 , 1 } x_{523} \in \B x 523 ∈ { 0 , 1 } x 524 ∈ { 0 , 1 } x_{524} \in \B x 524 ∈ { 0 , 1 } x 525 ∈ { 0 , 1 } x_{525} \in \B x 525 ∈ { 0 , 1 } x 526 ∈ { 0 , 1 } x_{526} \in \B x 526 ∈ { 0 , 1 } x 531 ∈ { 0 , 1 } x_{531} \in \B x 531 ∈ { 0 , 1 } x 532 ∈ { 0 , 1 } x_{532} \in \B x 532 ∈ { 0 , 1 } x 533 ∈ { 0 , 1 } x_{533} \in \B x 533 ∈ { 0 , 1 } x 534 ∈ { 0 , 1 } x_{534} \in \B x 534 ∈ { 0 , 1 } x 535 ∈ { 0 , 1 } x_{535} \in \B x 535 ∈ { 0 , 1 } x 536 ∈ { 0 , 1 } x_{536} \in \B x 536 ∈ { 0 , 1 } x 541 ∈ { 0 , 1 } x_{541} \in \B x 541 ∈ { 0 , 1 } x 542 ∈ { 0 , 1 } x_{542} \in \B x 542 ∈ { 0 , 1 } x 543 ∈ { 0 , 1 } x_{543} \in \B x 543 ∈ { 0 , 1 } x 544 ∈ { 0 , 1 } x_{544} \in \B x 544 ∈ { 0 , 1 } x 545 ∈ { 0 , 1 } x_{545} \in \B x 545 ∈ { 0 , 1 } x 546 ∈ { 0 , 1 } x_{546} \in \B x 546 ∈ { 0 , 1 } x 551 ∈ { 0 , 1 } x_{551} \in \B x 551 ∈ { 0 , 1 } x 552 ∈ { 0 , 1 } x_{552} \in \B x 552 ∈ { 0 , 1 } x 553 ∈ { 0 , 1 } x_{553} \in \B x 553 ∈ { 0 , 1 } x 554 ∈ { 0 , 1 } x_{554} \in \B x 554 ∈ { 0 , 1 } x 555 ∈ { 0 , 1 } x_{555} \in \B x 555 ∈ { 0 , 1 } x 556 ∈ { 0 , 1 } x_{556} \in \B x 556 ∈ { 0 , 1 } x 561 ∈ { 0 , 1 } x_{561} \in \B x 561 ∈ { 0 , 1 } x 562 ∈ { 0 , 1 } x_{562} \in \B x 562 ∈ { 0 , 1 } x 563 ∈ { 0 , 1 } x_{563} \in \B x 563 ∈ { 0 , 1 } x 564 ∈ { 0 , 1 } x_{564} \in \B x 564 ∈ { 0 , 1 } x 565 ∈ { 0 , 1 } x_{565} \in \B x 565 ∈ { 0 , 1 } x 566 ∈ { 0 , 1 } x_{566} \in \B x 566 ∈ { 0 , 1 } x 611 ∈ { 0 , 1 } x_{611} \in \B x 611 ∈ { 0 , 1 } x 612 ∈ { 0 , 1 } x_{612} \in \B x 612 ∈ { 0 , 1 } x 613 ∈ { 0 , 1 } x_{613} \in \B x 613 ∈ { 0 , 1 } x 614 ∈ { 0 , 1 } x_{614} \in \B x 614 ∈ { 0 , 1 } x 615 ∈ { 0 , 1 } x_{615} \in \B x 615 ∈ { 0 , 1 } x 616 ∈ { 0 , 1 } x_{616} \in \B x 616 ∈ { 0 , 1 } x 621 ∈ { 0 , 1 } x_{621} \in \B x 621 ∈ { 0 , 1 } x 622 ∈ { 0 , 1 } x_{622} \in \B x 622 ∈ { 0 , 1 } x 623 ∈ { 0 , 1 } x_{623} \in \B x 623 ∈ { 0 , 1 } x 624 ∈ { 0 , 1 } x_{624} \in \B x 624 ∈ { 0 , 1 } x 625 ∈ { 0 , 1 } x_{625} \in \B x 625 ∈ { 0 , 1 } x 626 ∈ { 0 , 1 } x_{626} \in \B x 626 ∈ { 0 , 1 } x 631 ∈ { 0 , 1 } x_{631} \in \B x 631 ∈ { 0 , 1 } x 632 ∈ { 0 , 1 } x_{632} \in \B x 632 ∈ { 0 , 1 } x 633 ∈ { 0 , 1 } x_{633} \in \B x 633 ∈ { 0 , 1 } x 634 ∈ { 0 , 1 } x_{634} \in \B x 634 ∈ { 0 , 1 } x 635 ∈ { 0 , 1 } x_{635} \in \B x 635 ∈ { 0 , 1 } x 636 ∈ { 0 , 1 } x_{636} \in \B x 636 ∈ { 0 , 1 } x 641 ∈ { 0 , 1 } x_{641} \in \B x 641 ∈ { 0 , 1 } x 642 ∈ { 0 , 1 } x_{642} \in \B x 642 ∈ { 0 , 1 } x 643 ∈ { 0 , 1 } x_{643} \in \B x 643 ∈ { 0 , 1 } x 644 ∈ { 0 , 1 } x_{644} \in \B x 644 ∈ { 0 , 1 } x 645 ∈ { 0 , 1 } x_{645} \in \B x 645 ∈ { 0 , 1 } x 646 ∈ { 0 , 1 } x_{646} \in \B x 646 ∈ { 0 , 1 } x 651 ∈ { 0 , 1 } x_{651} \in \B x 651 ∈ { 0 , 1 } x 652 ∈ { 0 , 1 } x_{652} \in \B x 652 ∈ { 0 , 1 } x 653 ∈ { 0 , 1 } x_{653} \in \B x 653 ∈ { 0 , 1 } x 654 ∈ { 0 , 1 } x_{654} \in \B x 654 ∈ { 0 , 1 } x 655 ∈ { 0 , 1 } x_{655} \in \B x 655 ∈ { 0 , 1 } x 656 ∈ { 0 , 1 } x_{656} \in \B x 656 ∈ { 0 , 1 } x 661 ∈ { 0 , 1 } x_{661} \in \B x 661 ∈ { 0 , 1 } x 662 ∈ { 0 , 1 } x_{662} \in \B x 662 ∈ { 0 , 1 } x 663 ∈ { 0 , 1 } x_{663} \in \B x 663 ∈ { 0 , 1 } x 664 ∈ { 0 , 1 } x_{664} \in \B x 664 ∈ { 0 , 1 } x 665 ∈ { 0 , 1 } x_{665} \in \B x 665 ∈ { 0 , 1 } x 666 ∈ { 0 , 1 } x_{666} \in \B x 666 ∈ { 0 , 1 } Solving Mini Sudoku ¶ The linkedin-games library counts on MiniSudoku class, that is a child class of Sudoku class, which implements the general Sudoku game and its constraints, as well as methods to solve it and visualize its solution.
To instantiate the game, it is necessary to provide one set of inputs regarding the game in question:
filled_squaresA dictionary of square: value, where value is the digit of the filled square. With MiniSudoku class, there’s no need to inform its size or its grid block dimensions, since it’s assumed that this type of game will always be a 6 × \times × 6 board with 2 × \times × 3 blocks, as implemented in its __init__ method.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from ..base.sudoku._base import BaseSudoku
class MiniSudoku(BaseSudoku):
"""
The [LinkedIn Mini Sudoku](https://www.linkedin.com/games/mini-sudoku/) game.
A 6x6 Sudoku board with 2x3 grid blocks.
Objective:
Fill all the empty spaces in the game grid with digits from 1 to 6.
Rules:
Each row, column, and 2x3 block must be filled with a digit from 1 to 6,
without repetition in each row, column, or block.
"""
def __init__(self, filled_squares: dict[tuple[int, int], int]) -> None:
"""
Args:
filled_squares: Starting filled squares as a dictionary of `(row, column): digit` items.
"""
super().__init__(size=6, block_dims=(2,3), filled_squares=filled_squares)
Program 1: Definition of MiniSudoku class
from linkedin_games import MiniSudoku
filled_squares = {
(1,1): 1, (2,2): 2, (2,5): 3, (3,3): 3, (3,4): 6,
(4,3): 5, (4,4): 4, (5,2): 4, (5,5): 5, (6,6): 6
}
mini_sudoku = MiniSudoku(filled_squares)
The Sudoku class features the model attribute, which implements the SudokuModel object to structure the Linear Optimization logic behind the Mini Sudoku’s game.
With the model built, the public method solve() calls the restricted method _set_solution() to save the solution to _board property, which can be accessed by the public solution attribute.
With the solution obtained, the method show() plots the solved Mini Sudoku’s board.
So to solve the game and display its results, just call the public methods solve() and show(), at this order.
mini_sudoku.solve()
mini_sudoku.show()References ¶ TAKANO, Kevin; DE FREITAS, Rosiane and DE SÁ, Vinícius Gusmão. O jogo de lógica Sudoku: modelagem teórica, NP-Completude e estratégias algorítmicas exatas e heurísticas. In: CONCURSO DE TRABALHOS DE INICIAÇÃO CIENTÍFICA DA SBC (CTIC-SBC), 34., 2015, Recife. Anais […]. Porto Alegre: Sociedade Brasileira de Computação, 2015. p. 71–80.
Sudoku. Wikipedia . May 7th , 2025. Accessed on October 10th , 2025.