add file to run sudokus from keggle dataset

This commit is contained in:
Joseph Hopfmüller
2023-02-10 13:24:03 +01:00
parent 26cc85b4a4
commit da7d4a88f4
2 changed files with 41 additions and 3 deletions

38
solve_many.py Normal file
View File

@@ -0,0 +1,38 @@
import pandas as pd
import numpy as np
from random import randrange
from sudoku import sudoku_grid
def load_quiz(df, row):
string = df.loc[row]['quizzes']
quiz = list(string)
quiz = [int(x) for x in quiz]
quiz = np.reshape(quiz, (9, 9)).tolist()
return (quiz, string)
def sol_to_string(solution):
string = np.reshape(solution, [1,81]).tolist()
string = [str(x) for x in string[0]]
string = ''.join(string)
return string
df = pd.read_csv('sudoku.csv')
with open('solved.csv', 'a+') as f:
f.write('quizzes,solutions\n')
for row in range(len(df)):
# for row in range(100):
(quiz, string) = load_quiz(df, row)
f.write(f'{string},')
sudoku = sudoku_grid(quiz)
# print(sudoku)
while not sudoku.is_solved():
sudoku.iterate()
# print(f'Iteration {sudoku.iteration}')
# print(sudoku)
solution = sudoku.cleanup()
string = sol_to_string(solution)
f.write(f'{string}\n')
print(f'Sudoku {row} solved!')
print(sudoku)
del sudoku

View File

@@ -1,7 +1,5 @@
from copy import deepcopy
from random import choice, randrange
import pandas as pd
import numpy as np
from random import choice
import sys
class cell():
@@ -188,9 +186,11 @@ class sudoku_grid():
current_cell.collapse(current_set)
def cleanup(self):
retval = [[self.grid[i][j].solution for j in range(9)] for i in range(9)]
for i in range(9):
for j in range(9):
self.grid[i][j].cleanup()
return retval
def check_branching(self):
if self.invalid_states():