Day 12 + 13

master
Alfred Melch 6 years ago
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…
Cancel
Save