diff options
Diffstat (limited to '19')
| -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) |
