From ea7a5095ea9765ecc4799fdaf7e95e49dfdc8101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 22 Dec 2019 06:26:02 +0100 Subject: Day 22 part 1 --- 19/py/d22.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 19/py/d22.py (limited to '19') diff --git a/19/py/d22.py b/19/py/d22.py new file mode 100644 index 0000000..b59d458 --- /dev/null +++ b/19/py/d22.py @@ -0,0 +1,32 @@ +import collections + +def deal(deck): + return deck[::-1] + +def cut(deck, n): + if n > 0: + return deck[n:] + deck[:n] + else: + n = abs(n) + return deck[-n:] + deck[:-n] + +def deal_incr(deck, incr): + pos = 0 + deck = collections.deque(deck) + s = len(deck) + new_deck = [None for _ in range(s)] + while len(deck) > 0: + new_deck[pos % s] = deck.popleft() + pos += incr + return new_deck + +deck = [n for n in range(119315717514047+1)] +for line in open("../input/22", "r").readlines(): + if "cut" in line: + deck = cut(deck, int(line.split(" ")[-1])) + elif "increment" in line: + deck = deal_incr(deck, int(line.split(" ")[-1])) + elif "new stack" in line: + deck = deal(deck) + else: + print("nothing to do", line) -- cgit v1.2.1