"""Solution to 2020/23""" from collections import deque EXAMPLE = '389125467' INPUT = '952316487' # INPUT = EXAMPLE MOVES = 100 def main(): all_cups = deque(sorted(INPUT)) cups = deque(INPUT) for move in range(MOVES): print(f'-- MOVE {move + 1} --') while all_cups[0] != cups[0]: all_cups.rotate() print(f'cups: {list(cups)}') cur = cups[0] cups.rotate(-1) lift = [cups.popleft(), cups.popleft(), cups.popleft()] next_cup = cups[0] print('pick up:', lift) all_cups.rotate() while all_cups[0] in lift: all_cups.rotate() destination = all_cups[0] print('destination:', destination) while cups[-1] != destination: cups.rotate() cups.extend(lift) while cups[0] != next_cup: cups.rotate() print('-- Final:--') print(cups) print() while cups[0] != '1': cups.rotate() cups.popleft() print(''.join(list(cups))) main()