add file to run sudokus from keggle dataset
This commit is contained in:
38
solve_many.py
Normal file
38
solve_many.py
Normal 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
|
||||||
@@ -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():
|
||||||
|
|||||||
Reference in New Issue
Block a user