day 13
This commit is contained in:
parent
c12f177893
commit
e25a2f7a93
|
@ -0,0 +1,200 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class Track(Enum):
|
||||||
|
BLANK = 0
|
||||||
|
CORNER1 = 1
|
||||||
|
CORNER2 = 2
|
||||||
|
STRAIGHT = 3
|
||||||
|
INTERSECTION = 4
|
||||||
|
CART = 5
|
||||||
|
|
||||||
|
|
||||||
|
class Direction(Enum):
|
||||||
|
UP = 0
|
||||||
|
RIGHT = 1
|
||||||
|
DOWN = 2
|
||||||
|
LEFT = 3
|
||||||
|
|
||||||
|
|
||||||
|
VERTICAL = set([Direction.UP, Direction.DOWN])
|
||||||
|
|
||||||
|
|
||||||
|
def dir2offset(direction):
|
||||||
|
return {Direction.UP: (0, -1),
|
||||||
|
Direction.DOWN: (0, 1),
|
||||||
|
Direction.LEFT: (-1, 0),
|
||||||
|
Direction.RIGHT: (1, 0)}[direction]
|
||||||
|
|
||||||
|
|
||||||
|
def applydir(coords, direction):
|
||||||
|
offset = dir2offset(direction)
|
||||||
|
return (coords[0] + offset[0],
|
||||||
|
coords[1] + offset[1])
|
||||||
|
|
||||||
|
|
||||||
|
def char2track(char):
|
||||||
|
if char in set("^v<>"):
|
||||||
|
return Track.CART
|
||||||
|
elif char in set("|-"):
|
||||||
|
return Track.STRAIGHT
|
||||||
|
elif char == "/":
|
||||||
|
return Track.CORNER1
|
||||||
|
elif char == "\\":
|
||||||
|
return Track.CORNER2
|
||||||
|
elif char == "+":
|
||||||
|
return Track.INTERSECTION
|
||||||
|
elif char == " ":
|
||||||
|
return Track.BLANK
|
||||||
|
else:
|
||||||
|
raise Exception("Invalid char:", repr(char))
|
||||||
|
|
||||||
|
|
||||||
|
def cart2dir(char):
|
||||||
|
if char == "^":
|
||||||
|
return Direction.UP
|
||||||
|
elif char == ">":
|
||||||
|
return Direction.RIGHT
|
||||||
|
elif char == "v":
|
||||||
|
return Direction.DOWN
|
||||||
|
elif char == "<":
|
||||||
|
return Direction.LEFT
|
||||||
|
else:
|
||||||
|
raise Exception("Invalid cart direction:", repr(char))
|
||||||
|
|
||||||
|
|
||||||
|
def dir2char(direction):
|
||||||
|
return {Direction.UP: "^",
|
||||||
|
Direction.RIGHT: ">",
|
||||||
|
Direction.DOWN: "v",
|
||||||
|
Direction.LEFT: "<"}[direction]
|
||||||
|
|
||||||
|
|
||||||
|
def track2char(track):
|
||||||
|
return {Track.STRAIGHT: "+",
|
||||||
|
Track.CORNER1: "/",
|
||||||
|
Track.CORNER2: "\\",
|
||||||
|
Track.INTERSECTION: "@",
|
||||||
|
Track.BLANK: " "}[track]
|
||||||
|
|
||||||
|
|
||||||
|
class Cart(object):
|
||||||
|
def __init__(self, coord, direction):
|
||||||
|
self.coord = coord
|
||||||
|
self.direction = direction
|
||||||
|
self.turn = 0
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "<Cart coord=({}) ({})>".format(self.coord, id(self))
|
||||||
|
|
||||||
|
|
||||||
|
def printboard(board, carts):
|
||||||
|
dimX = 0
|
||||||
|
dimY = 0
|
||||||
|
for x, y in board.keys():
|
||||||
|
dimX = max(dimX, x)
|
||||||
|
dimY = max(dimY, y)
|
||||||
|
|
||||||
|
cartskeyed = {cart.coord: cart for cart in carts}
|
||||||
|
|
||||||
|
for y in range(0, dimY + 1):
|
||||||
|
for x in range(0, dimX + 1):
|
||||||
|
if (x, y) in cartskeyed:
|
||||||
|
print(dir2char(cartskeyed[(x, y)].direction), end="")
|
||||||
|
else:
|
||||||
|
print(track2char(board[(x, y)]), end="")
|
||||||
|
pass
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
|
||||||
|
|
||||||
|
def advancecart(cart, carts, board):
|
||||||
|
# find the coordinate the cart will advance to
|
||||||
|
newcoord = applydir(cart.coord, cart.direction)
|
||||||
|
|
||||||
|
# check if the new square is already occupied
|
||||||
|
for c in carts:
|
||||||
|
if newcoord == c.coord:
|
||||||
|
return True, c # A collision happened!
|
||||||
|
|
||||||
|
# advance the cart in the direction of travel
|
||||||
|
cart.coord = newcoord
|
||||||
|
|
||||||
|
# deal with implications of the new square it landed on
|
||||||
|
newsquare = board[cart.coord]
|
||||||
|
|
||||||
|
if newsquare == Track.STRAIGHT:
|
||||||
|
pass # Do nothing
|
||||||
|
elif newsquare == Track.CORNER1: # /
|
||||||
|
# class Direction(Enum):
|
||||||
|
# UP = 0 -> 1
|
||||||
|
# RIGHT = 1 -> 2
|
||||||
|
# DOWN = 2 -> 3
|
||||||
|
# LEFT = 3 -> 0
|
||||||
|
cart.direction = Direction((cart.direction.value + (1 if cart.direction in VERTICAL else -1)) % 4)
|
||||||
|
elif newsquare == Track.CORNER2: # \
|
||||||
|
# class Direction(Enum):
|
||||||
|
# UP = 0 -> 3
|
||||||
|
# RIGHT = 1 -> 0
|
||||||
|
# DOWN = 2 -> 1
|
||||||
|
# LEFT = 3 -> 2
|
||||||
|
cart.direction = Direction((cart.direction.value + (-1 if cart.direction in VERTICAL else 1)) % 4)
|
||||||
|
elif newsquare == Track.CART:
|
||||||
|
raise Exception("wtf")
|
||||||
|
elif newsquare == Track.INTERSECTION:
|
||||||
|
# class Direction(Enum):
|
||||||
|
# UP = 0
|
||||||
|
# RIGHT = 1
|
||||||
|
# DOWN = 2
|
||||||
|
# LEFT = 3
|
||||||
|
# left, straight, right
|
||||||
|
# turn = 0, subtract
|
||||||
|
# turn = 1, do nothing
|
||||||
|
# turn = 2, add
|
||||||
|
diff = {0: -1, 1: 0, 2: 1}[cart.turn]
|
||||||
|
cart.direction = Direction((cart.direction.value + diff) % 4)
|
||||||
|
cart.turn = (cart.turn + 1) % 3
|
||||||
|
elif newsquare == Track.BLANK:
|
||||||
|
raise Exception("wtf")
|
||||||
|
else:
|
||||||
|
raise Exception("wtf!")
|
||||||
|
|
||||||
|
return False, None # No collision
|
||||||
|
|
||||||
|
|
||||||
|
def loadboard(fname):
|
||||||
|
board = {}
|
||||||
|
carts = []
|
||||||
|
with open(fname) as f:
|
||||||
|
y = 0
|
||||||
|
for line in f.readlines():
|
||||||
|
for x, char in enumerate(line.rstrip("\n")):
|
||||||
|
c = char2track(char)
|
||||||
|
if c == Track.CART:
|
||||||
|
carts.append(Cart((x, y), cart2dir(char)))
|
||||||
|
c = Track.STRAIGHT
|
||||||
|
board[(x, y)] = c
|
||||||
|
y += 1
|
||||||
|
# printboard(board, carts)
|
||||||
|
return board, carts
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
board, carts = loadboard("input.txt")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
# Put carts in processing order
|
||||||
|
carts.sort(key=lambda cart: cart.coord)
|
||||||
|
for cart in carts:
|
||||||
|
collision, crashee = advancecart(cart, carts, board)
|
||||||
|
if collision:
|
||||||
|
print("Collision at", crashee.coord)
|
||||||
|
return
|
||||||
|
# printboard(board, carts)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
|
||||||
|
from a import loadboard, advancecart
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
board, carts = loadboard("input.txt")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
# Put carts in processing order
|
||||||
|
carts.sort(key=lambda cart: cart.coord)
|
||||||
|
# this time we separately track cars remaining to be processed in the tick, so that in the event of a collision
|
||||||
|
# we can remove the second cart from this queue,
|
||||||
|
toprocess = carts[:]
|
||||||
|
while toprocess:
|
||||||
|
cart = toprocess.pop(0)
|
||||||
|
collision, crashee = advancecart(cart, carts, board)
|
||||||
|
if collision:
|
||||||
|
# Remove both carts from the game
|
||||||
|
carts.remove(crashee)
|
||||||
|
carts.remove(cart)
|
||||||
|
try:
|
||||||
|
# Remove the cart we hit from the work queue, if possible
|
||||||
|
toprocess.remove(crashee)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
if len(carts) == 1:
|
||||||
|
print(carts[0].coord)
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -0,0 +1,150 @@
|
||||||
|
/---------------------\ /----------------<---------------------------------------------------------------------\
|
||||||
|
| | | /---------------------------\ |
|
||||||
|
/-------+---------------------+-----------+---------+---------------------------+------\ |
|
||||||
|
/----------+-------+---------------------+---\ /+---------+---------------------------+------+------\ |
|
||||||
|
/-+----------+-------+---------------------+---+------++---------+-------------------------\ | | | |
|
||||||
|
| | | | /------------------+---+------++---------+-----\ | | /----+------+---------------------------\ |
|
||||||
|
| | /------+-------+--+------------------+---+-\ || | | /----+-+-+----+------+----------------\ | |
|
||||||
|
| | | | /-----+--+------------------+---+-+----++---------+-----+--------------+----+-+-+----+---\ | | | |
|
||||||
|
| | | | | /+--+--------------\ | | | || /----+-----+--------------+----+-+-+----+---+--+----------------+---------\| |
|
||||||
|
| | | | | || | | | | | || | | | | | | | | | | | || |
|
||||||
|
| | | | | || | /-------+---+-\ | | || | | | | | | | | | | /-------+---------++------+---\
|
||||||
|
| | | | | || | | | | | | | || | | | /--------+----+-+-+----+---+\ | | | || | |
|
||||||
|
| | | | | || | | | | | | | || |/---+-----+\ | | | | | | || | | | || | |
|
||||||
|
| | | /-+-+----++--+------+-------+---+-+-+-+----++----++---+-----++--->+--------+----+-+-+----+---++-+-----\ | | || | |
|
||||||
|
| | | | | | /++--+------+-------+---+-+-+-+----++----++---+-----++----+--------+----+-+-+----+---++-+-----+--+-------+-\ || | |
|
||||||
|
| | /+----+-+-+---+++--+------+-------+---+-+-+-+----++-\ || | || | | | | | | || | | | | | || | |
|
||||||
|
| | || | | | ||| | | | | | | | || | /++---+-----++----+--------+----+-+-+-\ | || | | | | | || | |
|
||||||
|
| | || |/+-+---+++--+------+-------+---+-+-+-+----++-+-+++---+\ /-++----+--\ | | | | | | || | | | | |/------++--\ | |
|
||||||
|
| | || ||| |/--+++--+------+-------+---+-+-+-+----++\| ||| || | || | | /---+----+-+-+-+--+---++-+----\| | | || || | | |
|
||||||
|
| | || ||| || ||| |/-----+-------+---+-+-+-+----++++-+++---++--+-++----+--+-+---+----+-+-+-+--+---++-+----++--+-------+-++---\ || | | |
|
||||||
|
| | || ||| || |\+--++-----+-------/ | | | | |||| ||| v| | || | | | | | | | | |/--++-+----++--+-------+-++---+--++--+---+--\|
|
||||||
|
/+-+--++----+++-++--+-+--++-----+-----------+-+-+-+----++++-+++---++--+-++----+--+-+-\ \----+-+-+-+--++--++-+----++--+-------/ || | || | | ||
|
||||||
|
|| | /++----+++-++--+-+--++-----+-----------+-+-+-+----++++-+++---++--+-++---\| | | | | | | | || || | || | || | || | | ||
|
||||||
|
|| | ||| ||| || | | || | | | | |/---++++-+++---++--+-++---++--+-+-+------+-+-+-+--++--++-+----++--+---------++--\| || | | ||
|
||||||
|
|| | |||/---+++-++--+-+--++-----+-----------+-+-+-++---++++-+++---++--+-++---++--+-+-+---\ | | | | || || | || | || || || | | ||
|
||||||
|
|| | |||| ||| || | | || | | | | || |||| ||| || | ||/--++--+-+-+---+--+-+\| | || || | || | || || || | | ||
|
||||||
|
|| | |||| ||| || /+-+--++-----+-----------+-+-+-++---++++-+++---++--+-+++--++--+-+-+---+--+-+++-+--++--++-+----++--+-------\ || || || | | ||
|
||||||
|
|| | |||| ||| \+-++-+--++-----+-----------+-+-+-++---++++-+++---++--+-+++--++--+-+-+---+--+-+++-+--++--/| | || \-------+-++--++--++--+---+--+/
|
||||||
|
|| | |||| ||| |/++-+--++-----+-----------+-+-+-++---++++-+++---++--+-+++\ || | | | | | ||| | || | | || | || || || | | |
|
||||||
|
|| | |||| ||| |||| | || | | | | || |||| ||| || | |||| || | | | | | ||| | || | | || | || || || | | |
|
||||||
|
|| |/++++---+++--++++-+--++---\ | | | | || |||| ||| ||/-+-++++-++--+-+-+---+--+-+++-+--++---+-+----++----------+-++--++--++--+---+--+\
|
||||||
|
|| |||||| ||| |||| | || | | | | | || |||| |\+---+++-+-++++-++--+-+-+---+--+-+++-+--++---+-+----++----------+-++--++--/| | | ||
|
||||||
|
|| |||||| ||| |||| | || | | /--------+-+-+-++---++++-+-+---+++-+-++++-++--+-+-+---+-\| ||| | || | | || | || || | | | ||
|
||||||
|
|| |||||| ||| |||| | /++---+-+--+--------+-+-+-++---++++-+-+---+++-+-++++-++--+-+-+---+-++-+++-+--++-\ | | || /--------+-++--++---+--+\ | ||
|
||||||
|
|| |||||| ||| |||| | ||| | | | /----+-+-+-++---++++-+-+---+++-+-++++-++--+-+-+---+-++-+++-+--++-+-+-+----++-+--------+-++--++---+--++--+-\||
|
||||||
|
|| |||||| ||| |||| | ||| | | | | | | | || /++++-+-+--\||| | |||| || |/+-+---+-++-+++-+--++-+-+-+----++-+--------+-++--++---+--++-\| |||
|
||||||
|
|| |||||| ||| |||| | ||| /+-+--+---+----+-+-+-++--+++++-+-+--++++-+-++++-++--+++-+---+-++-+++-+--++-+-+-+----++-+--\ | || || | || || |||
|
||||||
|
|| |||||| /-+++--++++-+-+++--++-+--+---+----+-+\| || ||||| | | |||| | |||| || ||| | | || ||| | || | | | || | | /-+-++--++---+\ || || |||
|
||||||
|
|| |||||| | ||| |||| \-+++--++-+--+---+----/ ||| || ||||| | | |||| | |||| || ||| | | || ||| | || | | | || | | | | || || || || || |||
|
||||||
|
|| ||||\+-+-+++--++++---+++--++-+--+---+>-----+++-/| ||||| | | |||\-+-++++-++--+++-+---+-++-+++-+--++-+-+-+----++-+--+---+-+-++--++---++-++-++-++/
|
||||||
|
|| |||| | | ||| |||| ||| || | | |/-----+++--+--+++++-+-+--+++--+-++++-++--+++-+---+-++-+++-+--++-+-+-+-\ || | | | | || || || || || ||
|
||||||
|
|| |||| | | ||| |\++---+++--++-+--+---++-----+++--+--+++++-+-+--+++--+-+++//++--+++-+---+-++-+++-+--++-+-+-+-+--++-+--+---+\| || || || || || ||
|
||||||
|
|| |||| | | ||| | |\---+++--++-+--+---++-----+++--+--+++++-+-+--+++--+>+++-+++--+++-+---+-++-+++-+--++-+-+-+-+--++-+--+---+++-/| || || || || ||
|
||||||
|
|| |||| | | ||| | | ||| || | | /-++-----+++--+--+++++-+-+--+++--+-+++-+++--+++-+---+-++-+++-+--++-+-+-+-+--++-+--+---+++--+--++-<-++-++-++\||
|
||||||
|
|| |||\-+-+-+++--+-+----+++--++-+--+-+-++-----+++--+--++++/ | | ||| | ||| ||| ||| | | || ||| | || |/+-+-+--++-+--+---+++--+--++---++-++-+++++\
|
||||||
|
|| ||| | | ||| | | ||| || | | | || ||| | |||| \-+--+++--+-+++-+++--+++-+---+-++-+++-/ || ||| | | || | | ||| | || || || ||||||
|
||||||
|
|| ||| | | ||| | | ||| || | | | ||/----+++--+--++++----+\ ||| | ||| ||| |||/+---+-++-+++----++-+++-+-+--++-+--+---+++--+--++--\|| || ||||||
|
||||||
|
|| ||| | | ||| | | ||| || | |/+-+++----+++--+--++++----++-+++--+-+++-+++--+++++---+-++-+++----++-+++-+-+--++-+--+---+++-\| || ||| || ||||||
|
||||||
|
|| \++--+-+-+++--+-+----+++--++-+--+++-+++----++/ | |||| || ||| \-+++-+++--/|||| | || ||| || ||| | | || | | ||| || || ||| || ||||||
|
||||||
|
|| || | | ||| | | ||| || | ||| ||| || | |||| || ||| ||| ||\---++++---+-++-+++----++-++/ | | || | | ||| || || ||| || ||||||
|
||||||
|
|| || | | ||| | | ||| || | ||| ||| || | |||| \+-+++----+/| \+----++++---+-++-+++----++-++--+-+--++-+--+---+/| || || ||| || ||||||
|
||||||
|
|| || /+-+-+++--+-+----+++--++-+--+++-+++----++---+--++++-----+-+++----+-+--+----++++---+\|| ||| || || | | || \--+---+-+-++--++--+++-+/ ||||||
|
||||||
|
|| || || | ||| | | /+++--++-+--+++-+++----++---+--++++-----+-+++----+-+--+----++++---++++-+++----++-++--+-+--++--\ | | | || || ||| | ||||||
|
||||||
|
|| || || | ||| | | |||| || | ||| ||| || | |||| | |\+----+-+--+----++++---++++-/|| || || | | || | | | | || || ||| | ||||||
|
||||||
|
|| || || | ||| | | /++++--++-+--+++-+++----++---+--++++-----+-+-+----+-+--+----++++---++++--++----++-++--+-+--++--+-+---+-+-++-\|| ||| | ||||||
|
||||||
|
|| || || | ||| | | ||||| || | ||| ||| || | |||| | | | | | | |||| |||| /++----++-++--+-+--++--+\| |/+-++-+++\ ||| | ||||||
|
||||||
|
|| || || | ||| | | ||||| || | ||| ||| || |/-++++-----+-+-+----+-+--+----++++---++++-+++\ || || | | || ||| ||| || |||| ||| | ||||||
|
||||||
|
|| || || | ||| | | /+++++--++-+--+++<+++----++---++-++++-----+-+-+----+-+--+----++++---++++-++++---++-++--+\| || ||| ||| || |||| ||| | ||||||
|
||||||
|
|| || || | ||| | | |||||| || | |\+-+++----++---++-++++-----+-+-+----+-+--+----++++---++++-++++---++-++--+++--++--+++---+++-/| |||| ||| | ||||||
|
||||||
|
|| || || | ||| | | |||\++--++-+--+-+-+++----++---++-++++-----+-+-+----+-+--+----++++---++++-++++---++-/| ||| || ||| ||| | |||| ||| | |^||||
|
||||||
|
|| || || | ||| | |/+++-++--++-+--+-+-+++----++---++-++++-----+-+-+----+-+--+----++++\ |||| |||| |\--+--+++--++--+++---+++--+-++++-+++-+--++++/|
|
||||||
|
|| || || | ||| | ||||| || || | | | ||| || || |||| | | | | | | ||\++--++++-++++---+---+--+++--++--+++---+++--+-++++-/|| | |||| |
|
||||||
|
|| || || | ||| | ||||| || || | | | ||| || || |||| | | | | | | || || |||| |||| | | ||| || ||| ||| | |||| || | |||| |
|
||||||
|
|| || || | \++--+-+++++-++--++-+--+-+-+++----++---++-++++-----+-+-+----+-+--+----++-++--++++-++++---+---+--+++--+/ ||| ||| | |||| || | |||| |
|
||||||
|
|| || || | || | ||||| || || | | | ||| || || |||| | | | | | | || || |||| |||| | | ||| | ||| ||| | |||| || | |||| |
|
||||||
|
|| ||/++-+--++--+-+++++-++--++-+--+-+-+++----++---++-++++-----+-+-+----+-+--+----++-++\ |||| |||| | | ||| | ||| ||| | |||| || | |||| |
|
||||||
|
|| \++++-+--++--+-+++++-++--+/ | | | ||| /--++---++-++++-----+-+-+----+-+--+----++-+++-++++-++++>--+---+--+++--+---+++---+++--+\|||| || | |||| |
|
||||||
|
|| |||| | || | ||||| |\--+--+--+-+-+++-+--++---++-++++-----+-+-+----+-+--+----++-+++-++++-++++---+---+--+++--+---+++---+++--++++/| || | |||| |
|
||||||
|
|| |||| | || | ||||| | | | | | ||\-+--++---++-++++-----/ | | |/+--+----++-+++\|||| |||| |/--+--+++--+---+++---+++--++++-+--++-+-\|||| |
|
||||||
|
|| |||| | || | ||||| | | | | | || |/-++---++-++++-------+-+----+++--+----++-++++++++-++++---++--+--+++--+---+++---+++--++++-+--++\| ||||| |
|
||||||
|
|| |||| | || | ||||| | /-+--+--+-+-++--++-++---++-++++-------+-+----+++--+----++-++++++++-++++---++--+--+++\ | ||| ||| |||| | |||| ||||| |
|
||||||
|
|\---++++-+--++--+-+++++-+-+-+--+--+-+-++--++-++---++-++++-------+-+----+++--+----++-+++++++/ |||| || | |||| | ||| ||| |||| | |||| ||||| |
|
||||||
|
| |||\-+--++--+-+++++-+-+-+--+--+-+-++--++-++---++-++++-------+-+----+++--+----++-++++/|| |||| || | |||| | ||| ||| |||| | |||| ||||| |
|
||||||
|
| |||/-+--++--+-+++++-+-+-+--+--+-+-++--++-++---++-++++-------+-+-\ ||| | || |||| || |||| || | |||| | ||| ||| |||| | |||| ||||| |
|
||||||
|
| |||| | || | ||||| | | | | | | || || || |\-++++-------+-+-+--+++--+----++-++++-++--+++/ || | |||| | ||| ||| \+++-+--+++/ ||||| |
|
||||||
|
| |||| | || | ||||| | | |/-+--+-+-++--++-++---+--++++-------+-+-+--+++--+----++-++++-++--+++----++--+--++++\| ||| ||| ||| | ||| ||||| |
|
||||||
|
| |||| | || | ||||| | | || | | | || || || /-+--++++-------+-+-+--+++--+--\ || |||| || ||| || | |||||| ||| ||| ||| | ||| ||||| |
|
||||||
|
| |||| | || | ||||| \-+-++-+--+-+-++--++-++-+-+--++++-------+-+-+--/|| | | || |||| || ||| || | |||||| ||| ||| ||| | ||| ||||| |
|
||||||
|
| |||| | || | ||||| | || | | | || || || | | |||| /-----+-+-+---++--+--+-++-++++-++--+++----++--+--++++++---+++---+++\ ||| | ||| ||||| |
|
||||||
|
| |||| | \+--+-+++++---+-++-+--+-+-++--++-++-+-+--++++-+-----+-/ | || | | || |||| || ||| /++--+--++++++\ ||| |||| /+++-+--+++\ ||||| |
|
||||||
|
| |||| \---+--+-+++++---+-++-+--+-+-++--++-+/ v | |\++-+-----+---+---++--+--+-++-++++-++--+++---+++--+--/|||||| ||| |||| |||| | |||| ||||| |
|
||||||
|
| |||| /--+--+-+++++--\|/++-+--+-+-++--++-+--+-+--+-++-+-----+---+---++--+--+-++-++++-++--+++---+++--+\ |||||| ||| |||| |||| | |||| ||||| |
|
||||||
|
| |||| | | /+-+++++--+++++-+--+-+-++--++-+--+-+--+-++-+-----+---+---++-\| | || |||| || ||| |||/-++--++++++-\||| |||| |||| | |||| ||||| |
|
||||||
|
| |||| | | || ||||| ||||| | | | || || | | | | || |/----+---+---++-++--+-++-++++-++--+++---++++-++--++++++-++++\ |||| |||| | |||| ||||| |
|
||||||
|
\----++++--+--+-++-+++++--+++++-+--+-+-++--++-+--+-+--+-++-++----+---+---++-++--+-++-/||| || ||| |||| || |||||| ||||| |||| |||| | |||| ||||| |
|
||||||
|
/++++--+--+-++-+++++\ |||\+-+--+-+-++--++-+--+-+--+-++-++----+---+---++-++--+-++--+++-++--+++---++++-++--++++++-+++/| |||| |||| | |||| ||||| |
|
||||||
|
|||||/-+--+-++-++++++-+++-+-+-\| \-++--++-+--+-+--+-++-++----+---+---++-++--+-++--+++-++--+++---++++-++--++++++-+++-+--++++-++++-+--++++-+++/| |
|
||||||
|
|||||| | | || |||||| |\+-+<+-++---++--++-+--+-+--+-++-++----+---+---++-++--+-++--+++-++--+++---++++-++--++/||| ||| | |||| |||| | |||| ||| | |
|
||||||
|
|||||| | | || |||||| | | \-+-++---++--++-+--+-+--+-++-++----+---+---++-++--+-++--+++-++--+++---++++-++--++-/|| ||| | |||| |||| | |||| ||| | |
|
||||||
|
|||||| | | || |||||| | | | || || || | \-+--+-++-++----+---+---++-++--/ || ||| || ||| |||| || || || ||| | |||| |||| | |||| ||| | |
|
||||||
|
|||||| | | || |||\++-+-+---+-++---++--++-+----+--+-++-++----+---+---++-++----++--+++-++--+++---++++-++--++--++-+++-+--++++-++/| | |||| ||| | |
|
||||||
|
|||||| | |/++-+++-++-+-+---+-++---++--++-+----+--+-++-++----+---+---++-++----++--+++-++\ ||| |||| || || || ||| | |||| || | | |||| ||| | |
|
||||||
|
|||||| | |||| ||| || | | | |\---++--++-+----+--+-++-++----+---+---++-++----++--+++-+/| ||| |||| || || || ||| | |||| || | | |||| ||| | |
|
||||||
|
|||||| | |||| ||| || | | | | || \+-+----+--+-++-++----+---+---++-++----++--+++-+-+-+++---++++-++--++--++-+++-+--++++-+/ | | |||| ||| | |
|
||||||
|
|||||| | |||| ||| || | | | | ||/--+-+----+--+-++-++---\| | || || || ||| | | ||| |||| || || || ||| | |||| | | | |||| ||| | |
|
||||||
|
|||||| | |||| ||| || | | | | ||| | | | | || || || | || || || ||| | | ||\---++++-++--++--++-+++-+--++++-+--+-+--/||| ||| | |
|
||||||
|
|||||| | |||| ||| |^ | | | | ||| | | | | || || || | || || || |||/+-+-++----++++-++--++--++-+++\| |||| | | | ||| ||| | |
|
||||||
|
/-++++++-+--++++\||| || | | | | ||| | | | | || || || | \+-++----++-<++/|| | || |||| || || || ||||| |||| | | | ||| ||| | |
|
||||||
|
| |||||| \--++++++++-++-/ | | | ||| /+-+----+--+-++-++---++---+---\| || /--++--++-++-+-++----++++-++--++--++-+++++--++++-+--+\| ||| ||| | |
|
||||||
|
| |||||| |||||||| || | | | ||| || | | | || || || | || || | || || || | \+----++++-++--++--++-++/|| |||| | ||| ||| ||| | |
|
||||||
|
| |||||| |||||||| || | | | /--+++-++-+----+--+-++-++---++---+\ || || | \+--++-++-+--+----++++-++--++--++-++-++--++++-+--+++---+++-+/| | |
|
||||||
|
| |||||| |||||||| || | | | | ||| || | | /+-++-++---++---++--++-++-+---+--++-++-+--+----++++-++--++--++-++-++--++++-+--+++---+++-+-+-+-+\
|
||||||
|
| |||||| |||||||| || | | | | ||| || | | || \+-++---++---++--++-++-+---+--++-++-+--+----++++-++--++--++-++-++--++++-+--+++---+++-+-/ | ||
|
||||||
|
| |||||| \+++++++-++---+---+-+-+--+++-++-+----+-++--+-++---++---++--++-++-+---+--++-++-+--+----+/|| || || || || || |||| | ||| ||| | | ||
|
||||||
|
| |||||| ||||||| || | | | | ||| || | | || | || || || || || | | || || | | | || || || || || || |||| | ||| ||| | | ||
|
||||||
|
| |||||| ||||||| || | | | | \++-++-+----+-++--+-++---++---++--++-++-+---+--++-++-+--+----+-++-++--++--++-++-++--++++-+--+++---+++-+---/ ||
|
||||||
|
| \+++++-----+++++++-+/ | \-+-+---++-++-/ | || | || || || || || | \--++-++-+--+----+-++-++--++--/| || || |\++-+--++/ ||| | ||
|
||||||
|
| |v|||/----+++++++-+----+--\ | | || || \-++--+-++---++---++--++-++-+------++-++-+--+----+-++-++--++---+-++-++--+-++-+--/| ||| | ||
|
||||||
|
| |||||| \++++++-+----+--+--+-+---++-++--------++--+-++---++---++--++-++-+------++-++-/ | | || || || | || || | || | | ||| | ||
|
||||||
|
| |||||| /-++++++-+----+--+--+-+---++-++--------++--+-++---++---++--++-++-+------++-++----+----+-++\|| || | || || | || | | ||| | ||
|
||||||
|
| |||||| | |||||| | | | | | \+-++--------++--+-++---++---++--++-++-+------++-++----+----+-+++++--+/ | || || | || | | ||| | ||
|
||||||
|
| |||||| | |||||| \----+--+--+-+----+-++--------++--+-++---++---++--++-++-+------++-++----+----+-+++++--+----+-+/ || | || | | ||| | ||
|
||||||
|
\--++++++---+-++/||| | | | | | || || | || || || || || | /--++-++----+----+-+++++--+----+-+--++\ | || | | ||| | ||
|
||||||
|
|||||| | || ||| | | | | | \+--------++--+-++---++---++--/| || | | || || | | ||||| | | | ||| | || | | ||| | ||
|
||||||
|
\+++++---+-++-+++------+--+--+-+----+--+--------++--+-++---++---++---+-+/ \---+--++-++----+----+-+++++--+----+-+--+++-+-++-+---/ ||| | ||
|
||||||
|
||||| /-+-++-+++------+--+--+-+----+--+--------++--+-++---++---++---+-+------+--++-++----+----+-+++++--+\ | | ||| \-++-+--------/|| | ||
|
||||||
|
||||| | | || ||| \--+--+-+----+--+--------++--+-++---++---++---+-+->----+--++-++----+----+-++++/ || | | ||| || | || | ||
|
||||||
|
||||| | | || ||| | | | | | |\--+-++---+/ ||/--+-+------+--++-++----+---\| |\++---++---+-/ ||| || | || | ||
|
||||||
|
/----+++++-+-+-++\||| | | | \--+--------+---+-++---/ ||| | | | || || | || | |\---++---+----+++---++-+---------++-+-----/|
|
||||||
|
| ||||| | | |||||| | | | | | | || ||| | | | || || | || | | || | ||| || | || | |
|
||||||
|
| ||||| | | |\++++---------+--+-+-------+--------+---/ || ||| | | | || || | || | | || | ||| || | || | |
|
||||||
|
| ||||| | | | |||| | | | | | || /----+++--+-+------+--++-++----+---++-+-+----++---+----+++---++-+------\ || | |
|
||||||
|
| ||||| | | | |||| | | | | \-----++---+----+++--+-+------+--++-++----+---++-+-+----++---+----+++---++-+------+--++-+------/
|
||||||
|
| ||||| | | | |||| | | \-------+--------------++---+----+/| | | | || || | || | | || | ||| /-++-+------+-\|| |
|
||||||
|
| ||||| | | | |||| | | | \+---+----+-+--+-+------+--++-++----+---++-+-+----++---+----+++-+-+/ | | ||| |
|
||||||
|
| ||||| | \-+-++++---------+--+---------+---------------+---+----+-+--+-+------+--++-++----+---++-+-/ || | ||| | | | | ||| |
|
||||||
|
| ||||| | | |||\---------+--+---------+---------------+---+----+-+--+-+------+--++-++----+---++-+------/| | ||| | | | | ||| |
|
||||||
|
|/---+++++-+---+-+++-\ | | /---+---------------+---+----+-+--+-+------+--++-++----+---++-+-------+---+----+++-+-+--+------+\||| |
|
||||||
|
\+---+++++-+---+-/|| | | | | | |/--+----+-+--+-+------+--++-++----+---++-+-----\ | | ||| | | | ||||| |
|
||||||
|
| \++++-+---+--++-+--------+--+-----+---+---------------++--+----+-+--+-+------+--+/ || | || | | | | ||| | | \------++++/ |
|
||||||
|
| |||| | | || | | | | | || | | | \-+------+--+--++----/ || | | | | ||| | | |||| |
|
||||||
|
| |||| | | || | | | v | || | | | | | | \+--------++-+-----+-+---+----/|| | | |||| |
|
||||||
|
| ||\+-+---+--++-+--------+--/ | | || | | | | | | | |\-+-----+-+---/ || | | |||| |
|
||||||
|
| || | | | \+-+--------+--------+---+---------------++--+----+-+----+------+--+---+--------+--+----<+-+---------++-+-/ |||| |
|
||||||
|
| || | | | \-+--------+--------+---+---------------++--+----+-+----+------+--/ | | | | | || \-----------++/| |
|
||||||
|
| \+-+-+---+-----+--------+--------+---+---------------++--+----+-+----+------+------/ | | | | || || | |
|
||||||
|
| | | | | | | \---+---------------++--+----+-+----+------+---------------+--+-----+-+---------++-------------+/ | |
|
||||||
|
| | | | | | | | || | | | | | | | | | || | | |
|
||||||
|
| | | \---+-----+--------+------------+---------------++--+----+-+----+------+---------------+--+-----+-/ || | | |
|
||||||
|
| | | \-----+--------+------------+---------------++--+----+-+----/ | | | | || | | |
|
||||||
|
| | | | | | /----------++--+----+-+-----------+---------------+--+-----+-----------++----\ | | |
|
||||||
|
| | | | | | | \+--+----+-+-----------+---------------+--+-----+-----------/| | | | |
|
||||||
|
\-----+-+-----------/ | | | \--+----+-+-----------+---------------+--+-----/ | | | | |
|
||||||
|
| | | \----+--------------+----+-+-----------+---------------+--+------------------+----+--------+--/ |
|
||||||
|
| | | | | | | \---------------+--+------------------/ | | |
|
||||||
|
\-+--------------------+-----------------+--------------+----/ | | | | | |
|
||||||
|
| | | | \---------------------------/ | | | |
|
||||||
|
\--------------------/ | \-------------------------------------+-----------------------+--------/ |
|
||||||
|
| \-----------------------+--------------/
|
||||||
|
\----------------------------------------------------------------------------/
|
Loading…
Reference in New Issue