diff options
| author | Gustav Sörnäs <gusso230@student.liu.se> | 2019-12-22 06:26:02 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gusso230@student.liu.se> | 2019-12-22 06:26:02 +0100 |
| commit | ea7a5095ea9765ecc4799fdaf7e95e49dfdc8101 (patch) | |
| tree | 9dea751e3277101c5022d87a78472118b2354617 | |
| parent | c188bd5d1e88ce75d0bc074e38e33c68aedaea2e (diff) | |
| download | aoc-ea7a5095ea9765ecc4799fdaf7e95e49dfdc8101.tar.gz | |
Day 22 part 1
| -rw-r--r-- | 19/py/d22.py | 32 |
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) |
