02_keypad.py 827 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/env python3
  2. import sys
  3. def get_code(instructions, trans):
  4. cur = '5'
  5. code = ''
  6. for line in instructions:
  7. for c in line.rstrip():
  8. cur = trans[c].get(cur, cur)
  9. code += cur
  10. return code
  11. def maketrans(short):
  12. return {x[0]: x[1] for x in short.split()}
  13. trans_square = {
  14. 'U': maketrans('41 52 63 74 85 96'),
  15. 'D': maketrans('14 25 36 47 58 69'),
  16. 'L': maketrans('21 32 54 65 87 98'),
  17. 'R': maketrans('12 23 45 56 78 89')
  18. }
  19. trans_diamond = {
  20. 'U': maketrans('31 62 73 84 A6 B7 C8 DB'),
  21. 'D': maketrans('13 26 37 48 6A 7B 8C BD'),
  22. 'L': maketrans('32 43 65 76 87 98 BA CB'),
  23. 'R': maketrans('23 34 56 67 78 89 AB BC')
  24. }
  25. instructions = sys.stdin.readlines()
  26. print(get_code(instructions, trans_square))
  27. print(get_code(instructions, trans_diamond))