Day 12 + 13
parent
0566019d89
commit
d0c834969b
@ -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)
|
@ -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)
|
@ -0,0 +1,16 @@
|
|||||||
|
initial state: #..#.#..##......###...###
|
||||||
|
|
||||||
|
...## => #
|
||||||
|
..#.. => #
|
||||||
|
.#... => #
|
||||||
|
.#.#. => #
|
||||||
|
.#.## => #
|
||||||
|
.##.. => #
|
||||||
|
.#### => #
|
||||||
|
#.#.# => #
|
||||||
|
#.### => #
|
||||||
|
##.#. => #
|
||||||
|
##.## => #
|
||||||
|
###.. => #
|
||||||
|
###.# => #
|
||||||
|
####. => #
|
@ -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)
|
@ -0,0 +1,34 @@
|
|||||||
|
initial state: #....#.#....#....#######..##....###.##....##.#.#.##...##.##.#...#..###....#.#...##.###.##.###...#..#
|
||||||
|
|
||||||
|
#..#. => #
|
||||||
|
#...# => #
|
||||||
|
.##.# => #
|
||||||
|
#.... => .
|
||||||
|
..#.. => .
|
||||||
|
#.##. => .
|
||||||
|
##... => #
|
||||||
|
##.#. => #
|
||||||
|
.#.## => #
|
||||||
|
.#.#. => .
|
||||||
|
###.. => .
|
||||||
|
#..## => .
|
||||||
|
###.# => .
|
||||||
|
...## => .
|
||||||
|
#.#.. => #
|
||||||
|
..... => .
|
||||||
|
##### => #
|
||||||
|
..### => .
|
||||||
|
..#.# => #
|
||||||
|
....# => .
|
||||||
|
...#. => #
|
||||||
|
####. => #
|
||||||
|
.#... => #
|
||||||
|
#.#.# => #
|
||||||
|
.##.. => #
|
||||||
|
..##. => .
|
||||||
|
##..# => .
|
||||||
|
.#..# => #
|
||||||
|
##.## => #
|
||||||
|
.#### => .
|
||||||
|
.###. => #
|
||||||
|
#.### => .
|
@ -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]}')
|
@ -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]}')
|
@ -0,0 +1,150 @@
|
|||||||
|
/---------------------------------------------------------------------------------------------------\
|
||||||
|
| /------------------------+------------\
|
||||||
|
| /-----------------------------------------------------------\ | | /---------+---------------------------------\
|
||||||
|
| | /--------------------------------------+-----------+-------------\ | | | |
|
||||||
|
| | | /--------------------------------+-----------+-------------+----------+--+---------+---------\ |
|
||||||
|
| | | /-+--------------------------------+-----------+---------\ | /-+--+---------+---------+----------------\ |
|
||||||
|
| | /------+---+-+--------------------------------+-----------+---------+---+----\ | | | | /-----+----------------+-----\|
|
||||||
|
| | | | | | /-----------+-----------+---------+---+---\| | | | | | | | ||
|
||||||
|
|/-+-------------+------+---+-+--------------------+-----------+-----------+---------+---+---++--\| | | | | | | ||
|
||||||
|
|| | | | | |/-------------------+-----------+-----------+---------+---+---++--++-+--+---------+-\ | | | ||
|
||||||
|
|| | /------+--\ | | || | | | | /-+---++--++-+--+---------+-+-+-----+-------------\ | ||
|
||||||
|
|| | | | | | | || | /+-----------+---------+-+-+---++--++-+--+---------+-+-+-----+-------------+--+-----++-\
|
||||||
|
|| | | | | | /+-++------\ | || | | | | || || | | /------+-+-+-----+-----------\ | | || |
|
||||||
|
|| | | | | | || || | | || | /----+-+-+---++--++-+--+\ | | | | | | | | || |
|
||||||
|
|| | | | /+---+--++-++------+-->---\ | || | | | | | || || | || | | | | | | | | || |
|
||||||
|
|| | | | || | || || /--+------+-----+--------\ || | | | | | || || | || | | | | | | | | || |
|
||||||
|
|| | | | || | || || | | | | | |v | | | | | || || | || | | | v | | | | || |
|
||||||
|
|| \------+------+-++---+--++-++---+--+------+-----+--------+-+/ | | | | | || || | || | | | | | | | | || |
|
||||||
|
|| | | || \--++-++---+--+------+-----+--------+-+------------+----+----+-+-/ || || | || | | | | | | | | || |
|
||||||
|
|| |/-----+-++------++-++---+--+------+-----+--------+-+------------+----+----+-+-----++--++-+--++-+--\ | | | | | | | || |
|
||||||
|
|| || | || || || | | | | | | | | | | || || |/-++-+--+---+-+-+-\ | | | | || |
|
||||||
|
|| /------++-----+-++-----\|| || | | | | | | | /--+----+-+-----++--++-++-++-+--+---+-+-+-+---+--\ | | | || |
|
||||||
|
||/+------++-----+-++----\||\-++---+--+------+-----+--------+-+------------+-+--+----/ | || /++-++-++-+--+---+-+-+-+---+--+--------+\| | || |
|
||||||
|
|||| || | || ||| || | | | |/-------+-+------------+\| | | || ||| || || | | /-+-+-+-+---+--+--------+++--+-----++\|
|
||||||
|
|||| || | || ||| || | | | || |/+------------+++--+------+-----++-+++-++-++-+--+-+-+\| | | | | ||| | ||||
|
||||||
|
|||| /++-----+-++--\ ||| || | | | || ||| ||| /+------+-----++-+++-++-++-+--+-+-+++-+-+---+--+--------+++-\| ||||
|
||||||
|
|||| ||| | || | ||| || | | | || ||\------------+++-++------+-----++-+++-++-++-+--+-+-+++-+-+---+--+--------+++-++-----+++/
|
||||||
|
|||| ||| | || | ||| || | | | || || /----------+++-++------+-----++-+++-++-++-+--+-+-+++-+-+---+--+--------+++-++---\ |||
|
||||||
|
|||| /---+++-----+-++--+-+++--++---+--+------+-----++-------++--+------\ ||| || | || ||| || || | | | ||| | | | | ||| || | |||
|
||||||
|
|||| | ||| | || | ||| || | | |/----++-------++--+------+---+++-++------+-----++-+++-++-++-+--+-+-+++-+-+---+\ | ||| || | |||
|
||||||
|
|||| | ||| | || | ||| || | | || || /----++--+------+---+++-++\ | /--++-+++-++-++\| | | ||| | | || | ||| || | |||
|
||||||
|
|||| | ||| | || | ||| || | | || || | || | | ||| ||| | | || ||| || |||| | | ||| |/+---++-+--------+++\|| | |||
|
||||||
|
|||| | ||| | || | ||| || | | || || | || /+------+---+++-+++---\ | | || ||| || |||| | | ||| ||| || | |||||| | |||
|
||||||
|
|||| | |\+-----+-+/ | ||| || | | || || | /++-++------+-\ ||| ||| | | | || ||| ||/++++--+-+-+++-+++---++-+------\ |||||| | |||
|
||||||
|
|||| | | | | | | ||| || | | /--++----++--+---+++-++------+-+-+++-+++---+-+--+--++-+++-+++++++--+-+-+++-+++---++-+\ | |||||| | |||
|
||||||
|
|||| | | | | | | ||| || | | | || || | ||| || | | ||| ||| | | | || ||| ||||||\--+-+-+++-+++---++-++-----+-/||||| | |||
|
||||||
|
|||| | | | | | | ||| || | | | || || | ||| || | | ||| ||| | | | || ||| |||||| | | ||| ||| || || | ||||| | |||
|
||||||
|
|||| | | | | | | ||| || | /+---+--++----++--+---+++-++------+-+-+++-+++---+-+--+--++-+++-++++++---+-+\||| ||| || || | ||||| | |||
|
||||||
|
|||| | | | /--+-+---+-+++--++---+-++---+--++----++--+---+++-++------+-+-+++-+++---+-+\ | || ||| |||||| | ||||| ||| || || | ||||| | |||
|
||||||
|
|||| | | | | | | | ||| || /-+-++---+--++----++--+---+++-++------+-+-+++-+++---+-++-+--++\||| |||||| | ||||| ||| || || | ||||| | |||
|
||||||
|
||\+-+---+-+--+--+-+---+-/|| || | | || /-+--++----++--+---+++-++------+-+-+++-+++---+-++-+--++++++-++++++---+\||||| ||| || || | ||||| | |||
|
||||||
|
|| | | | | | | | | || || | | || | | || || | ||| || | | |||/+++---+-++-+--++++++-++++++---+++++++-+++---++-++-\ | ||||| | |||
|
||||||
|
|| | | | | /+--+-+---+--++--++-+-+-++-+-+--++\ |\--+---+++-++------+-+-+/||||| | || | |||||| |||||| ||||||| ||| || || | | ||||| | |||
|
||||||
|
|| | | | | || | | | || || | | ||/+-+--+++---+---+---+++-++------+-+-+-+++++---+-++-+--++++++-++++++---+++++++-+++---++-++-+---+--+++++\ | |||
|
||||||
|
|| | | | | || | | | || || | | |||| | ||| | | ||| || | | | ||||| | || | |||||| |||||| ||||||| ||| || || | | |||||| | ^||
|
||||||
|
|| | | | | || | | | || || | | |||| | ||| | | ||| || | | | ||||| |/++-+--++++++-++++++---+++++++-+++--\|| || | | |||||| | |||
|
||||||
|
|| | | | | || | | | || || | | |||| | ||| | | ||| || | | | ||||| |||| | |||||| ||||||/--+++++++-+++--+++-++-+---+--++++++--+-+++\
|
||||||
|
||/+-+---+-+-++--+-+--\| || || | | |||v | ||| | | ||| || /---+-+-+-+++++---++++-+--++++++-+++++++--+++++++-+++--+++\|| | | |||||| | ||||
|
||||||
|
|||| | | |/++--+-+--++--++--++-+-+-++++-+--+++---+---+---+++-++--+-->+-+-+-+++++---++++-+-\|||||| ||\++++--+++++++-+++--++++++-+---/ |||||| | ||||
|
||||||
|
|||| | | |||| | | || || || | | |||| | ||| | | ||| || | | | | ||||| |||| | ||||||| || \+++--+++++++-+++--++++++-+------++++++--+-+/||
|
||||||
|
|||| | | |||| | | || || || | | |||| | ||| | | ||| || | | | | ||||| |||| | ||||||| || ||| ||||||| ||| |||||| | |||||| | | ||
|
||||||
|
|||| | | |||| | | || ||/-++-+-+-++++-+--+++---+---+---+++-++--+---+-+-+-+++++---++++-+-+++++++-++--+++--+++++++-+++--++++++-+-----\|||||| | | ||
|
||||||
|
|||| | | |||| | | || ||| || |/+-++++-+--+++---+---+---+++-++--+---+-+-+-+++++---++++-+-+++++++-++--+++--+++++++-+++--++++++-+----\||||||| | | ||
|
||||||
|
|||| | | ||||/-+-+--++--+++-++-+++-++++-+--+++---+--\| ||| || | | | | ||||| |||| | ||||||\-++--+++--+++++++-+++--++++++-+----++++++/| | | ||
|
||||||
|
|||| | | ||||| | | || ||| || ||| |||| | ||| | /++---+++-++--+---+-+-+-+++++---++++-+-++++++--++--+++\ ||||||| ||| |||||| | |||||| v | | ||
|
||||||
|
|||| | | ||||| | | || ||| ||/+++-++++-+--+++---+-+++---+++-++--+---+-+-+-+++++\ |||| | |||||| || |||| ||||||| ||| |||||| | |||||| | | | ||
|
||||||
|
|||| | | ||||| | | || ||| |||||| |||| | ||| |/+++---+++-++--+---+-+-+-++++++--++++-+-++++++--++--++++-+++++++-+++--++++++-+----++++++-+-\| | ||
|
||||||
|
|||| | | ||||| | | || ||| \+++++-++++-+--+++---+++++---+++-++--+---+-+-+-++++++--++++-+-++++++--++--++++-+++++++-+++--+/|||| | |||||| | || | ||
|
||||||
|
||\+-+---+-+++++-+-+--/| ||| ||||| |||| | ||| ||||| ||| || | | | | |||||| |||| | |||||| || ||\+-+++++++-+++--+-++++-+----++++++-+-++-+-+/
|
||||||
|
|| | | | ||||| \-+---+--+++--+++++-++++-+--+++---+++++---+++-++--+---+-+-+-++++++--++++-+-++/||| || || | ||||||| ||| | |||| | |||||| | || | |
|
||||||
|
|| | | | |\+++---+---+--+++--+++++-++++-+--+++---+++++---+++-++--+---+-+-+-++++++--++++-+-/| ||| || || | ||||||| ||| | |||| | |||||| | || | |
|
||||||
|
|| | | /-+-+-+++---+---+--+++--+++++-++++-+--+++---+++++---+++-++--+---+-+-+-++++++--++++\| | ||| || || | ||||||| ||| | |||| | |||||| | || | |
|
||||||
|
|| | | | | | ||| | | ||| ||||| |||| | ||| ||||| |||/++--+---+-+-+-++++++-\|||||| | |||/-++--++-+-+++++++-+++--+-++++-+\ |||||| | || | |
|
||||||
|
|| | | | | | ||| | | ||| ||||| |||| | ||| ||||| |||||| | | | |/++++++-+++++++--+-++++-++--++-+-+++++++-+++--+-++++-++---++++++\| || | |
|
||||||
|
|| | | | | | ||| | | ||| ||||| |||| | ||| ||||| |||||| | | | |||||||| ||||||| | |||| || || | ||||||| ||| | |||| || |||||||| || | |
|
||||||
|
|| | | | | | ||| | | ||| ||||| |||| | ||| ||||| |||||| \---+-+-++++++++-+++++++--+-++++-++--++-+-+++++++-+++--+-+/|| || |||||||| || | |
|
||||||
|
|| | | | | | ||| | | ||| ||||| |||| | ||| ||||| |||||| | | |||||||| ||||||| | |||| || || | ||||||| \++--+-+-++-++---++++++++-++-/ |
|
||||||
|
|| | | | | | ||| | | |||/-+++++-++++\| ||| ||||| |||||| | | \+++++++-+++++++--+-++++-++--++-+-++++/|| || | | || || |||||||| || |
|
||||||
|
|| | | | | | ||| | | |||| ||||| |||||| ||| ||||| ||\+++------+-+--+++++++-+++++++--+-++++-++--++-+-++++-/| || | | || || |||||||| || |
|
||||||
|
|| |/+-+-+-+-+++---+---+--++++-+++++-++++++--+++---+++++---++-+++------+-+--+++++++-+++++++--+-++++\|| || | |||| | || | | || ^| |||||||| || |
|
||||||
|
||/+++-+-+-+-+++---+---+\ |||| ||\++-++++++--+++---+++++---++-+++------+-+--+++++++-+++++++--+-/|||||| || | |||| | || | | || || |||||||| || |
|
||||||
|
\+++++-+-+-+-+++---+---++-++++-++-++-++++++--+++---+++++---++-+++------+-+--+++++++-+++++++--+--++++/| || | |||| | || | | || || |||||||| || |
|
||||||
|
||||| | | \-+++---+---++-++++-++-++-++++++--+++---+++++---++-+++------+-+--+++++++-+++++++--+--++++-+--++-+-/||| | || | | || || |||||||| || |
|
||||||
|
||||| | | ||| | || |||| || || |||||| ||| ||||| || ||| | | ||||\++-+++++++--+--++++-+--/| | ||| | || | | || || |||||||| || |
|
||||||
|
|||||/+-+---+++---+---++-++++-++-++-++++++--+++--\||||| || ||| | | |||| || ||||||| | |||| | | | ||| | || | | || || |||||||| || |
|
||||||
|
||||||| | ||| | || |||| || \+-++++++--+++--++++++---++-+++------+-+--++++-++-+++++++--+--++++-+---+-+--+++--+--++--+-+-++-++---/||||||| || |
|
||||||
|
||||||| | ||| | || |||| || | |||||| ||| |||||| || |||/-----+-+--++++-++-+++++++--+--++++-+---+-+--+++--+--++--+-+-++\|| ||||||| || |
|
||||||
|
||||||| | ||| | || |||| || | |||||| ||| |||\++---++-++++-----+-+--++++-++-+++++++--+--++++-+---+-/ ||| | || | | ||||| ||||||| || |
|
||||||
|
||||||| | ||| | || |||| \+--+-++++++--+++--+++-++---++-++++-----+-+--++++-++-+++++++--+--++++-+---+----+++--/ || | | ||||| ||||||| || |
|
||||||
|
||||||| | ||| v || |||| | | |||||| |\+->+++-++---++-++++-----+-+--++++-++-+++++++>-+--++++-+---+----+++-----++--+-/ ||||| ||||||| || |
|
||||||
|
||||||| | ||| \---++-++++--+--+-++++++--/ | ||| || || |||| | | |||| || ||||||| | |||| | | ||| || | ||||| ||||||| || |
|
||||||
|
||||||| | /+++-------++-++++--+--+-++++++----+--+++-++---++-++++-----+-+--++++-++-+++++++--+--++++-+---+--\ ||| || | ||||| ||||||| || |
|
||||||
|
||||||| |/-++++-------++-++++--+--+-++++++----+--+++-++\ || |||| /-+-+--++++-++-+++++++--+--++++-+\ | | ||| || | ||||| ||||||| || |
|
||||||
|
|\+++++-++-++++-------+/ |||| | | |||||| | ||| ||| || ||\+---+-+-+--++++-++-+++++++--+--++++-++--+--+-+++-----++--+---+++++----+++++++-+/ |
|
||||||
|
| ||||| || |||| | |||| | | |||||| | ||| ||| || || | | | | |||| || ||||||\--+--++++-++--/ | ||| || | ||||| ||||||| | |
|
||||||
|
| ||||| || |||| /--+--++++--+--+-++++++----+--+++-+++--++\|| | | | | |||| || |||||| | |||| || | ||| || | ||||| ||||||| | |
|
||||||
|
|/+++++-++\|||| | v |||| | |/++++++----+--+++-+++--+++++-+---+-+-+--++++-++-++++++---+--++++-++-----+-+++-----++-\| ||||| ||||||| | |
|
||||||
|
||||||| ||||||| | | |||| | |||||||| /+--+++-+++--+++++\| | | | |||| || |||||| | |||| \+-----+-+++-----+/ || ||||| ||||||| | |
|
||||||
|
||||||| ||||||| | | |||| | |||||||| || ||| ||| ||||\++---+-+-+--++++-++-+/|||| /+--++++--+-----+-+++-----+--++\ ||||| ||||||| | |
|
||||||
|
||||||| ||||||| | | |||| | |||||||| || ||| ||| |||| || | | | |||| || | |||| || |||| | /---+-+++---\ | ||| ||||| ||||||| | |
|
||||||
|
||||||| ||||||| |/-+--++++--+\ |||||||| || ||| ||| |||| || | | | |||| || | |||| || |||| | | /-+-+++---+-+--+++--+++++----+++++++\| |
|
||||||
|
||||||| ||||||| || | |||| || ||||||||/--++--+++-+++--++++-++---+-+-+--++++-++-+-++++--++--++++--+-+-+-+-+++---+-+--+++--+++++----+++++++++-\ |
|
||||||
|
||||||| ||||||| /-++-+--++++--++-+++++++++--++--+++-+++--++++-++---+-+-+--++++-++-+-++++--++--++++--+-+-+-+-+++---+-+--+++\ ||||| ||||||||| | |
|
||||||
|
||||||| ||||||| | || | |||| || ||||||||| || ||| |\+--++++-++---+-+-+--++++-/| | |||| || |||| | | | | ||| | \--++++-+++++----+++/||||| | |
|
||||||
|
||||||| ||||||| | || | |||| || ||||||||| || ||| | | |||| || /+-+-+--++++-\| | |||| || \+++--+-+-+-+-+++---+----++++-+++++----+/| ||||| | |
|
||||||
|
||||||| ||||||| | || | |||| || ||||||||| || |\+-+-+--++++-++--++-+-+--++++-++-+-++++--+/ ||| | | | | ||| | |||| ||||| | | ||||| | |
|
||||||
|
||||||| ||||||| /+-++-+--++++--++-+++++++++--++--+-+-+-+--++++-++--++-+-+-\\+++-++-+-++++--+----+++--+-+-+-+-+++---+----++++-+++++----+-+-+/||| | |
|
||||||
|
||||||| ||||||| || || | |||| || ||||||||| || | | | | |||\-++--++-+-+-+-+++-++-/ |\++--+----+++--+-+-+-+-+++---+----++++-+++++----+-/ | ||| | |
|
||||||
|
||||||| ||||||| || || | |||| || ||||||||| ||/-+-+-+-+--+++--++--++-+\| | ||| || | || | ||| | | | | ||| | |||| ||||| | | ||| | |
|
||||||
|
||||||| ||||||| || || | |\++--++-+++/||||| ||| | | | | ||| || || ||| | ||| || | || | /--+++--+-+-+-+-+++---+---\|||| ||||| | | ||| | |
|
||||||
|
||||||| |||||||/++-++-+--+-++--++-+++-+++++--+++-+-+-+-+--+++--++--++-+++-+-+++-++---+-++-\| | ||| | | | | ||| |/--+++++-+++++----+---+-+++-+-\|
|
||||||
|
\++++++-++++++++++-++-+--+-++--++-+++-+++++--+++-+-+-+-+--+++--++--++-+++-+-+++-++---+-++-++-+--/|| | | | | ||| || ||||| ||||| | | ||| | ||
|
||||||
|
|||||| |||||||||\-++-+--+-++--++-+++-+++++--+++-+-+-+-+--+++--++--++-+++-+-+++-++---+-++-++-+---++--+-+-+-+-+++---++--++++/ ||||| | | ||| | ||
|
||||||
|
|||||| ||||||||| || | | v| || ||| ||||| ||| | | | | ||| || || ||| | ||| || | || || | || | | | | ||| || |||| ||||| | | ||| | ||
|
||||||
|
|||||| ||||||||| |\-+--+-++--+/ ||| ||||| ||| | | | | ||| || \+-+++-+-+++-/| | || || | || | | | | ||| || |||| ||||| | | ||| | ||
|
||||||
|
|||||| ||||||||| /+--+--+-++--+\ ||| ||||| ||| | | | | ||| || | ||| | ||| | | || || | || | |/+-+-+++---++-\|||| ||||| | | ||| | ||
|
||||||
|
|||||| ||||||||| || | | || || ||| ||||| \++-+-+-+-+--+++--/| | ||| | \++--+---+-++-++-+---++--+-+++-+-+++---++-+++++--/|||| | | ||| | ||
|
||||||
|
|||||| ||||||||| || | | || || ||| ||||| || | | | | ||| | \-+++-+--++--+---+-++-++-+---++--/ ||| | ||| || ||||| |||| | | ||| | ||
|
||||||
|
|||||| ||||\++++-++--+--+-++--++-+++-+++++---/| | | | | ||| |/----+++-+--++--+\ | || || | || ||| | ||| || ||||| |||| | | ||| | ||
|
||||||
|
|\++++-++++-++++-++--+--/ ||/-++-+++-+++++----+-+-+-+-+--+++---++----+++-+--++--++--+-++-++-+---++----+++-+-+++---++-+++++---++++----+--\| ||| | ||
|
||||||
|
| |||| |||| |||| || | ||| || ||| |\+++----+-+-+-+-+--+++---++----+++-+--++--++--+-++-++-+---++----+++-+-/|| || ||||| |||| | || ||| | ||
|
||||||
|
| |||| |||| ||\+-++--+----+++-++-+++-+-+++----+-+-+-+-+--+++---++----+++-+--++--++--+-++-/| | || ||| | \+---++-+++++---++++----+--++-+++-+-+/
|
||||||
|
| ||\+-++++-++-+-++--+----+++-++-+++-+-+++----+-/ | | | ||| || ||| | || || | || | | \+----+++-+---+---++-+++++---+++/ | || ||| | |
|
||||||
|
| || | |||| |\-+-++--+----+++-++-+++-+-+++----+---+-/ | |||/--++----+++-+--++--++--+-++--+-+----+----+++-+---+---++-+++++---+++-----+--++-+++-+-+-\
|
||||||
|
| || | |||| | | || | ||| || \++-+-+++----+---+---+--+/|| || ||| | || || | || | | | ||| | | || ||||| ||| | || ||| | | |
|
||||||
|
| || | |||| | | || | ||| || || | ||| | | | | || || ||| | \+--++--+-++--+-+----+----+++-+--<+---++-+++++---++/ | || ||| | | |
|
||||||
|
| || | |||| | | || | ||| || || | ||\----+---+---+--+-++--++----+++-+---+--++--+-++--+-+----+----+++-+---+---++-+++++---++------+--++-+++-/ | |
|
||||||
|
| || | |||| | | || | ||| || || | || | | | | || || ||| | | || | || | \----+----+++-+---+---++-+/||| || | || ||| | |
|
||||||
|
| || \-++++-+--+-++--+----+++-++--++-+-++-----+---+---+--+-++--++----+++-+---+--++--+-+/ | | ||| | | || | ||| || | || ||| | |
|
||||||
|
| || |||| | | || | ||| || || | || | | | | || || ||| | | || | | | | ||| | | || | ||| || | || ||| | |
|
||||||
|
| ||/--++++-+--+\|| | ||| || \+-+-++-----+---+---+--+-++--++----+++-+---+--++--+-+---+------+----+++-+---+---++-+-/|| ||/-----+--++-+++--\| |
|
||||||
|
| ||| |||| | |||| | |\+-++---+-+-/| | | | \-++--++----++/ | | || | | | | ||| | | || | || ||| | || ||| || |
|
||||||
|
| ||| |||| | |||| | | | || | | | | \---+----++--++----++--+---+--++--+-+---+------+----+++-+---+---++-+--++---+++-----+--++-++/ || |
|
||||||
|
| ||| |||| | /++++--+----+-+-++-\ | | | | | || || || | \--++--+-+---+------+----+++-+---+---++-+--++---+++-----+--+/ || || |
|
||||||
|
| ||| |||| \-+++++--+----+-+-++-+-+-+--+-----+-------+----++--++----++--+------++--+-/ | | ||| | | || | || /-+++-----+--+--++---++\|
|
||||||
|
| ||| |||| ||||| | | | || | \-+--+-----+-------+----++--++----++--+------++--+-----+------+----+++-+---/ || | || | ||| | | || ||||
|
||||||
|
| ||^ |||\---+++++--+----+-+-++-+---+--+-----+-------+----++--++----++--+------++--+-----+------+----+++-/ || | || | ||| | | || ||||
|
||||||
|
| ||| ||| ||||| | /+-+-++-+---+--+-----+-------+----++--++----++--+------++--+-----+------+--\ ||| || | || | ||| | | || ||||
|
||||||
|
| ||| \++----+++++--/ || | || | | | \-------+----++--++----+/ | || | | | | |\+---------++-/ || | ||| | | || ||||
|
||||||
|
| ||| || |\+++------++-+-++-+---+--+-------------+----++--++----+---/ || | | /+--+-+-+---------++----++-+-+++-----+--+--++\ ||||
|
||||||
|
| ||| || | ||| || | || | \--+-------------+----++--++----+----------++--+-----+-----++--+-+-+---------++----++-+-+++-----+--+--/|| ||||
|
||||||
|
| ||| \+----+-+++------++-+-++-+------+-------------/ || || | || | | || | | | || || | ||| /---+--+---++-\||||
|
||||||
|
| |\+----+----+-+++------++-+-++-+------+------------------++--++----/ || | | || | | | || || | ||| | | | || |||||
|
||||||
|
| | | | | ||| || | || | | || || || | | || | | \----<----++----++-+-+++-+---+--+---/| |||||
|
||||||
|
| | | | | ||| || | || | | || \+---------------++--+-----+-----++--+-+-----------++----++-+-+/| | | | | |||||
|
||||||
|
| | \----+----+-/\+------++-+-+/ | \------------------++---+---------------++--+-----+-----++--+-+-----------++----++-+-/ | | | | | |||||
|
||||||
|
| | | /+---+------++-+-+--+-------------------------++---+---------------++--+---\ \-----++--+-+-----------++----+/ | \-+---+--+----+-+/|||
|
||||||
|
| | | || | || | | | || | || | | || | | || | | | | | | | |||
|
||||||
|
| | | || \------++-+-+--+-------------------------/| | || | | \+--+-+-----------++----+--+-----+---+--+----/ | |||
|
||||||
|
| | | || \+-+-+--+--------------------------+---+---------------++--+---+--------+--/ | || | | | | | | |||
|
||||||
|
\-+------/ || | | | | | | || | | | | || | | \---+--+------/ |||
|
||||||
|
| || | | \--+--------------------------+---+---------------/| | | | | || | | | | |||
|
||||||
|
\----------++-----------+-+----+--------------------------+---+----------------+--+---+--------/ | || | | | | |||
|
||||||
|
|| | | | \---+----------------+--+---+-------------+-----------++----+--+---------+--+--------++/
|
||||||
|
|| | \----+------------------------------+----------------+--+---+-------------+-----------++----+--+---------+--/ ||
|
||||||
|
|| | | | | \---+-------------+-----------++----/ | | ||
|
||||||
|
|| | | | | | | || | | ||
|
||||||
|
|| \------+------------------------------+----------------+------+-------------+-----------++-------+---------/ ||
|
||||||
|
|\---------<--------/ \----------------/ | | |\-------+---------------------/|
|
||||||
|
\--------------------------------------------------------------------------/ \-----------/ \----------------------/
|
@ -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)
|
Loading…
Reference in New Issue