41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import pandas as pd
|
|
import numpy as np
|
|
from random import randrange
|
|
import os
|
|
import time
|
|
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')
|
|
# number_of_runs = len(df)
|
|
number_of_runs = 10000
|
|
|
|
with open('solved.csv', 'w') as f:
|
|
f.write('quizzes,solutions\n')
|
|
start = time.time()
|
|
for row in range(number_of_runs):
|
|
# for row in range(100):
|
|
(quiz, string) = load_quiz(df, row)
|
|
f.write(f'{string},')
|
|
sudoku = sudoku_grid(quiz)
|
|
while not sudoku.is_solved():
|
|
sudoku.iterate()
|
|
solution = sudoku.cleanup()
|
|
string = sol_to_string(solution)
|
|
f.write(f'{string}\n')
|
|
print(f'Sudoku {row} solved!')
|
|
del sudoku
|
|
stop = time.time()
|
|
print(f'Solved {number_of_runs} sudokus in {stop-start:.2f}s ({number_of_runs/(stop-start):2f} sudokus/s)') |