summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gusso230@student.liu.se>2019-12-22 06:26:02 +0100
committerGustav Sörnäs <gusso230@student.liu.se>2019-12-22 06:26:02 +0100
commitea7a5095ea9765ecc4799fdaf7e95e49dfdc8101 (patch)
tree9dea751e3277101c5022d87a78472118b2354617
parentc188bd5d1e88ce75d0bc074e38e33c68aedaea2e (diff)
downloadaoc-ea7a5095ea9765ecc4799fdaf7e95e49dfdc8101.tar.gz
Day 22 part 1
-rw-r--r--19/py/d22.py32
1 files changed, 32 insertions, 0 deletions
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)