From 8881d00b55ada8df6e2aa1bf1213761c9a9afdbb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 20 Dec 2022 13:44:56 +0100 Subject: [PATCH] 2022: d20: ex1: add solution --- 2022/d20/ex1/ex1.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 2022/d20/ex1/ex1.py diff --git a/2022/d20/ex1/ex1.py b/2022/d20/ex1/ex1.py new file mode 100755 index 0000000..aba905b --- /dev/null +++ b/2022/d20/ex1/ex1.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python + +import sys +from collections import deque + + +def solve(input: list[int]) -> int: + def mix(file: list[int]) -> list[int]: + shuffled = deque(enumerate(file)) + + for i, n in enumerate(file): + item = shuffled.index((i, n)) + shuffled.remove((i, n)) + # Moving the item to the left means moving the collection to the left + shuffled.rotate(-n) + shuffled.insert(item, (i, n)) + + return [n for _, n in shuffled] + + def coordinates(file: list[int]) -> tuple[int, int, int]: + zero_index = file.index(0) + indices = map(lambda n: n + zero_index, [1000, 2000, 3000]) + return tuple(map(lambda n: file[n % len(file)], indices)) # type: ignore + + return sum(coordinates(mix(input))) + + +def main() -> None: + input = [int(n) for n in sys.stdin.readlines()] + print(solve(input)) + + +if __name__ == "__main__": + main()