Esempio n. 1
0
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))
Esempio n. 2
0
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],
        ])
    ))