Puzzle du 16 décembre 2017
This commit is contained in:
parent
f8d1af84aa
commit
f51f9725ef
|
@ -0,0 +1,34 @@
|
|||
#!/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))
|
Loading…
Reference in New Issue