def output(sudoku: "sudoku.NativeSudoku", printer_name: str, separator: str, output: "io.BufferWriter", args: "Namespace"): """Outputs the sudoku as printer wants it""" printer = Register.get_printer(printer_name) if printer is None: raise UIError("Invalid printer name {}".format(printer_name)) printer(sudoku)
def solve( sudoku: "sudoku.NativeSudoku", solver_name: str, args: "Namespace") -> "sudoku.NativeSudoku|[sudoku.NativeSudoku, ...]": """Solves NativeSudoku with solver determined by solver""" solver = Register.get_solver(solver_name) if solver is None: raise UIError("Invalid solver name {}".format(solver_name)) try: return solver(sudoku) except SolvingError as error: print("Solver returned error '{}'".format(error)) if args.verbosity: print("Incomplete sudoku: ", end="") Register.get_printer('list')(error.sudoku) if args.exceptions: raise
def solve( sudoku:"sudoku.NativeSudoku", solver_name:str, args:"Namespace" ) -> "sudoku.NativeSudoku|[sudoku.NativeSudoku, ...]": """Solves NativeSudoku with solver determined by solver""" solver = Register.get_solver(solver_name) if solver is None: raise UIError("Invalid solver name {}".format(solver_name)) try: return solver(sudoku) except SolvingError as error: print("Solver returned error '{}'".format(error)) if args.verbosity: print("Incomplete sudoku: ", end="") Register.get_printer('list')(error.sudoku) if args.exceptions: raise
def output( sudoku:"sudoku.NativeSudoku", printer_name:str, separator:str, output:"io.BufferWriter", args:"Namespace" ): """Outputs the sudoku as printer wants it""" printer = Register.get_printer(printer_name) if printer is None: raise UIError("Invalid printer name {}".format(printer_name)) printer(sudoku)
def parse(sudoku: str, parser_name: str, args: "Namespace") -> "sudoku.NativeSudoku": """Calls correct parser for sudoku string and returns result""" parser = Register.get_parser(parser_name) if parser is None: raise UIError("Invalid parser name {}".format(parser_name)) try: return parser(sudoku) except ParsingError as error: if args.verbosity: print("Parser returned error '{}' with value '{}'".format( error, error.value)) else: print("Parser returned error '{}'".format(error)) if args.exceptions: raise
def parse( sudoku:str, parser_name:str, args:"Namespace" ) -> "sudoku.NativeSudoku": """Calls correct parser for sudoku string and returns result""" parser = Register.get_parser(parser_name) if parser is None: raise UIError("Invalid parser name {}".format(parser_name)) try: return parser(sudoku) except ParsingError as error: if args.verbosity: print("Parser returned error '{}' with value '{}'".format( error, error.value )) else: print("Parser returned error '{}'".format(error)) if args.exceptions: raise
def parse_arguments(*args) -> argparse.ArgumentParser: parser = argparse.ArgumentParser(description="Sudoku solver") parser.add_argument('-v', '--verbose', '--verbosity', action='store_true', default=False, dest='verbosity', help="Print verbose output") parser.add_argument('-x', '--raise-exceptions', action='store_true', default=False, dest='exceptions', help="Raise Python exceptions") parser.add_argument('-r', '--parser', choices=Register.get_parsers(), default='list', help="Parser to use (default: %(default)s)") parser.add_argument('-e', '--separator', help='Separator to be used when parsing sudoku') parser.add_argument('-s', '--solver', nargs=1, default='simple', choices=Register.get_solvers(), help="Solver to use (default: %(default)s)") parser.add_argument('-p', '--print', choices=Register.get_printers(), default='none', dest='printer', help="Printing style (default: %(default)s)") parser.add_argument( '-f', '--file', action='append', dest='files', metavar='FILE', type=argparse.FileType(), help='File containing a sudoku. Use - to read from stdin') parser.add_argument('-i', '--input', action='append', dest='sudokus', metavar='SUDOKU', help="Give sudoku as an argument") parser.add_argument( '-o', '--output', default='-', type=argparse.FileType('w'), help="Output file. Use - to output to stdout. (default: %(default)s)") parser.add_argument('-1', action='store_true', dest='single', help="Solve and print only one solution") if args: args = parser.parse_args(args) else: args = parser.parse_args() if isinstance(args.solver, list): # A little fix args.solver = args.solver[0] return args
def parse_arguments(*args) -> argparse.ArgumentParser: parser = argparse.ArgumentParser(description="Sudoku solver") parser.add_argument( '-v', '--verbose', '--verbosity', action='store_true', default=False, dest='verbosity', help="Print verbose output" ) parser.add_argument( '-x', '--raise-exceptions', action='store_true', default=False, dest='exceptions', help="Raise Python exceptions" ) parser.add_argument( '-r', '--parser', choices=Register.get_parsers(), default='list', help="Parser to use (default: %(default)s)" ) parser.add_argument( '-e', '--separator', help='Separator to be used when parsing sudoku' ) parser.add_argument( '-s', '--solver', nargs=1, default='simple', choices=Register.get_solvers(), help="Solver to use (default: %(default)s)" ) parser.add_argument( '-p', '--print', choices=Register.get_printers(), default='none', dest='printer', help="Printing style (default: %(default)s)" ) parser.add_argument( '-f', '--file', action='append', dest='files', metavar='FILE', type=argparse.FileType(), help='File containing a sudoku. Use - to read from stdin' ) parser.add_argument( '-i', '--input', action='append', dest='sudokus', metavar='SUDOKU', help="Give sudoku as an argument" ) parser.add_argument( '-o', '--output', default='-', type=argparse.FileType('w'), help="Output file. Use - to output to stdout. (default: %(default)s)" ) parser.add_argument( '-1', action='store_true', dest='single', help="Solve and print only one solution" ) if args: args = parser.parse_args(args) else: args = parser.parse_args() if isinstance(args.solver, list): # A little fix args.solver = args.solver[0] return args