From 6a5e13e345454af84b4ab92b870ab3c542914d4d Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Thu, 29 Aug 2013 22:31:49 -0700 Subject: [PATCH] Add quick routines for parsing the puzzles in puzzles/ --- puzzles.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 puzzles.py diff --git a/puzzles.py b/puzzles.py new file mode 100644 index 0000000..62f5199 --- /dev/null +++ b/puzzles.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 +# Eryn Wells + +''' +Parser for puzzles in the ./puzzles directory. +''' + +import sudoku + + +euler = [] +norvig = [] + + +def parse_euler(filename='./puzzles/euler.txt'): + with open(filename, 'r') as f: + puzzle_lines = f.readlines() + + for puzzle in puzzle_lines: + # Chop the newline + if puzzle[-1] == '\n': + puzzle = puzzle[:-1] + print('Parsing puzzle: {}'.format(puzzle)) + if len(puzzle) != 81: + continue + kwargs = {} + for idx in range(len(puzzle)): + sq = puzzle[idx] + if sq not in '1234567890.': + continue + sq_int = 0 if sq == '.' else int(sq) + x, y = int(idx % 9), int(idx / 9) + if sq_int != 0: + kwargs[sudoku.Board.xy_kwargs_key(x, y)] = sq_int + euler.append(sudoku.Board(**kwargs)) + + +def parse_norvig(filename='./puzzles/norvig.txt'): + with open(filename, 'r') as f: + puzzle_lines = f.readlines() + + for puzzle in puzzle_lines: + # Chop the newline + if puzzle[-1] == '\n': + puzzle = puzzle[:-1] + print('Parsing puzzle: {}'.format(puzzle)) + if len(puzzle) != 81: + continue + kwargs = {} + for idx in range(len(puzzle)): + sq = puzzle[idx] + if sq not in '1234567890.': + continue + sq_int = 0 if sq == '.' else int(sq) + x, y = int(idx % 9), int(idx / 9) + if sq_int != 0: + kwargs[sudoku.Board.xy_kwargs_key(x, y)] = sq_int + norvig.append(sudoku.Board(**kwargs))