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