From d0c834969b3b8c384ff44b0d1f5af35d74f0275e Mon Sep 17 00:00:00 2001 From: Alfred Melch Date: Thu, 13 Dec 2018 17:11:45 +0100 Subject: [PATCH] Day 12 + 13 --- day-12/01.py | 33 ++++++++++ day-12/02.py | 39 ++++++++++++ day-12/example.txt | 16 +++++ day-12/hack.py | 12 ++++ day-12/input.txt | 34 ++++++++++ day-13/01.py | 120 ++++++++++++++++++++++++++++++++++++ day-13/02.py | 132 +++++++++++++++++++++++++++++++++++++++ day-13/input.txt | 150 +++++++++++++++++++++++++++++++++++++++++++++ day-13/test.py | 15 +++++ 9 files changed, 551 insertions(+) create mode 100644 day-12/01.py create mode 100644 day-12/02.py create mode 100644 day-12/example.txt create mode 100644 day-12/hack.py create mode 100644 day-12/input.txt create mode 100644 day-13/01.py create mode 100644 day-13/02.py create mode 100644 day-13/input.txt create mode 100644 day-13/test.py diff --git a/day-12/01.py b/day-12/01.py new file mode 100644 index 0000000..91baff9 --- /dev/null +++ b/day-12/01.py @@ -0,0 +1,33 @@ +from pprint import pprint + +with open('input.txt', 'r') as f: + raw = [x.strip() for x in f.readlines()] + initial_state = raw[0].split(' ')[-1] + rules = dict() + for rule in raw[2:]: + x, y = rule.split(' => ') + rules[x] = y + +print(initial_state) +pprint(rules) + +gens = 20 + +state = '..' * gens + initial_state + '..' * gens +print(state) +for _ in range(gens): + next = ['.', '.'] + for i in range(2, len(state) - 2): + seq = state[i-2:i+3] + next.append(rules.get(seq) or '.') + next.append('.') + next.append('.') + state = ''.join(next) + print(state.strip('.')) + +res = 0 +for i, pot_val in enumerate(state): + pot_id = i - gens * 2 + if pot_val == '#': + res += pot_id +print(res) \ No newline at end of file diff --git a/day-12/02.py b/day-12/02.py new file mode 100644 index 0000000..e150d9c --- /dev/null +++ b/day-12/02.py @@ -0,0 +1,39 @@ +from pprint import pprint + +with open('input.txt', 'r') as f: + raw = [x.strip() for x in f.readlines()] + initial_state = raw[0].split(' ')[-1] + rules = dict() + for rule in raw[2:]: + x, y = rule.split(' => ') + rules[x] = y + +print(initial_state) +pprint(rules) + +gens = 50000000000 + +start_idx = 0 +state = initial_state +print(state) +for it in range(gens): + if it % 10000 == 0: + print('calc at', it, 'state len:', len(state), 'idx', start_idx) + print(state) + next = [] + state = '....' + state + '....' + for i in range(2, len(state) - 2): + seq = state[i-2:i+3] + next.append(rules.get(seq) or '.') + start_idx -= 2 + state = ''.join(next) + start_idx += len(state) - len(state.lstrip('.')) + state = state.strip('.') + # print(' ' * (start_idx + 20) + state, start_idx) + +res = 0 +for i, pot_val in enumerate(state): + pot_id = i + start_idx + if pot_val == '#': + res += pot_id +print(res) \ No newline at end of file diff --git a/day-12/example.txt b/day-12/example.txt new file mode 100644 index 0000000..8335d88 --- /dev/null +++ b/day-12/example.txt @@ -0,0 +1,16 @@ +initial state: #..#.#..##......###...### + +...## => # +..#.. => # +.#... => # +.#.#. => # +.#.## => # +.##.. => # +.#### => # +#.#.# => # +#.### => # +##.#. => # +##.## => # +###.. => # +###.# => # +####. => # \ No newline at end of file diff --git a/day-12/hack.py b/day-12/hack.py new file mode 100644 index 0000000..83bdcbc --- /dev/null +++ b/day-12/hack.py @@ -0,0 +1,12 @@ +state = '##.##.##.##....##.##.##.##.##.##.##.##.##....##.##.##.##.##.##.##.##.##....##.##.##....##.##.##.##.##.##....##.##.##.##.##.##.##.##....##.##.##.##.##.##.##.##.##.##' + +gens = 50000000000 + +start_idx = gens - 64 + +res = 0 +for i, pot_val in enumerate(state): + pot_id = i + start_idx + if pot_val == '#': + res += pot_id +print(res) diff --git a/day-12/input.txt b/day-12/input.txt new file mode 100644 index 0000000..deb9408 --- /dev/null +++ b/day-12/input.txt @@ -0,0 +1,34 @@ +initial state: #....#.#....#....#######..##....###.##....##.#.#.##...##.##.#...#..###....#.#...##.###.##.###...#..# + +#..#. => # +#...# => # +.##.# => # +#.... => . +..#.. => . +#.##. => . +##... => # +##.#. => # +.#.## => # +.#.#. => . +###.. => . +#..## => . +###.# => . +...## => . +#.#.. => # +..... => . +##### => # +..### => . +..#.# => # +....# => . +...#. => # +####. => # +.#... => # +#.#.# => # +.##.. => # +..##. => . +##..# => . +.#..# => # +##.## => # +.#### => . +.###. => # +#.### => . \ No newline at end of file diff --git a/day-13/01.py b/day-13/01.py new file mode 100644 index 0000000..1143e4a --- /dev/null +++ b/day-13/01.py @@ -0,0 +1,120 @@ +from pprint import pprint +from copy import deepcopy +from time import sleep +from asciimatics.screen import Screen +from random import randint + +m = [] + +fix_map = { + '\n': ' ', + '^': '|', + 'v': '|', + '>': '-', + '<': '-' +} + +r_turns = { '^': '>', '>': 'v', 'v': '<', '<': '^' } +l_turns = { '^': '<', '>': '^', 'v': '>', '<': 'v' } +cart_symbols = ['^', 'v', '>', '<'] +carts = [] +class Cart: + def __init__(self, x, y, dir): + self.x = x + self.y = y + self.dir = dir + self.turn_counter = 0 + + @property + def pos(self): + return (self.y, self.x) + + def turn_intersection(self): + if self.turn_counter == 0: + self.dir = l_turns[self.dir] + if self.turn_counter == 2: + self.dir = r_turns[self.dir] + + self.turn_counter = (self.turn_counter + 1) % 3 + + def turn_corner(self, corner): + my_map = { + ('/', '^'): '>', + ('/', '>'): '^', + ('/', 'v'): '<', + ('/', '<'): 'v', + ('\\', '^'): '<', + ('\\', '>'): 'v', + ('\\', 'v'): '>', + ('\\', '<'): '^', + } + + self.dir = my_map[(corner, self.dir)] + + def move(self): + if self.dir == '^': + self.y -= 1 + elif self.dir == '>': + self.x += 1 + elif self.dir == 'v': + self.y += 1 + elif self.dir == '<': + self.x -= 1 + + symbol = m[self.y][self.x] + if symbol in ['/', '\\']: + self.turn_corner(symbol) + if symbol == '+': + self.turn_intersection() + + +with open('input.txt', 'r') as f: + for y, line in enumerate(f.readlines()): + row = [] + for x, symbol in enumerate(line): + row.append(fix_map.get(symbol) or symbol) + if symbol in cart_symbols: + carts.append(Cart(x, y, symbol)) + m.append(row) + +def print_map(screen): + m_cpy = deepcopy(m) + for cart in carts: + m_cpy[cart.y][cart.x] = cart.dir + for i, row in enumerate(m_cpy): + screen.print_at(''.join(row), 0, i) + +def anim(screen): + while 1: + carts.sort(key=lambda x: x.pos) + + for cart in carts: + cart.move() + + # sleep(1) + print_map(screen) + ev = screen.get_key() + if ev in (ord('Q'), ord('q')): + return + screen.refresh() + + +# Screen.wrapper(anim) + +def collision_detection(): + coords = [cart.pos for cart in carts] + + if len(set(coords)) != len(coords): + return [pos for pos in coords if coords.count(pos) > 1][0] + +def get_collision(): + while 1: + carts.sort(key=lambda x: x.pos) + + for cart in carts: + cart.move() + if collision_detection(): + return collision_detection() + +col = get_collision() +print(f'{col[1]},{col[0]}') \ No newline at end of file diff --git a/day-13/02.py b/day-13/02.py new file mode 100644 index 0000000..d3aedca --- /dev/null +++ b/day-13/02.py @@ -0,0 +1,132 @@ +from pprint import pprint +from copy import deepcopy +from time import sleep +from asciimatics.screen import Screen +from random import randint + +m = [] + +fix_map = { + '\n': ' ', + '^': '|', + 'v': '|', + '>': '-', + '<': '-' +} + +r_turns = { '^': '>', '>': 'v', 'v': '<', '<': '^' } +l_turns = { '^': '<', '>': '^', 'v': '>', '<': 'v' } +cart_symbols = ['^', 'v', '>', '<'] +carts = [] +class Cart: + def __init__(self, x, y, dir): + self.x = x + self.y = y + self.dir = dir + self.turn_counter = 0 + + @property + def pos(self): + return (self.y, self.x) + + def turn_intersection(self): + if self.turn_counter == 0: + self.dir = l_turns[self.dir] + if self.turn_counter == 2: + self.dir = r_turns[self.dir] + + self.turn_counter = (self.turn_counter + 1) % 3 + + def turn_corner(self, corner): + my_map = { + ('/', '^'): '>', + ('/', '>'): '^', + ('/', 'v'): '<', + ('/', '<'): 'v', + ('\\', '^'): '<', + ('\\', '>'): 'v', + ('\\', 'v'): '>', + ('\\', '<'): '^', + } + + self.dir = my_map[(corner, self.dir)] + + def move(self): + if self.dir == '^': + self.y -= 1 + elif self.dir == '>': + self.x += 1 + elif self.dir == 'v': + self.y += 1 + elif self.dir == '<': + self.x -= 1 + + symbol = m[self.y][self.x] + if symbol in ['/', '\\']: + self.turn_corner(symbol) + if symbol == '+': + self.turn_intersection() + + +with open('input.txt', 'r') as f: + for y, line in enumerate(f.readlines()): + row = [] + for x, symbol in enumerate(line): + row.append(fix_map.get(symbol) or symbol) + if symbol in cart_symbols: + carts.append(Cart(x, y, symbol)) + m.append(row) + +def print_map(screen): + m_cpy = deepcopy(m) + for cart in carts: + m_cpy[cart.y][cart.x] = cart.dir + for i, row in enumerate(m_cpy): + screen.print_at(''.join(row), 0, i) + +def anim(screen): + while 1: + carts.sort(key=lambda x: x.pos) + + for cart in carts: + cart.move() + + # sleep(1) + print_map(screen) + ev = screen.get_key() + if ev in (ord('Q'), ord('q')): + return + screen.refresh() + + +# Screen.wrapper(anim) + +def crashers(): + to_rem = set() + for c1 in carts: + for c2 in carts: + if c1 is not c2 and c1.pos == c2.pos: + # print('crash at:', c1.pos) + to_rem.add(c1) + to_rem.add(c2) + return to_rem + + +def get_remaining(): + while len(carts) > 1: + num_carts = len(carts) + carts.sort(key=lambda x: x.pos) + to_rem = set() + + for cart in carts: + cart.move() + to_rem = to_rem.union(crashers()) + + for cart in to_rem: + carts.remove(cart) + if len(carts) != num_carts: + print(f'Reduces carts from {num_carts} to {len(carts)}') + return carts[0] + +pos = get_remaining().pos +print(f'{pos[1]},{pos[0]}') \ No newline at end of file diff --git a/day-13/input.txt b/day-13/input.txt new file mode 100644 index 0000000..c5c66bc --- /dev/null +++ b/day-13/input.txt @@ -0,0 +1,150 @@ +/---------------------------------------------------------------------------------------------------\ +| /------------------------+------------\ +| /-----------------------------------------------------------\ | | /---------+---------------------------------\ +| | /--------------------------------------+-----------+-------------\ | | | | +| | | /--------------------------------+-----------+-------------+----------+--+---------+---------\ | +| | | /-+--------------------------------+-----------+---------\ | /-+--+---------+---------+----------------\ | +| | /------+---+-+--------------------------------+-----------+---------+---+----\ | | | | /-----+----------------+-----\| +| | | | | | /-----------+-----------+---------+---+---\| | | | | | | | || +|/-+-------------+------+---+-+--------------------+-----------+-----------+---------+---+---++--\| | | | | | | || +|| | | | | |/-------------------+-----------+-----------+---------+---+---++--++-+--+---------+-\ | | | || +|| | /------+--\ | | || | | | | /-+---++--++-+--+---------+-+-+-----+-------------\ | || +|| | | | | | | || | /+-----------+---------+-+-+---++--++-+--+---------+-+-+-----+-------------+--+-----++-\ +|| | | | | | /+-++------\ | || | | | | || || | | /------+-+-+-----+-----------\ | | || | +|| | | | | | || || | | || | /----+-+-+---++--++-+--+\ | | | | | | | | || | +|| | | | /+---+--++-++------+-->---\ | || | | | | | || || | || | | | | | | | | || | +|| | | | || | || || /--+------+-----+--------\ || | | | | | || || | || | | | | | | | | || | +|| | | | || | || || | | | | | |v | | | | | || || | || | | | v | | | | || | +|| \------+------+-++---+--++-++---+--+------+-----+--------+-+/ | | | | | || || | || | | | | | | | | || | +|| | | || \--++-++---+--+------+-----+--------+-+------------+----+----+-+-/ || || | || | | | | | | | | || | +|| |/-----+-++------++-++---+--+------+-----+--------+-+------------+----+----+-+-----++--++-+--++-+--\ | | | | | | | || | +|| || | || || || | | | | | | | | | | || || |/-++-+--+---+-+-+-\ | | | | || | +|| /------++-----+-++-----\|| || | | | | | | | /--+----+-+-----++--++-++-++-+--+---+-+-+-+---+--\ | | | || | +||/+------++-----+-++----\||\-++---+--+------+-----+--------+-+------------+-+--+----/ | || /++-++-++-+--+---+-+-+-+---+--+--------+\| | || | +|||| || | || ||| || | | | |/-------+-+------------+\| | | || ||| || || | | /-+-+-+-+---+--+--------+++--+-----++\| +|||| || | || ||| || | | | || |/+------------+++--+------+-----++-+++-++-++-+--+-+-+\| | | | | ||| | |||| +|||| /++-----+-++--\ ||| || | | | || ||| ||| /+------+-----++-+++-++-++-+--+-+-+++-+-+---+--+--------+++-\| |||| +|||| ||| | || | ||| || | | | || ||\------------+++-++------+-----++-+++-++-++-+--+-+-+++-+-+---+--+--------+++-++-----+++/ +|||| ||| | || | ||| || | | | || || /----------+++-++------+-----++-+++-++-++-+--+-+-+++-+-+---+--+--------+++-++---\ ||| +|||| /---+++-----+-++--+-+++--++---+--+------+-----++-------++--+------\ ||| || | || ||| || || | | | ||| | | | | ||| || | ||| +|||| | ||| | || | ||| || | | |/----++-------++--+------+---+++-++------+-----++-+++-++-++-+--+-+-+++-+-+---+\ | ||| || | ||| +|||| | ||| | || | ||| || | | || || /----++--+------+---+++-++\ | /--++-+++-++-++\| | | ||| | | || | ||| || | ||| +|||| | ||| | || | ||| || | | || || | || | | ||| ||| | | || ||| || |||| | | ||| |/+---++-+--------+++\|| | ||| +|||| | ||| | || | ||| || | | || || | || /+------+---+++-+++---\ | | || ||| || |||| | | ||| ||| || | |||||| | ||| +|||| | |\+-----+-+/ | ||| || | | || || | /++-++------+-\ ||| ||| | | | || ||| ||/++++--+-+-+++-+++---++-+------\ |||||| | ||| +|||| | | | | | | ||| || | | /--++----++--+---+++-++------+-+-+++-+++---+-+--+--++-+++-+++++++--+-+-+++-+++---++-+\ | |||||| | ||| +|||| | | | | | | ||| || | | | || || | ||| || | | ||| ||| | | | || ||| ||||||\--+-+-+++-+++---++-++-----+-/||||| | ||| +|||| | | | | | | ||| || | | | || || | ||| || | | ||| ||| | | | || ||| |||||| | | ||| ||| || || | ||||| | ||| +|||| | | | | | | ||| || | /+---+--++----++--+---+++-++------+-+-+++-+++---+-+--+--++-+++-++++++---+-+\||| ||| || || | ||||| | ||| +|||| | | | /--+-+---+-+++--++---+-++---+--++----++--+---+++-++------+-+-+++-+++---+-+\ | || ||| |||||| | ||||| ||| || || | ||||| | ||| +|||| | | | | | | | ||| || /-+-++---+--++----++--+---+++-++------+-+-+++-+++---+-++-+--++\||| |||||| | ||||| ||| || || | ||||| | ||| +||\+-+---+-+--+--+-+---+-/|| || | | || /-+--++----++--+---+++-++------+-+-+++-+++---+-++-+--++++++-++++++---+\||||| ||| || || | ||||| | ||| +|| | | | | | | | | || || | | || | | || || | ||| || | | |||/+++---+-++-+--++++++-++++++---+++++++-+++---++-++-\ | ||||| | ||| +|| | | | | /+--+-+---+--++--++-+-+-++-+-+--++\ |\--+---+++-++------+-+-+/||||| | || | |||||| |||||| ||||||| ||| || || | | ||||| | ||| +|| | | | | || | | | || || | | ||/+-+--+++---+---+---+++-++------+-+-+-+++++---+-++-+--++++++-++++++---+++++++-+++---++-++-+---+--+++++\ | ||| +|| | | | | || | | | || || | | |||| | ||| | | ||| || | | | ||||| | || | |||||| |||||| ||||||| ||| || || | | |||||| | ^|| +|| | | | | || | | | || || | | |||| | ||| | | ||| || | | | ||||| |/++-+--++++++-++++++---+++++++-+++--\|| || | | |||||| | ||| +|| | | | | || | | | || || | | |||| | ||| | | ||| || | | | ||||| |||| | |||||| ||||||/--+++++++-+++--+++-++-+---+--++++++--+-+++\ +||/+-+---+-+-++--+-+--\| || || | | |||v | ||| | | ||| || /---+-+-+-+++++---++++-+--++++++-+++++++--+++++++-+++--+++\|| | | |||||| | |||| +|||| | | |/++--+-+--++--++--++-+-+-++++-+--+++---+---+---+++-++--+-->+-+-+-+++++---++++-+-\|||||| ||\++++--+++++++-+++--++++++-+---/ |||||| | |||| +|||| | | |||| | | || || || | | |||| | ||| | | ||| || | | | | ||||| |||| | ||||||| || \+++--+++++++-+++--++++++-+------++++++--+-+/|| +|||| | | |||| | | || || || | | |||| | ||| | | ||| || | | | | ||||| |||| | ||||||| || ||| ||||||| ||| |||||| | |||||| | | || +|||| | | |||| | | || ||/-++-+-+-++++-+--+++---+---+---+++-++--+---+-+-+-+++++---++++-+-+++++++-++--+++--+++++++-+++--++++++-+-----\|||||| | | || +|||| | | |||| | | || ||| || |/+-++++-+--+++---+---+---+++-++--+---+-+-+-+++++---++++-+-+++++++-++--+++--+++++++-+++--++++++-+----\||||||| | | || +|||| | | ||||/-+-+--++--+++-++-+++-++++-+--+++---+--\| ||| || | | | | ||||| |||| | ||||||\-++--+++--+++++++-+++--++++++-+----++++++/| | | || +|||| | | ||||| | | || ||| || ||| |||| | ||| | /++---+++-++--+---+-+-+-+++++---++++-+-++++++--++--+++\ ||||||| ||| |||||| | |||||| v | | || +|||| | | ||||| | | || ||| ||/+++-++++-+--+++---+-+++---+++-++--+---+-+-+-+++++\ |||| | |||||| || |||| ||||||| ||| |||||| | |||||| | | | || +|||| | | ||||| | | || ||| |||||| |||| | ||| |/+++---+++-++--+---+-+-+-++++++--++++-+-++++++--++--++++-+++++++-+++--++++++-+----++++++-+-\| | || +|||| | | ||||| | | || ||| \+++++-++++-+--+++---+++++---+++-++--+---+-+-+-++++++--++++-+-++++++--++--++++-+++++++-+++--+/|||| | |||||| | || | || +||\+-+---+-+++++-+-+--/| ||| ||||| |||| | ||| ||||| ||| || | | | | |||||| |||| | |||||| || ||\+-+++++++-+++--+-++++-+----++++++-+-++-+-+/ +|| | | | ||||| \-+---+--+++--+++++-++++-+--+++---+++++---+++-++--+---+-+-+-++++++--++++-+-++/||| || || | ||||||| ||| | |||| | |||||| | || | | +|| | | | |\+++---+---+--+++--+++++-++++-+--+++---+++++---+++-++--+---+-+-+-++++++--++++-+-/| ||| || || | ||||||| ||| | |||| | |||||| | || | | +|| | | /-+-+-+++---+---+--+++--+++++-++++-+--+++---+++++---+++-++--+---+-+-+-++++++--++++\| | ||| || || | ||||||| ||| | |||| | |||||| | || | | +|| | | | | | ||| | | ||| ||||| |||| | ||| ||||| |||/++--+---+-+-+-++++++-\|||||| | |||/-++--++-+-+++++++-+++--+-++++-+\ |||||| | || | | +|| | | | | | ||| | | ||| ||||| |||| | ||| ||||| |||||| | | | |/++++++-+++++++--+-++++-++--++-+-+++++++-+++--+-++++-++---++++++\| || | | +|| | | | | | ||| | | ||| ||||| |||| | ||| ||||| |||||| | | | |||||||| ||||||| | |||| || || | ||||||| ||| | |||| || |||||||| || | | +|| | | | | | ||| | | ||| ||||| |||| | ||| ||||| |||||| \---+-+-++++++++-+++++++--+-++++-++--++-+-+++++++-+++--+-+/|| || |||||||| || | | +|| | | | | | ||| | | ||| ||||| |||| | ||| ||||| |||||| | | |||||||| ||||||| | |||| || || | ||||||| \++--+-+-++-++---++++++++-++-/ | +|| | | | | | ||| | | |||/-+++++-++++\| ||| ||||| |||||| | | \+++++++-+++++++--+-++++-++--++-+-++++/|| || | | || || |||||||| || | +|| | | | | | ||| | | |||| ||||| |||||| ||| ||||| ||\+++------+-+--+++++++-+++++++--+-++++-++--++-+-++++-/| || | | || || |||||||| || | +|| |/+-+-+-+-+++---+---+--++++-+++++-++++++--+++---+++++---++-+++------+-+--+++++++-+++++++--+-++++\|| || | |||| | || | | || ^| |||||||| || | +||/+++-+-+-+-+++---+---+\ |||| ||\++-++++++--+++---+++++---++-+++------+-+--+++++++-+++++++--+-/|||||| || | |||| | || | | || || |||||||| || | +\+++++-+-+-+-+++---+---++-++++-++-++-++++++--+++---+++++---++-+++------+-+--+++++++-+++++++--+--++++/| || | |||| | || | | || || |||||||| || | + ||||| | | \-+++---+---++-++++-++-++-++++++--+++---+++++---++-+++------+-+--+++++++-+++++++--+--++++-+--++-+-/||| | || | | || || |||||||| || | + ||||| | | ||| | || |||| || || |||||| ||| ||||| || ||| | | ||||\++-+++++++--+--++++-+--/| | ||| | || | | || || |||||||| || | + |||||/+-+---+++---+---++-++++-++-++-++++++--+++--\||||| || ||| | | |||| || ||||||| | |||| | | | ||| | || | | || || |||||||| || | + ||||||| | ||| | || |||| || \+-++++++--+++--++++++---++-+++------+-+--++++-++-+++++++--+--++++-+---+-+--+++--+--++--+-+-++-++---/||||||| || | + ||||||| | ||| | || |||| || | |||||| ||| |||||| || |||/-----+-+--++++-++-+++++++--+--++++-+---+-+--+++--+--++--+-+-++\|| ||||||| || | + ||||||| | ||| | || |||| || | |||||| ||| |||\++---++-++++-----+-+--++++-++-+++++++--+--++++-+---+-/ ||| | || | | ||||| ||||||| || | + ||||||| | ||| | || |||| \+--+-++++++--+++--+++-++---++-++++-----+-+--++++-++-+++++++--+--++++-+---+----+++--/ || | | ||||| ||||||| || | + ||||||| | ||| v || |||| | | |||||| |\+->+++-++---++-++++-----+-+--++++-++-+++++++>-+--++++-+---+----+++-----++--+-/ ||||| ||||||| || | + ||||||| | ||| \---++-++++--+--+-++++++--/ | ||| || || |||| | | |||| || ||||||| | |||| | | ||| || | ||||| ||||||| || | + ||||||| | /+++-------++-++++--+--+-++++++----+--+++-++---++-++++-----+-+--++++-++-+++++++--+--++++-+---+--\ ||| || | ||||| ||||||| || | + ||||||| |/-++++-------++-++++--+--+-++++++----+--+++-++\ || |||| /-+-+--++++-++-+++++++--+--++++-+\ | | ||| || | ||||| ||||||| || | + |\+++++-++-++++-------+/ |||| | | |||||| | ||| ||| || ||\+---+-+-+--++++-++-+++++++--+--++++-++--+--+-+++-----++--+---+++++----+++++++-+/ | + | ||||| || |||| | |||| | | |||||| | ||| ||| || || | | | | |||| || ||||||\--+--++++-++--/ | ||| || | ||||| ||||||| | | + | ||||| || |||| /--+--++++--+--+-++++++----+--+++-+++--++\|| | | | | |||| || |||||| | |||| || | ||| || | ||||| ||||||| | | + |/+++++-++\|||| | v |||| | |/++++++----+--+++-+++--+++++-+---+-+-+--++++-++-++++++---+--++++-++-----+-+++-----++-\| ||||| ||||||| | | + ||||||| ||||||| | | |||| | |||||||| /+--+++-+++--+++++\| | | | |||| || |||||| | |||| \+-----+-+++-----+/ || ||||| ||||||| | | + ||||||| ||||||| | | |||| | |||||||| || ||| ||| ||||\++---+-+-+--++++-++-+/|||| /+--++++--+-----+-+++-----+--++\ ||||| ||||||| | | + ||||||| ||||||| | | |||| | |||||||| || ||| ||| |||| || | | | |||| || | |||| || |||| | /---+-+++---\ | ||| ||||| ||||||| | | + ||||||| ||||||| |/-+--++++--+\ |||||||| || ||| ||| |||| || | | | |||| || | |||| || |||| | | /-+-+++---+-+--+++--+++++----+++++++\| | + ||||||| ||||||| || | |||| || ||||||||/--++--+++-+++--++++-++---+-+-+--++++-++-+-++++--++--++++--+-+-+-+-+++---+-+--+++--+++++----+++++++++-\ | + ||||||| ||||||| /-++-+--++++--++-+++++++++--++--+++-+++--++++-++---+-+-+--++++-++-+-++++--++--++++--+-+-+-+-+++---+-+--+++\ ||||| ||||||||| | | + ||||||| ||||||| | || | |||| || ||||||||| || ||| |\+--++++-++---+-+-+--++++-/| | |||| || |||| | | | | ||| | \--++++-+++++----+++/||||| | | + ||||||| ||||||| | || | |||| || ||||||||| || ||| | | |||| || /+-+-+--++++-\| | |||| || \+++--+-+-+-+-+++---+----++++-+++++----+/| ||||| | | + ||||||| ||||||| | || | |||| || ||||||||| || |\+-+-+--++++-++--++-+-+--++++-++-+-++++--+/ ||| | | | | ||| | |||| ||||| | | ||||| | | + ||||||| ||||||| /+-++-+--++++--++-+++++++++--++--+-+-+-+--++++-++--++-+-+-\\+++-++-+-++++--+----+++--+-+-+-+-+++---+----++++-+++++----+-+-+/||| | | + ||||||| ||||||| || || | |||| || ||||||||| || | | | | |||\-++--++-+-+-+-+++-++-/ |\++--+----+++--+-+-+-+-+++---+----++++-+++++----+-/ | ||| | | + ||||||| ||||||| || || | |||| || ||||||||| ||/-+-+-+-+--+++--++--++-+\| | ||| || | || | ||| | | | | ||| | |||| ||||| | | ||| | | + ||||||| ||||||| || || | |\++--++-+++/||||| ||| | | | | ||| || || ||| | ||| || | || | /--+++--+-+-+-+-+++---+---\|||| ||||| | | ||| | | + ||||||| |||||||/++-++-+--+-++--++-+++-+++++--+++-+-+-+-+--+++--++--++-+++-+-+++-++---+-++-\| | ||| | | | | ||| |/--+++++-+++++----+---+-+++-+-\| + \++++++-++++++++++-++-+--+-++--++-+++-+++++--+++-+-+-+-+--+++--++--++-+++-+-+++-++---+-++-++-+--/|| | | | | ||| || ||||| ||||| | | ||| | || + |||||| |||||||||\-++-+--+-++--++-+++-+++++--+++-+-+-+-+--+++--++--++-+++-+-+++-++---+-++-++-+---++--+-+-+-+-+++---++--++++/ ||||| | | ||| | || + |||||| ||||||||| || | | v| || ||| ||||| ||| | | | | ||| || || ||| | ||| || | || || | || | | | | ||| || |||| ||||| | | ||| | || + |||||| ||||||||| |\-+--+-++--+/ ||| ||||| ||| | | | | ||| || \+-+++-+-+++-/| | || || | || | | | | ||| || |||| ||||| | | ||| | || + |||||| ||||||||| /+--+--+-++--+\ ||| ||||| ||| | | | | ||| || | ||| | ||| | | || || | || | |/+-+-+++---++-\|||| ||||| | | ||| | || + |||||| ||||||||| || | | || || ||| ||||| \++-+-+-+-+--+++--/| | ||| | \++--+---+-++-++-+---++--+-+++-+-+++---++-+++++--/|||| | | ||| | || + |||||| ||||||||| || | | || || ||| ||||| || | | | | ||| | \-+++-+--++--+---+-++-++-+---++--/ ||| | ||| || ||||| |||| | | ||| | || + |||||| ||||\++++-++--+--+-++--++-+++-+++++---/| | | | | ||| |/----+++-+--++--+\ | || || | || ||| | ||| || ||||| |||| | | ||| | || + |\++++-++++-++++-++--+--/ ||/-++-+++-+++++----+-+-+-+-+--+++---++----+++-+--++--++--+-++-++-+---++----+++-+-+++---++-+++++---++++----+--\| ||| | || + | |||| |||| |||| || | ||| || ||| |\+++----+-+-+-+-+--+++---++----+++-+--++--++--+-++-++-+---++----+++-+-/|| || ||||| |||| | || ||| | || + | |||| |||| ||\+-++--+----+++-++-+++-+-+++----+-+-+-+-+--+++---++----+++-+--++--++--+-++-/| | || ||| | \+---++-+++++---++++----+--++-+++-+-+/ + | ||\+-++++-++-+-++--+----+++-++-+++-+-+++----+-/ | | | ||| || ||| | || || | || | | \+----+++-+---+---++-+++++---+++/ | || ||| | | + | || | |||| |\-+-++--+----+++-++-+++-+-+++----+---+-/ | |||/--++----+++-+--++--++--+-++--+-+----+----+++-+---+---++-+++++---+++-----+--++-+++-+-+-\ + | || | |||| | | || | ||| || \++-+-+++----+---+---+--+/|| || ||| | || || | || | | | ||| | | || ||||| ||| | || ||| | | | + | || | |||| | | || | ||| || || | ||| | | | | || || ||| | \+--++--+-++--+-+----+----+++-+--<+---++-+++++---++/ | || ||| | | | + | || | |||| | | || | ||| || || | ||\----+---+---+--+-++--++----+++-+---+--++--+-++--+-+----+----+++-+---+---++-+++++---++------+--++-+++-/ | | + | || | |||| | | || | ||| || || | || | | | | || || ||| | | || | || | \----+----+++-+---+---++-+/||| || | || ||| | | + | || \-++++-+--+-++--+----+++-++--++-+-++-----+---+---+--+-++--++----+++-+---+--++--+-+/ | | ||| | | || | ||| || | || ||| | | + | || |||| | | || | ||| || || | || | | | | || || ||| | | || | | | | ||| | | || | ||| || | || ||| | | + | ||/--++++-+--+\|| | ||| || \+-+-++-----+---+---+--+-++--++----+++-+---+--++--+-+---+------+----+++-+---+---++-+-/|| ||/-----+--++-+++--\| | + | ||| |||| | |||| | |\+-++---+-+-/| | | | \-++--++----++/ | | || | | | | ||| | | || | || ||| | || ||| || | + | ||| |||| | |||| | | | || | | | | \---+----++--++----++--+---+--++--+-+---+------+----+++-+---+---++-+--++---+++-----+--++-++/ || | + | ||| |||| | /++++--+----+-+-++-\ | | | | | || || || | \--++--+-+---+------+----+++-+---+---++-+--++---+++-----+--+/ || || | + | ||| |||| \-+++++--+----+-+-++-+-+-+--+-----+-------+----++--++----++--+------++--+-/ | | ||| | | || | || /-+++-----+--+--++---++\| + | ||| |||| ||||| | | | || | \-+--+-----+-------+----++--++----++--+------++--+-----+------+----+++-+---/ || | || | ||| | | || |||| + | ||^ |||\---+++++--+----+-+-++-+---+--+-----+-------+----++--++----++--+------++--+-----+------+----+++-/ || | || | ||| | | || |||| + | ||| ||| ||||| | /+-+-++-+---+--+-----+-------+----++--++----++--+------++--+-----+------+--\ ||| || | || | ||| | | || |||| + | ||| \++----+++++--/ || | || | | | \-------+----++--++----+/ | || | | | | |\+---------++-/ || | ||| | | || |||| + | ||| || |\+++------++-+-++-+---+--+-------------+----++--++----+---/ || | | /+--+-+-+---------++----++-+-+++-----+--+--++\ |||| + | ||| || | ||| || | || | \--+-------------+----++--++----+----------++--+-----+-----++--+-+-+---------++----++-+-+++-----+--+--/|| |||| + | ||| \+----+-+++------++-+-++-+------+-------------/ || || | || | | || | | | || || | ||| /---+--+---++-\|||| + | |\+----+----+-+++------++-+-++-+------+------------------++--++----/ || | | || | | | || || | ||| | | | || ||||| + | | | | | ||| || | || | | || || || | | || | | \----<----++----++-+-+++-+---+--+---/| ||||| + | | | | | ||| || | || | | || \+---------------++--+-----+-----++--+-+-----------++----++-+-+/| | | | | ||||| + | | \----+----+-/\+------++-+-+/ | \------------------++---+---------------++--+-----+-----++--+-+-----------++----++-+-/ | | | | | ||||| + | | | /+---+------++-+-+--+-------------------------++---+---------------++--+---\ \-----++--+-+-----------++----+/ | \-+---+--+----+-+/||| + | | | || | || | | | || | || | | || | | || | | | | | | | ||| + | | | || \------++-+-+--+-------------------------/| | || | | \+--+-+-----------++----+--+-----+---+--+----/ | ||| + | | | || \+-+-+--+--------------------------+---+---------------++--+---+--------+--/ | || | | | | | | ||| + \-+------/ || | | | | | | || | | | | || | | \---+--+------/ ||| + | || | | \--+--------------------------+---+---------------/| | | | | || | | | | ||| + \----------++-----------+-+----+--------------------------+---+----------------+--+---+--------/ | || | | | | ||| + || | | | \---+----------------+--+---+-------------+-----------++----+--+---------+--+--------++/ + || | \----+------------------------------+----------------+--+---+-------------+-----------++----+--+---------+--/ || + || | | | | \---+-------------+-----------++----/ | | || + || | | | | | | || | | || + || \------+------------------------------+----------------+------+-------------+-----------++-------+---------/ || + |\---------<--------/ \----------------/ | | |\-------+---------------------/| + \--------------------------------------------------------------------------/ \-----------/ \----------------------/ \ No newline at end of file diff --git a/day-13/test.py b/day-13/test.py new file mode 100644 index 0000000..09460ed --- /dev/null +++ b/day-13/test.py @@ -0,0 +1,15 @@ +from random import randint +from asciimatics.screen import Screen + +def demo(screen): + while True: + screen.print_at('Hello world!', + randint(0, screen.width), randint(0, screen.height), + colour=randint(0, screen.colours - 1), + bg=randint(0, screen.colours - 1)) + ev = screen.get_key() + if ev in (ord('Q'), ord('q')): + return + screen.refresh() + +Screen.wrapper(demo) \ No newline at end of file