def p3each(argsFnOrder): args, fn, order = argsFnOrder order = csp.noReorder if order == csp.noReorder.__name__ else csp.mrv outFile = os.path.join( args.outdir, 'p3_{}_{}.csv'.format( os.path.splitext(fn)[0], order.__name__, ), ) if os.path.isfile(outFile): return print('{} Starting: {} {}'.format( dt.datetime.now(), os.path.splitext(fn)[0], order.__name__)) domain = Sudoku.domain(os.path.join(args.puzzledir, fn)) start = dt.datetime.now() s = Sudoku(domain) sol, guessCnt = csp.simpleBacktrackSearch( s, selectUnassignedVariableIndex=order, ) compTime = (dt.datetime.now()-start).total_seconds() with open(outFile, 'w') as f: f.write('puzzle, order, guessCnt, compTime, solution\n') f.write('"{}","{}","{}","{}","{}"'.format( os.path.splitext(fn)[0], order.__name__, guessCnt, compTime, sol.values.tolist(), )) print('{} Finished: {} {} {} {}'.format( dt.datetime.now(), os.path.splitext(fn)[0], order.__name__, guessCnt, compTime))
def p2(args): domain = Sudoku.domain('../data/sudoku_example/sudoku_ex.txt') s = Sudoku(domain) sol = csp.simpleBacktrackSearch( s, selectUnassignedVariableIndex=csp.noReorder, ) print(sol) assert np.all(np.equal( sol[0].values, np.array([ [4, 3, 5, 2, 6, 9, 7, 8, 1], [6, 8, 2, 5, 7, 1, 4, 9, 3], [1, 9, 7, 8, 3, 4, 5, 6, 2], [8, 2, 6, 1, 9, 5, 3, 4, 7], [3, 7, 4, 6, 8, 2, 9, 1, 5], [9, 5, 1, 7, 4, 3, 6, 2, 8], [5, 1, 9, 3, 2, 6, 8, 7, 4], [2, 4, 8, 9, 5, 7, 1, 3, 6], [7, 6, 3, 4, 1, 8, 2, 5, 9], ]) ))