/ 2.py
2.py
1 #!/usr/bin/python3 2 3 # run it as 4 # ./2.py [ --one | --two ] < inputs/2 5 6 import sys 7 8 # fucking ugly 9 # should have normalized input data 10 11 CAN_DESTROY = {'A': 'Z', 12 'B': 'X', 13 'C': 'Y', 14 'X': 'C', 15 'Y': 'A', 16 'Z': 'B'} 17 REVERSED_DESTROY = {value: key for key, value in CAN_DESTROY.items()} 18 VALUE = {'X': 1, 19 'Y': 2, 20 'Z': 3, 21 'A': 1, 22 'B': 2, 23 'C': 3} 24 25 def compare(opponent, me): 26 if CAN_DESTROY[me] == opponent: 27 return 6 28 elif CAN_DESTROY[opponent] == me: 29 return 0 30 else: 31 return 3 32 33 def calc_round(opponent, desired_outcome): 34 if desired_outcome == 'X': 35 # do lose. 36 me = [x for x in ('X', 'Y', 'Z') if x != REVERSED_DESTROY[opponent] and 37 VALUE[x] != VALUE[opponent]][0] 38 return VALUE[me] 39 elif desired_outcome == 'Y': 40 # a draw 41 return VALUE[opponent] + 3 42 elif desired_outcome == 'Z': 43 # do win 44 me = REVERSED_DESTROY[opponent] 45 return VALUE[me] + 6 46 47 if '--one' in sys.argv: 48 print(sum([compare(*line.split()) + VALUE[line.split()[1]] for line in sys.stdin])) 49 elif '--two' in sys.argv: 50 print(sum([calc_round(*line.split()) for line in sys.stdin]))