Files
sudoku_collapse/solve_many.py
Joseph Hopfmüller cd1805302c add timing
2023-02-10 13:40:03 +01:00

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)')