Create day23.py
This commit is contained in:
parent
df3cd1967a
commit
f238c38fbe
35
2020/Python/day23.py
Normal file
35
2020/Python/day23.py
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
|
||||||
|
def move_cups(cups: list[int]) -> list[int]:
|
||||||
|
cups_round = cups[:]
|
||||||
|
current = cups_round.pop(0)
|
||||||
|
taken = [cups_round.pop(0), cups_round.pop(0), cups_round.pop(0)]
|
||||||
|
|
||||||
|
minimum, maximum = min(cups_round), max(cups_round)
|
||||||
|
|
||||||
|
destination = current
|
||||||
|
while (destination := destination - 1) in taken or destination < minimum:
|
||||||
|
if destination < minimum:
|
||||||
|
destination = maximum + 1
|
||||||
|
|
||||||
|
for i in range(len(cups_round)):
|
||||||
|
if cups_round[i] == destination:
|
||||||
|
for taken_cup in reversed(taken):
|
||||||
|
cups_round.insert(i+1, taken_cup)
|
||||||
|
break
|
||||||
|
|
||||||
|
cups_round.append(current)
|
||||||
|
return cups_round
|
||||||
|
|
||||||
|
|
||||||
|
def solve_p1(order: str, n: int) -> str:
|
||||||
|
table = [int(x) for x in order]
|
||||||
|
for i in range(n):
|
||||||
|
table = move_cups(table)
|
||||||
|
|
||||||
|
for i in range(len(table)):
|
||||||
|
if table[i] == 1:
|
||||||
|
return "".join([str(table[x%len(table)]) for x in range(i+1, len(table)+i)])
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
print(solve_p1("389547612", 100))
|
Loading…
Reference in a new issue