Subversion Repositories programming

Rev

Rev 408 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/usr/bin/env python

__author__    = "Ira W. Snyder (devel@irasnyder.com)"
__copyright__ = "Copyright (c) 2006, Ira W. Snyder (devel@irasnyder.com)"
__license__   = "GNU GPL v2 (or, at your option, any later version)"

import time
from PyCompat import *
from SudokuPuzzle import SudokuPuzzle, solve
from Menu import Menu

def input_puzzle (puzzle):
        print 'Enter a row at a time. Use \'e\' for empty squares.'
        for i in xrange(9):
                e = raw_input('line %d: ' % i)
                temp = e.split ()

                count = 0
                for j in temp:
                        try:
                                puzzle[i,count].set_value (int(j))
                        except:
                                pass

                        count += 1

def input_and_solve_puzzle ():
        puzzle = SudokuPuzzle ()

        # Input the Puzzle
        input_puzzle (puzzle)
        print

        # Solve the Puzzle
        tstart = time.time ()
        solution = solve (puzzle)
        tend = time.time ()

        # Print the Solution
        print '\nThe solution is:'
        print str(solution)
        print
        print 'Took %s seconds to solve' % str(tend - tstart)
        print



def main ():
        m = Menu (autorun=True)
        m.add_entry ('1', 'Enter & Solve Sudoku Puzzle', input_and_solve_puzzle)
        m.add_entry ('2', 'Quit', sys.exit)

        # Run the menu forever, until it auto-exits
        while True:
                m.run_menu ()

if __name__ == '__main__':
        main ()