1
0
Fork 0
adventofcode/2017/16/folk.py

35 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
import sys
instructions = sys.stdin.readline().strip().split(",")
for i in range(len(instructions)):
if instructions[i][0] == 's':
instructions[i] = ['s', int(instructions[i][1:])]
elif instructions[i][0] == 'x':
instructions[i] = ['x'] + [int(i) for i in instructions[i][1:].split("/")]
elif instructions[i][0] == 'p':
instructions[i] = ['p'] + instructions[i][1:].split("/")
def dance(programs):
for ins in instructions:
if ins[0] == 's':
movement = len(programs) - ins[1]
programs = programs[movement:] + programs[:movement]
elif ins[0] == 'x':
programs[ins[1]], programs[ins[2]] = programs[ins[2]], programs[ins[1]]
elif ins[0] == 'p':
pos1, pos2 = programs.index(ins[1]), programs.index(ins[2])
programs[pos1], programs[pos2] = programs[pos2], programs[pos1]
return programs
pr = list("abcdefghijklmnop")
pr = dance(pr)
print("Part 1:", ''.join(pr))
i, seen = 1, [pr]
for i in range(1000000000 - 1):
pr = dance(pr)
if ''.join(pr) in seen:
print('Part 2:', seen[1000000000 % i - 1])
break
seen.append(''.join(pr))