#!/usr/bin/env python import re import argparse KEYPAD = { 1: {'U': 0, 'D': 4, 'L': 0, 'R': 2 }, 2: {'U': 0, 'D': 5, 'L': 1, 'R': 3 }, 3: {'U': 0, 'D': 6, 'L': 2, 'R': 0 }, 4: {'U': 1, 'D': 7, 'L': 0, 'R': 5 }, 5: {'U': 2, 'D': 8, 'L': 4, 'R': 6 }, 6: {'U': 3, 'D': 9, 'L': 5, 'R': 0 }, 7: {'U': 4, 'D': 0, 'L': 0, 'R': 8 }, 8: {'U': 5, 'D': 0, 'L': 7, 'R': 9 }, 9: {'U': 6, 'D': 0, 'L': 8, 'R': 0 } } 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 not KEY_NEW: continue KEY = KEY_NEW CODE = "{}{:d}".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)