I have to update a nested list sudoku with grids and borders. My output is not printing as intended and I am not sure how to fix it. This is my code with the test input cases and intended output vs output right now.
The code below has the following:
- There are three nested sudoku lists that I need to update with grid lines and borders.
- Next is my code and the intended output for the three sudoku boards.
- Lastly, the link has my output right now
This is the description:
Prints a given board to the console in a way that aligns the content of columns and makes the subgrids visible.
Input : a Sudoku board (board) of size 4x4, 9x9, or 16x16
Effect: prints the board to the console
small = [[0, 0, 1, 0],
[4, 0, 0, 0],
[0, 0, 0, 2],
[0, 3, 0, 0]]
big = [[0, 0, 0, 0, 0, 0, 0, 0, 0],
[4, 0, 0, 7, 8, 9, 0, 0, 0],
[7, 8, 0, 0, 0, 0, 0, 5, 6],
[0, 2, 0, 3, 6, 0, 8, 0, 0],
[0, 0, 5, 0, 0, 7, 0, 1, 0],
[8, 0, 0, 2, 0, 0, 0, 0, 5],
[0, 0, 1, 6, 4, 0, 9, 7, 0],
[0, 0, 0, 9, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 3, 0, 0, 0, 2]]
giant = [[0, 5, 0, 0, 0, 4, 0, 8, 0, 6, 0, 0, 0, 0, 9, 16],
[1, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 7, 15, 0, 8, 0],
[13, 0, 0, 0, 0, 7, 3, 0, 0, 0, 0, 9, 5, 10, 0, 0],
[0, 11, 12, 15, 10, 0, 0, 0, 0, 0, 5, 0, 3, 4, 0, 13],
[15, 0, 1, 3, 0, 0, 7, 2, 0, 0, 0, 0, 0, 5, 0, 0],
[0, 0, 0, 12, 0, 3, 0, 5, 0, 11, 0, 14, 0, 0, 0, 9],
[4, 7, 0, 0, 0, 0, 0, 0, 12, 0, 15, 16, 0, 0, 0, 0],
[0, 0, 0, 0, 14, 0, 15, 0, 6, 9, 0, 0, 0, 0, 12, 0],
[3, 0, 15, 4, 0, 13, 14, 0, 0, 0, 0, 1, 0, 0, 7, 8],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0],
[11, 0, 16, 10, 0, 0, 0, 0, 0, 7, 0, 0, 0, 3, 5, 0],
[0, 0, 13, 0, 0, 0, 0, 0, 14, 0, 15, 16, 0, 9, 0, 1],
[9, 0, 2, 0, 0, 14, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0],
[0, 14, 0, 0, 0, 0, 0, 10, 9, 0, 3, 0, 0, 0, 1, 7],
[8, 0, 0, 0, 16, 0, 0, 1, 2, 14, 11, 4, 0, 0, 0, 3],
[0, 0, 0, 1, 0, 0, 5, 0, 0, 16, 0, 6, 0, 12, 0, 0]]
import math
def print_board(board):
board_size = len(board)
l = int(board_size + math.sqrt(board_size) + 1)
section = int(math.sqrt(board_size))
border = 0
i_index = 0
for i in range(0, l):
if (i == border):
print('-' * l)
border = border + section + 1
else:
inner_border = 0
j_index = 0
for j in range(0, l):
if (j == inner_border):
print('|', end='')
inner_border = inner_border + section + 1
else:
if (board[i_index][j_index] == 0):
print(' ', end='')
else:
if (board[i_index][j_index] < 10):
print(board[i_index][j_index], end='')
if (board[i_index][j_index] == 10):
print('A', end='')
if (board[i_index][j_index] == 11):
print('B', end='')
if (board[i_index][j_index] == 12):
print('C', end='')
if (board[i_index][j_index] == 13):
print('D', end='')
if (board[i_index][j_index] == 14):
print('E', end='')
if (board[i_index][j_index] == 15):
print('F', end='')
if (board[i_index][j_index] == 16):
print('G', end='')
j_index = j_index + 1
i_index = i_index + 1
print(print_board(small))
print(print_board(big))
print(print_board(giant))
Intended output:
-------
| |1 |
|4 | |
-------
| | 2|
| 3| |
-------
>>> print_board(big)
-------------
| | | |
|4 |789| |
|78 | | 56|
-------------
| 2 |36 |8 |
| 5| 7| 1 |
|8 |2 | 5|
-------------
| 1|64 |97 |
| |9 | |
| | 3 | 2|
-------------
>>> print_board(giant2)
---------------------
| 5 | 4 8| 6 | 9G|
|1 | D|4 7|F 8 |
|D | 73 | 9|5A |
| BCF|A | 5 |34 D|
---------------------
|F 13| 72| | 5 |
| C| 3 5| B E| 9|
|47 | |C FG| |
| |E F |69 | C |
---------------------
|3 F4| DE | 1| 78|
| | | 9A| |
|B GA| | 7 | 35 |
| D | |E GF| 9 1|
---------------------
|9 2 | E 4|8 | |
| E | A|9 3 | 17|
|8 |G 1|2EB4| 3|
| 1| 5 | G 6| C |
---------------------
My output: