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