#!/usr/bin/env python import re import argparse KEYPAD = { '1': {'U': None, 'D': '3', 'L': None, 'R': None }, '2': {'U': None, 'D': '6', 'L': None, 'R': '3' }, '3': {'U': '1', 'D': '7', 'L': '2', 'R': '4' }, '4': {'U': None, 'D': '8', 'L': '3', 'R': None }, '5': {'U': None, 'D': None, 'L': None, 'R': '6' }, '6': {'U': '2', 'D': 'A', 'L': '5', 'R': '7' }, '7': {'U': '3', 'D': 'B', 'L': '6', 'R': '8' }, '8': {'U': '4', 'D': 'C', 'L': '7', 'R': '9' }, '9': {'U': None, 'D': None, 'L': '8', 'R': None }, 'A': {'U': '6', 'D': None, 'L': None, 'R': 'B' }, 'B': {'U': '7', 'D': 'D', 'L': 'A', 'R': 'C' }, 'C': {'U': '8', 'D': None, 'L': 'B', 'R': None }, 'D': {'U': 'B', 'D': None, 'L': None, 'R': None } } def load_file(filename): with open(filename) as f: data = f.readlines() return data def main(args): KEY = '5' CODE = "" for LINE in load_file(args.input): LINE = LINE.strip() for STEP in LINE: KEY_NEW = KEYPAD[KEY][STEP] if KEY_NEW is None: continue KEY = KEY_NEW CODE = "{}{}".format(CODE, KEY) print(CODE) if __name__ == "__main__": parser = argparse.ArgumentParser(description='AdventOfCode 2016 Day 01') parser.add_argument('--input', '-i', action='store', required=True, help='input file') args = parser.parse_args() main(args)