Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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