35 lines
1.2 KiB
Python
Executable File
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))
|