1
0
Fork 0

Puzzle du 16 décembre 2017

This commit is contained in:
Lucidiot 2017-12-16 11:35:08 +01:00
parent f8d1af84aa
commit f51f9725ef
No known key found for this signature in database
GPG Key ID: 63BD9482C29D0F64
1 changed files with 34 additions and 0 deletions

34
2017/16/folk.py Normal file
View File

@ -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))