From d93c9cfed66bc88e1ee0d39939159c908d67a553 Mon Sep 17 00:00:00 2001 From: dave Date: Tue, 18 Dec 2018 21:31:51 -0800 Subject: [PATCH] day 17 --- 17/a.py | 181 ++++++ 17/input.txt | 1537 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1718 insertions(+) create mode 100755 17/a.py create mode 100644 17/input.txt diff --git a/17/a.py b/17/a.py new file mode 100755 index 0000000..cac04b0 --- /dev/null +++ b/17/a.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python3 + + +import re +from enum import Enum + + +RE_LINE = re.compile(r'(y|x)=([0-9]+), (x|y)=([0-9]+)\.\.([0-9]+)') + + +class Tile(Enum): + WALL = 0 + FALL = 1 + SPREAD = 2 + STILL = 3 + + +class Dir(Enum): # Direction + UP = (0, -1) + DOWN = (0, 1) + LEFT = (-1, 0) + RIGHT = (1, 0) + + +def addpts(a, b): + return (a[0] + b[0], a[1] + b[1]) + + +def loadworld(fname): + world = {} + minX = 9999999999999 + minY = 9999999999999 + maxX = 0 + maxY = 0 + with open(fname) as f: + for line in f.readlines(): + axis, coord, axis2, range1, range2 = RE_LINE.search(line).groups() + coord = int(coord) + range2 = int(range2) + range1 = int(range1) + if axis == "x": + for y in range(range1, range2 + 1): + world[(coord, y)] = Tile.WALL + maxX = max(maxX, coord) + minX = min(minX, coord) + maxY = max(maxY, range2) + minY = min(minY, range1) + else: + for x in range(range1, range2 + 1): + world[(x, coord)] = Tile.WALL + maxX = max(maxX, range2) + minX = min(minX, range1) + maxY = max(maxY, coord) + minY = min(minY, coord) + return world, minX, maxX, minY, maxY + + +def printworld(world, minX, maxX, minY, maxY, fall, still): + padding = 5 + for y in range(minY - padding, maxY + 1 + padding): + for x in range(minX - padding, maxX + 1 + padding): + coord = (x, y) + if coord in fall: + print("|", end="") + elif coord in still: + print("~", end="") + elif coord in world: + print("#", end="") + else: + print(".", end="") + print() + + +def main(): + world, minX, maxX, minY, maxY = loadworld("input.txt") + minY = 0 + # world[(500, 0)] = Tile.WALL + + # Tiles in the falling state + fall = set([(500, 0)]) + # Tiles that have landed somewhere and can flow left/right + still = set() + + printworld(world, minX, maxX, minY, maxY, fall, still) + + while True: + # input() + + """ + Particle Rules + - Any type above AIR spawns a "fall" below it + - Any type above WALL turns into STILL + - Any type next to an open space and above a wall spawns one next door + """ + updated = False + + for coord in list(fall): + below = addpts(coord, Dir.DOWN.value) + if below[1] > maxY: + continue + if below in fall: + continue + elif below not in world: + world[below] = Tile.FALL + fall.update([below]) + updated = True + # print("u1") + elif world[below] in (Tile.WALL, Tile.STILL): + # fall.remove(coord) + # spread.update([coord]) + + # Search left and right, spreading the water (in fall state) as we go + # If we find contiguous floor until we hit a wall on both sides, the water is changed to still + # Otherwise, it stays flowing + capped = True + added = set([coord]) + + # search left + sleft = addpts(coord, Dir.LEFT.value) + while True: + if sleft in world and world[sleft] == Tile.WALL: + break # left wall found + added.update([sleft]) + support = addpts(sleft, Dir.DOWN.value) + if support not in world or world[support] not in (Tile.WALL, Tile.STILL): + capped = False + break + sleft = addpts(sleft, Dir.LEFT.value) + + # search right + sright = addpts(coord, Dir.RIGHT.value) + while True: + if sright in world and world[sright] == Tile.WALL: + break # left wall found + added.update([sright]) + support = addpts(sright, Dir.DOWN.value) + if support not in world or world[support] not in (Tile.WALL, Tile.STILL): + capped = False + break + sright = addpts(sright, Dir.RIGHT.value) + + # If the region is sealed off (e.g. no water can flow out, fill it wit still water) + if capped: + for c in added: + if c not in world: + updated = True + world[c] = Tile.STILL + try: + fall.remove(c) + except KeyError: + pass + still.update(added) + else: + for c in added: + if c not in world: + updated = True + world[c] = Tile.FALL + fall.update(added) + + maxwater = 0 + for w in fall: + maxwater = max(maxwater, w[1]) + print("MaxY:", maxY, "MaxWater:", maxwater, "Fallers:", len(fall)) + + if not updated: + printworld(world, minX, maxX, minY, maxY, fall, still) + print("Fall =", len(fall)) # This seems to include off-map fallers (from the spring), but i don't care. + print("Still =", len(still)) + fall -= still + still -= fall + total = len(still) + for point in fall: + if point[1] >= minY and point[1] <= maxY: + total += 1 + print(total) + return + + +if __name__ == '__main__': + main() + diff --git a/17/input.txt b/17/input.txt new file mode 100644 index 0000000..76deffb --- /dev/null +++ b/17/input.txt @@ -0,0 +1,1537 @@ +y=938, x=593..595 +y=577, x=457..474 +x=543, y=1284..1295 +x=596, y=306..324 +x=564, y=1963..1965 +x=551, y=1021..1037 +x=451, y=577..591 +x=555, y=367..383 +x=484, y=119..133 +y=421, x=585..592 +y=1295, x=543..563 +x=510, y=120..147 +x=487, y=1180..1194 +x=487, y=1680..1690 +y=440, x=613..617 +x=549, y=1935..1944 +y=865, x=438..451 +x=497, y=959..987 +y=324, x=596..613 +x=511, y=226..230 +x=549, y=1579..1592 +x=461, y=518..528 +y=988, x=446..465 +x=493, y=1728..1732 +x=449, y=820..833 +x=492, y=673..685 +x=511, y=51..57 +x=567, y=1917..1927 +x=455, y=1854..1867 +x=481, y=506..517 +y=1799, x=478..494 +x=596, y=846..853 +x=523, y=262..265 +x=543, y=1004..1018 +x=529, y=102..107 +x=489, y=1927..1933 +x=501, y=539..548 +x=458, y=460..471 +x=463, y=608..619 +x=466, y=778..790 +y=853, x=576..596 +x=483, y=197..214 +x=519, y=444..450 +x=583, y=1043..1051 +x=555, y=1264..1274 +y=1122, x=524..587 +x=528, y=1239..1266 +x=466, y=446..454 +y=868, x=490..494 +x=506, y=261..265 +x=515, y=1239..1249 +y=560, x=556..558 +x=566, y=922..942 +y=1568, x=608..619 +x=506, y=1379..1393 +x=478, y=1590..1599 +x=520, y=779..790 +x=523, y=526..551 +y=800, x=444..453 +x=576, y=1216..1223 +y=1839, x=483..486 +x=588, y=1213..1222 +x=472, y=1075..1095 +x=543, y=925..936 +y=1181, x=435..438 +y=1383, x=569..589 +x=545, y=679..683 +x=432, y=928..936 +y=895, x=499..521 +x=525, y=460..480 +x=476, y=125..130 +y=1223, x=574..576 +x=569, y=1336..1338 +x=521, y=1744..1756 +x=461, y=941..951 +y=1911, x=596..603 +x=438, y=1542..1552 +x=583, y=965..981 +x=450, y=481..491 +y=833, x=449..463 +x=576, y=1248..1250 +x=492, y=464..490 +y=373, x=575..578 +x=471, y=245..255 +x=467, y=202..211 +x=499, y=1701..1713 +y=1648, x=447..449 +y=1373, x=489..492 +y=1158, x=450..463 +x=479, y=435..446 +y=806, x=538..540 +y=356, x=607..611 +y=747, x=537..554 +x=510, y=910..925 +x=523, y=1769..1776 +x=438, y=264..278 +x=525, y=26..40 +x=599, y=1349..1360 +x=607, y=353..356 +y=1204, x=571..574 +x=536, y=1501..1503 +x=588, y=7..16 +x=562, y=774..800 +x=473, y=1133..1136 +y=1779, x=544..559 +x=485, y=1208..1211 +x=483, y=1834..1839 +x=470, y=1272..1280 +y=1375, x=445..449 +x=496, y=463..490 +y=446, x=479..481 +x=450, y=205..217 +x=570, y=1520..1523 +x=513, y=328..342 +x=433, y=1369..1380 +x=497, y=1728..1732 +y=1523, x=570..576 +y=1510, x=495..497 +y=316, x=561..581 +y=335, x=517..542 +x=459, y=884..912 +x=619, y=1544..1568 +x=567, y=210..219 +x=549, y=349..351 +x=433, y=76..84 +y=371, x=541..549 +y=108, x=473..495 +y=1596, x=487..505 +x=566, y=1716..1732 +y=772, x=450..528 +y=1095, x=472..491 +x=486, y=909..925 +x=487, y=1584..1596 +y=40, x=525..548 +y=640, x=530..550 +y=672, x=456..458 +x=594, y=336..346 +x=536, y=779..790 +x=447, y=1429..1444 +x=498, y=33..35 +x=601, y=217..224 +y=123, x=600..618 +x=605, y=1213..1222 +x=509, y=1705..1709 +x=513, y=1705..1709 +x=450, y=1766..1772 +y=1143, x=576..598 +x=432, y=1916..1928 +x=562, y=1070..1081 +x=514, y=226..230 +x=530, y=631..640 +x=515, y=1741..1753 +x=498, y=329..342 +y=1444, x=447..473 +x=616, y=217..224 +x=494, y=588..600 +x=446, y=1939..1942 +x=616, y=1746..1752 +y=346, x=594..607 +y=809, x=528..546 +x=505, y=1743..1756 +y=173, x=457..460 +x=485, y=1421..1424 +y=294, x=492..495 +x=439, y=499..519 +x=434, y=90..105 +x=505, y=1918..1925 +y=951, x=438..461 +x=502, y=903..906 +x=570, y=181..197 +x=450, y=189..195 +x=480, y=884..912 +y=1266, x=528..531 +x=591, y=96..119 +y=134, x=549..568 +y=997, x=514..534 +x=613, y=415..440 +x=510, y=395..401 +x=594, y=1626..1628 +x=523, y=592..601 +x=469, y=285..310 +x=549, y=112..134 +x=569, y=1128..1141 +x=448, y=1000..1012 +y=396, x=519..522 +y=438, x=503..522 +x=556, y=560..562 +x=469, y=1915..1923 +y=238, x=443..457 +x=552, y=767..786 +y=98, x=487..489 +y=544, x=598..601 +x=511, y=1213..1233 +y=1944, x=459..463 +y=1182, x=473..483 +x=528, y=798..809 +x=563, y=1133..1135 +x=537, y=697..705 +x=449, y=1371..1375 +x=462, y=1225..1236 +y=1250, x=576..579 +y=1102, x=554..576 +x=435, y=1178..1181 +x=531, y=1305..1319 +x=451, y=143..157 +y=1928, x=432..452 +y=211, x=460..467 +x=433, y=670..693 +y=978, x=534..554 +y=1662, x=597..602 +y=1479, x=455..473 +x=442, y=1688..1708 +x=571, y=1202..1204 +y=1960, x=453..480 +y=1503, x=512..536 +x=555, y=1346..1353 +x=578, y=601..615 +x=514, y=202..203 +x=452, y=1542..1552 +x=506, y=30..39 +x=489, y=98..101 +y=1481, x=604..606 +x=514, y=1531..1537 +x=445, y=578..591 +x=567, y=793..796 +x=462, y=862..871 +y=224, x=601..616 +x=562, y=944..958 +x=508, y=543..545 +y=682, x=502..506 +x=621, y=1450..1459 +y=1155, x=547..557 +x=484, y=20..36 +x=492, y=444..450 +x=480, y=350..359 +x=541, y=1069..1081 +x=533, y=1831..1844 +x=526, y=354..363 +y=232, x=470..475 +y=1344, x=591..606 +x=451, y=1694..1697 +y=656, x=605..619 +x=472, y=542..547 +x=506, y=1656..1669 +x=581, y=1194..1207 +y=242, x=500..524 +y=1766, x=551..579 +x=463, y=1933..1944 +x=453, y=1954..1960 +x=550, y=989..991 +x=547, y=908..927 +x=468, y=482..491 +x=569, y=1372..1383 +y=148, x=458..462 +x=495, y=95..108 +x=560, y=1719..1723 +y=998, x=543..565 +x=503, y=436..438 +x=447, y=620..635 +y=1360, x=597..599 +x=555, y=942..952 +x=552, y=4..16 +x=522, y=984..992 +y=174, x=497..499 +x=582, y=559..566 +x=489, y=1367..1373 +x=529, y=1655..1669 +y=1779, x=515..530 +y=1818, x=595..603 +x=612, y=1625..1628 +y=1719, x=556..560 +y=790, x=466..471 +y=912, x=459..480 +x=609, y=1843..1869 +y=61, x=571..581 +x=471, y=1201..1214 +y=623, x=513..530 +x=602, y=686..701 +x=556, y=1830..1844 +x=572, y=1494..1508 +x=567, y=1963..1965 +x=587, y=1336..1338 +y=251, x=577..592 +y=1459, x=541..553 +x=507, y=766..768 +y=619, x=463..486 +x=571, y=965..981 +x=550, y=1175..1185 +x=611, y=352..356 +y=383, x=490..508 +x=490, y=1744..1754 +y=1480, x=492..513 +y=102, x=526..529 +y=1963, x=493..503 +x=607, y=863..877 +x=585, y=689..696 +x=473, y=96..108 +x=570, y=366..383 +x=525, y=442..445 +x=612, y=1447..1456 +x=574, y=1216..1223 +y=1063, x=473..475 +x=480, y=1955..1960 +y=1018, x=528..543 +y=1248, x=576..579 +x=512, y=1741..1753 +y=1709, x=478..492 +x=460, y=165..173 +x=549, y=366..371 +x=496, y=954..956 +x=558, y=1938..1949 +x=576, y=1520..1523 +x=583, y=1219..1232 +y=342, x=498..513 +x=446, y=999..1012 +x=532, y=1525..1543 +y=768, x=457..507 +y=704, x=502..504 +x=520, y=493..518 +x=588, y=1495..1508 +x=585, y=393..421 +y=874, x=509..531 +y=278, x=438..494 +y=83, x=491..497 +x=573, y=1158..1162 +x=512, y=672..685 +x=463, y=20..36 +y=591, x=445..451 +x=516, y=1919..1925 +x=583, y=1264..1274 +y=1690, x=487..506 +y=1336, x=521..523 +y=462, x=576..588 +y=566, x=546..564 +x=550, y=494..505 +x=492, y=1475..1480 +x=451, y=846..865 +y=596, x=485..487 +x=448, y=537..548 +x=544, y=1679..1705 +y=1508, x=572..588 +y=1599, x=474..478 +y=1796, x=506..510 +x=585, y=1645..1667 +x=482, y=1808..1821 +y=1753, x=512..515 +x=511, y=887..891 +y=1434, x=540..543 +x=556, y=1620..1630 +y=505, x=550..552 +x=570, y=1176..1185 +x=597, y=1660..1662 +x=535, y=1012..1014 +x=503, y=1530..1537 +x=614, y=976..995 +y=437, x=586..590 +y=84, x=433..461 +y=1370, x=507..524 +x=495, y=294..296 +x=561, y=1922..1924 +y=1181, x=590..606 +x=566, y=1440..1443 +x=574, y=1202..1204 +x=595, y=932..938 +x=563, y=468..472 +x=508, y=887..891 +x=473, y=1181..1182 +y=39, x=489..506 +y=995, x=479..483 +x=552, y=494..505 +x=460, y=1767..1772 +y=224, x=535..556 +y=1424, x=485..503 +y=1219, x=537..554 +x=497, y=81..83 +x=524, y=1356..1370 +x=580, y=1672..1682 +y=73, x=599..610 +x=499, y=1449..1458 +y=423, x=481..483 +y=1543, x=520..532 +y=553, x=465..480 +y=745, x=508..510 +y=306, x=460..462 +x=596, y=1897..1911 +y=1595, x=614..616 +y=51, x=508..511 +x=479, y=1880..1882 +x=489, y=347..356 +x=537, y=741..747 +x=544, y=514..521 +x=462, y=572..574 +x=481, y=459..471 +x=564, y=182..197 +x=524, y=221..242 +x=559, y=1691..1697 +x=506, y=1058..1083 +y=600, x=474..494 +x=532, y=828..833 +y=1906, x=452..552 +x=586, y=468..472 +y=1949, x=586..598 +y=566, x=577..582 +y=451, x=535..545 +x=570, y=1244..1253 +x=535, y=1558..1569 +x=597, y=1349..1360 +x=616, y=1412..1423 +x=547, y=1163..1171 +x=524, y=1852..1860 +x=445, y=874..887 +x=611, y=916..918 +x=522, y=1880..1882 +x=459, y=699..706 +x=435, y=130..155 +x=504, y=1181..1194 +x=462, y=303..306 +x=443, y=945..948 +x=546, y=553..566 +x=597, y=1853..1872 +x=453, y=874..887 +x=450, y=1132..1158 +y=1233, x=442..455 +x=518, y=1463..1477 +x=589, y=1569..1578 +x=495, y=1831..1844 +y=16, x=610..614 +x=450, y=620..635 +x=504, y=73..86 +x=539, y=1937..1949 +x=541, y=1917..1927 +x=522, y=817..825 +x=531, y=579..582 +x=447, y=1201..1207 +x=520, y=1616..1627 +y=793, x=507..517 +x=584, y=1430..1442 +y=1732, x=493..497 +x=596, y=1333..1337 +x=569, y=1347..1349 +y=786, x=527..530 +y=1869, x=609..615 +y=428, x=514..523 +x=438, y=698..706 +y=1751, x=436..453 +x=588, y=201..205 +x=586, y=725..740 +x=452, y=1895..1906 +x=510, y=1768..1796 +y=1435, x=457..460 +x=462, y=499..508 +x=541, y=1576..1586 +x=589, y=325..337 +y=159, x=550..557 +y=1862, x=465..467 +x=593, y=265..275 +y=42, x=593..609 +x=531, y=1330..1340 +x=556, y=1922..1924 +x=533, y=1012..1014 +x=544, y=1776..1779 +y=390, x=444..457 +x=606, y=923..944 +x=614, y=10..16 +y=981, x=571..583 +y=887, x=445..453 +y=103, x=555..560 +x=574, y=83..91 +x=521, y=885..895 +x=436, y=1726..1751 +x=481, y=411..423 +y=110, x=514..536 +x=460, y=90..105 +y=1775, x=474..478 +y=1236, x=434..462 +y=925, x=486..510 +x=448, y=245..255 +x=462, y=224..235 +x=444, y=537..548 +x=552, y=1895..1906 +x=592, y=394..421 +y=378, x=560..562 +x=595, y=1815..1818 +y=155, x=435..443 +x=452, y=1936..1947 +x=484, y=1746..1758 +x=460, y=303..306 +x=487, y=635..639 +x=619, y=1032..1060 +y=1658, x=465..484 +y=1232, x=563..583 +x=595, y=1436..1438 +y=1477, x=518..538 +x=517, y=126..144 +x=508, y=720..730 +x=507, y=1355..1370 +x=608, y=116..118 +x=538, y=1395..1400 +x=469, y=466..468 +x=465, y=1851..1862 +y=1527, x=452..460 +y=144, x=517..519 +x=473, y=414..426 +x=578, y=1897..1899 +x=537, y=347..356 +x=618, y=382..406 +y=1821, x=482..544 +x=486, y=1504..1517 +y=468, x=469..472 +x=494, y=265..278 +x=458, y=669..672 +y=927, x=547..549 +y=891, x=508..511 +x=573, y=1673..1682 +x=561, y=907..917 +x=487, y=98..101 +x=591, y=1331..1344 +y=825, x=517..522 +x=453, y=1726..1751 +x=609, y=1499..1521 +x=457, y=165..173 +x=578, y=202..205 +y=918, x=611..613 +y=976, x=439..463 +x=468, y=659..681 +y=1842, x=442..453 +y=1438, x=592..595 +x=474, y=565..577 +y=1889, x=437..439 +x=481, y=435..446 +y=454, x=440..466 +y=790, x=520..536 +x=438, y=941..951 +x=564, y=140..162 +x=577, y=1014..1016 +x=496, y=1677..1685 +x=438, y=846..865 +x=443, y=130..155 +x=459, y=644..648 +x=486, y=347..356 +y=318, x=506..526 +x=499, y=1588..1592 +x=556, y=1719..1723 +x=505, y=1504..1517 +x=457, y=1432..1435 +x=434, y=643..648 +x=595, y=1779..1789 +x=544, y=485..509 +x=438, y=1464..1475 +x=563, y=705..728 +x=534, y=968..978 +y=528, x=461..466 +x=606, y=313..320 +x=606, y=1330..1344 +x=519, y=1142..1145 +x=485, y=1608..1618 +x=520, y=1525..1543 +x=534, y=316..321 +x=575, y=329..333 +x=509, y=592..601 +x=558, y=768..786 +y=349, x=549..554 +x=494, y=1790..1799 +x=589, y=1540..1542 +x=467, y=1463..1466 +y=1337, x=477..501 +y=1652, x=436..455 +x=457, y=1368..1380 +y=1349, x=569..572 +x=490, y=816..843 +x=593, y=1412..1423 +x=577, y=241..251 +y=1249, x=515..524 +y=351, x=549..554 +y=1465, x=445..453 +x=611, y=1153..1166 +x=590, y=1178..1181 +y=1537, x=503..514 +x=615, y=266..274 +x=600, y=1013..1016 +x=524, y=1109..1122 +y=1705, x=509..513 +y=354, x=454..469 +x=540, y=1395..1400 +y=590, x=597..601 +x=488, y=1866..1870 +y=36, x=598..601 +x=449, y=658..681 +x=439, y=1875..1889 +y=1475, x=438..440 +y=709, x=495..514 +x=512, y=1502..1503 +x=524, y=1678..1705 +x=553, y=827..833 +y=1592, x=533..549 +y=521, x=544..548 +x=501, y=1852..1860 +y=39, x=598..601 +x=563, y=1218..1232 +y=1443, x=560..566 +x=584, y=1540..1542 +x=507, y=1555..1567 +y=1708, x=442..457 +x=517, y=306..315 +x=565, y=667..693 +x=598, y=36..39 +y=94, x=510..522 +y=693, x=560..565 +x=551, y=1748..1766 +x=520, y=924..936 +x=437, y=185..199 +x=581, y=48..61 +y=574, x=462..465 +y=1925, x=505..516 +x=508, y=1141..1145 +x=506, y=308..318 +x=522, y=191..197 +y=1969, x=507..519 +x=536, y=315..321 +x=591, y=638..660 +y=1367, x=515..518 +x=605, y=8..16 +x=545, y=94..106 +y=426, x=473..489 +x=592, y=689..696 +x=492, y=1367..1373 +y=439, x=455..464 +x=579, y=1248..1250 +x=594, y=207..233 +x=543, y=1874..1885 +y=203, x=490..514 +x=520, y=913..916 +x=455, y=1231..1233 +x=460, y=202..211 +x=601, y=1681..1702 +x=553, y=39..67 +x=510, y=543..545 +y=86, x=485..504 +x=590, y=1780..1789 +x=557, y=1152..1155 +y=1012, x=454..457 +x=446, y=928..936 +y=1705, x=524..544 +x=525, y=680..683 +y=919, x=515..529 +y=1789, x=590..595 +y=451, x=471..488 +y=518, x=520..539 +y=877, x=583..607 +y=1145, x=508..519 +x=461, y=1462..1466 +x=485, y=653..665 +x=437, y=1875..1889 +y=274, x=599..615 +x=598, y=526..544 +y=936, x=432..446 +x=535, y=211..224 +y=1472, x=498..502 +x=450, y=759..772 +y=843, x=485..490 +y=1207, x=560..581 +y=1630, x=532..556 +x=466, y=518..528 +y=310, x=446..469 +x=560, y=99..103 +x=459, y=1590..1604 +x=580, y=1898..1899 +x=606, y=1177..1181 +x=610, y=924..944 +y=126, x=517..519 +y=1546, x=549..597 +y=1551, x=500..511 +x=576, y=1131..1143 +y=356, x=537..561 +x=517, y=1638..1647 +y=1015, x=472..475 +y=1340, x=513..531 +y=836, x=494..498 +y=1697, x=449..451 +x=446, y=1913..1925 +x=530, y=612..623 +x=607, y=143..145 +x=466, y=812..814 +x=536, y=100..110 +x=494, y=497..520 +x=503, y=1295..1318 +y=747, x=455..459 +x=588, y=211..219 +x=453, y=521..531 +y=1231, x=442..455 +x=473, y=1853..1867 +y=1189, x=451..455 +y=130, x=466..476 +y=948, x=443..452 +y=16, x=588..605 +x=531, y=1239..1266 +y=1141, x=547..569 +x=451, y=713..727 +x=604, y=1158..1162 +x=513, y=1475..1480 +y=693, x=433..440 +x=538, y=1462..1477 +x=605, y=143..145 +x=467, y=1851..1862 +y=1756, x=505..521 +x=534, y=579..582 +x=504, y=7..17 +y=1752, x=604..616 +x=459, y=120..133 +x=586, y=1939..1949 +x=579, y=1568..1578 +y=1333, x=596..598 +y=551, x=520..523 +y=1380, x=578..580 +y=1754, x=490..495 +y=219, x=567..588 +x=557, y=3..16 +x=449, y=1694..1697 +x=497, y=154..174 +x=571, y=47..61 +x=484, y=1634..1658 +y=1160, x=472..500 +y=1578, x=579..589 +x=472, y=1935..1947 +x=609, y=28..42 +x=521, y=1769..1776 +x=547, y=1128..1141 +x=575, y=362..373 +x=545, y=449..451 +x=483, y=1041..1066 +y=1778, x=467..484 +y=579, x=531..534 +x=452, y=1506..1527 +y=1210, x=523..534 +x=592, y=1436..1438 +x=463, y=1184..1195 +x=516, y=538..548 +y=118, x=608..610 +x=436, y=1626..1652 +x=601, y=36..39 +x=499, y=1202..1214 +y=560, x=446..455 +y=1944, x=547..549 +y=1844, x=473..495 +x=538, y=1346..1353 +y=254, x=536..557 +y=727, x=446..451 +x=559, y=603..626 +x=587, y=1110..1122 +x=507, y=1945..1969 +x=446, y=712..727 +x=464, y=1589..1604 +x=458, y=148..154 +x=497, y=1588..1592 +y=1732, x=549..566 +x=558, y=1870..1879 +x=554, y=349..351 +x=554, y=1089..1102 +x=530, y=783..786 +x=605, y=284..294 +x=527, y=719..730 +x=451, y=1189..1191 +x=559, y=1598..1603 +x=491, y=1074..1095 +x=456, y=186..199 +y=1400, x=538..540 +x=602, y=929..946 +y=21, x=499..515 +x=582, y=1718..1722 +y=67, x=553..562 +y=235, x=462..482 +y=1846, x=516..527 +y=671, x=519..527 +y=916, x=520..523 +x=455, y=419..439 +y=1363, x=515..518 +x=482, y=1867..1870 +y=1882, x=479..522 +x=573, y=143..155 +y=105, x=434..460 +x=510, y=654..665 +x=576, y=443..462 +x=463, y=1202..1207 +y=363, x=526..529 +x=446, y=286..310 +y=299, x=482..506 +x=477, y=1331..1337 +y=942, x=566..569 +x=541, y=418..428 +y=217, x=454..473 +x=440, y=45..49 +x=457, y=1008..1012 +y=1075, x=458..460 +y=1588, x=497..499 +x=497, y=1510..1512 +y=320, x=602..606 +x=580, y=1492..1500 +y=1516, x=470..480 +y=508, x=462..464 +y=1456, x=606..612 +y=1713, x=499..519 +y=1116, x=592..609 +x=483, y=941..952 +x=462, y=148..154 +x=525, y=1599..1611 +y=643, x=477..495 +x=578, y=1344..1353 +x=460, y=1047..1075 +y=1338, x=569..587 +x=445, y=1371..1375 +x=553, y=1458..1459 +y=1051, x=583..585 +x=561, y=294..316 +x=598, y=1939..1949 +x=597, y=208..233 +x=470, y=230..232 +y=1171, x=534..547 +x=437, y=1184..1195 +x=613, y=915..918 +x=554, y=968..978 +x=479, y=968..995 +x=473, y=1429..1444 +x=486, y=1834..1839 +y=296, x=492..495 +y=1380, x=433..457 +x=549, y=908..927 +x=440, y=447..454 +y=1216, x=545..548 +x=576, y=1090..1102 +x=507, y=7..17 +y=1592, x=497..499 +x=548, y=26..40 +y=321, x=534..536 +x=482, y=285..299 +x=499, y=1357..1376 +y=1037, x=551..569 +x=485, y=586..596 +x=586, y=975..995 +x=492, y=294..296 +x=444, y=1913..1925 +y=1446, x=546..573 +y=665, x=485..510 +y=1669, x=506..529 +y=62, x=495..519 +y=958, x=543..562 +x=492, y=1696..1709 +x=551, y=1045..1059 +y=1628, x=594..612 +y=1087, x=479..481 +y=766, x=457..507 +x=478, y=1765..1775 +x=469, y=353..354 +y=1772, x=450..460 +x=600, y=285..294 +y=1758, x=484..502 +y=337, x=565..589 +y=786, x=552..558 +y=1353, x=563..578 +x=552, y=989..991 +x=465, y=737..748 +y=1280, x=470..486 +y=1738, x=486..508 +x=602, y=313..320 +y=205, x=578..588 +x=465, y=982..988 +x=474, y=1765..1775 +y=511, x=452..470 +x=513, y=1331..1340 +x=534, y=120..147 +x=522, y=178..181 +y=1500, x=578..580 +x=577, y=706..728 +y=17, x=504..507 +y=740, x=586..613 +y=1044, x=589..596 +x=475, y=391..404 +y=336, x=469..471 +x=490, y=846..868 +x=521, y=1328..1336 +x=522, y=89..94 +x=551, y=942..952 +x=534, y=1183..1210 +y=1723, x=556..560 +y=1191, x=451..455 +x=446, y=559..560 +x=446, y=981..988 +x=478, y=1696..1709 +y=404, x=475..516 +x=528, y=760..772 +x=480, y=539..553 +x=557, y=1133..1135 +x=489, y=413..426 +x=457, y=1689..1708 +y=1965, x=564..567 +x=593, y=27..42 +x=539, y=493..518 +x=523, y=913..916 +x=487, y=586..596 +x=500, y=33..35 +y=491, x=450..468 +y=106, x=545..566 +x=490, y=201..203 +x=506, y=1679..1690 +x=498, y=349..359 +y=275, x=585..593 +x=544, y=1808..1821 +y=1084, x=518..528 +y=181, x=522..547 +x=514, y=420..428 +x=434, y=1226..1236 +x=454, y=352..354 +y=155, x=568..573 +x=537, y=1201..1219 +x=521, y=698..705 +y=1194, x=487..504 +y=685, x=492..512 +y=35, x=498..500 +y=562, x=556..558 +y=472, x=563..586 +y=1927, x=541..567 +y=833, x=532..553 +x=576, y=818..829 +y=936, x=520..543 +y=1126, x=505..513 +x=443, y=232..238 +x=579, y=1749..1766 +y=1006, x=500..502 +x=604, y=1478..1481 +y=952, x=551..555 +y=945, x=443..452 +x=455, y=1627..1652 +x=606, y=1447..1456 +x=522, y=390..396 +y=1618, x=485..495 +x=517, y=817..825 +x=464, y=1394..1416 +y=49, x=440..463 +x=615, y=1844..1869 +y=1647, x=517..567 +x=548, y=514..521 +y=946, x=587..602 +x=454, y=1007..1012 +x=566, y=818..829 +y=1696, x=531..534 +y=1567, x=507..532 +y=696, x=585..592 +x=510, y=743..745 +x=485, y=1449..1458 +x=530, y=1767..1779 +y=1667, x=585..609 +y=1627, x=520..525 +y=1624, x=573..591 +x=482, y=224..235 +y=1459, x=601..621 +x=444, y=378..390 +y=133, x=459..484 +x=506, y=1214..1233 +x=465, y=1286..1300 +y=16, x=552..557 +x=506, y=1769..1796 +x=550, y=152..159 +x=495, y=902..906 +y=701, x=602..619 +x=473, y=1473..1479 +x=519, y=391..396 +y=162, x=539..564 +y=1222, x=588..605 +x=453, y=1815..1842 +x=610, y=10..16 +x=565, y=1313..1316 +x=457, y=379..390 +x=480, y=1356..1376 +x=605, y=639..656 +y=989, x=550..552 +y=1769, x=521..523 +x=449, y=813..814 +x=495, y=1608..1618 +y=1233, x=506..511 +y=1542, x=584..589 +x=541, y=365..371 +y=445, x=525..535 +x=517, y=333..335 +y=1923, x=469..483 +y=1059, x=534..551 +x=610, y=116..118 +x=529, y=1959..1971 +x=547, y=178..181 +x=591, y=1796..1822 +x=509, y=863..874 +x=601, y=568..590 +y=1971, x=529..581 +x=543, y=572..585 +x=609, y=1680..1702 +x=499, y=884..895 +x=560, y=1193..1207 +y=1300, x=438..465 +x=495, y=1927..1933 +x=516, y=737..748 +y=359, x=480..498 +y=1214, x=471..499 +y=765, x=598..612 +y=333, x=575..578 +y=1697, x=559..581 +x=526, y=102..107 +y=955, x=573..578 +x=519, y=1944..1969 +x=560, y=1440..1443 +y=730, x=508..527 +x=499, y=10..21 +x=457, y=231..238 +x=556, y=211..224 +x=466, y=1874..1885 +x=483, y=967..995 +x=518, y=1392..1405 +x=498, y=821..836 +x=588, y=443..462 +y=1822, x=587..591 +x=523, y=1328..1336 +x=578, y=1492..1500 +x=459, y=1933..1944 +y=1872, x=597..599 +x=508, y=370..383 +y=1376, x=480..499 +x=519, y=1701..1713 +y=383, x=555..570 +x=546, y=1424..1446 +x=597, y=1534..1546 +x=546, y=1623..1626 +x=571, y=1879..1884 +x=580, y=1369..1380 +x=452, y=501..511 +x=614, y=1470..1484 +x=567, y=584..596 +x=545, y=1214..1216 +x=604, y=1746..1752 +y=913, x=520..523 +x=615, y=1033..1060 +x=510, y=90..94 +x=606, y=1478..1481 +x=505, y=1584..1596 +y=991, x=550..552 +x=477, y=630..643 +x=460, y=1507..1527 +x=458, y=1047..1075 +y=519, x=439..441 +y=952, x=472..483 +y=1899, x=578..580 +x=466, y=125..130 +y=471, x=458..481 +x=602, y=1660..1662 +y=706, x=438..459 +x=578, y=329..333 +y=1135, x=557..563 +x=455, y=1189..1191 +x=488, y=438..451 +y=814, x=449..466 +y=615, x=578..598 +x=558, y=560..562 +y=856, x=466..480 +y=800, x=562..586 +x=486, y=1725..1738 +x=532, y=1620..1630 +x=565, y=985..998 +y=542, x=472..474 +y=547, x=472..474 +x=479, y=197..214 +x=599, y=266..274 +x=534, y=1163..1171 +x=503, y=1380..1393 +x=578, y=361..373 +x=559, y=1557..1569 +y=1604, x=459..464 +y=1078, x=599..604 +x=587, y=1796..1822 +x=604, y=1075..1078 +x=575, y=256..258 +x=519, y=48..62 +x=452, y=945..948 +y=1158, x=573..604 +x=464, y=1041..1066 +x=483, y=506..517 +x=519, y=126..144 +x=438, y=1177..1181 +y=1014, x=533..535 +y=705, x=521..537 +x=606, y=383..406 +x=512, y=819..831 +x=599, y=69..73 +y=315, x=512..517 +y=313, x=602..606 +x=459, y=863..871 +x=515, y=1766..1779 +x=536, y=236..254 +x=554, y=1200..1219 +x=587, y=1887..1900 +x=507, y=791..793 +y=1569, x=535..559 +y=585, x=515..543 +x=601, y=1393..1405 +x=473, y=1832..1844 +y=1185, x=550..570 +y=1166, x=563..611 +x=473, y=204..217 +x=508, y=743..745 +x=543, y=945..958 +x=437, y=206..217 +x=500, y=996..1006 +y=1709, x=509..513 +y=1337, x=596..598 +y=406, x=606..618 +y=1512, x=495..497 +x=566, y=1869..1879 +y=1880, x=479..522 +x=526, y=309..318 +x=455, y=1474..1479 +x=520, y=1027..1038 +x=573, y=953..955 +y=829, x=566..576 +x=619, y=686..701 +y=356, x=486..489 +x=441, y=499..519 +y=119, x=591..597 +x=543, y=1313..1316 +x=525, y=1260..1263 +x=502, y=1466..1472 +x=521, y=461..480 +x=474, y=1590..1599 +x=554, y=740..747 +x=609, y=1112..1116 +x=561, y=484..509 +x=601, y=1430..1442 +y=1274, x=555..583 +x=442, y=1816..1842 +x=578, y=1369..1380 +y=1081, x=541..562 +y=728, x=563..577 +x=480, y=851..856 +x=561, y=346..356 +y=876, x=552..573 +y=233, x=594..597 +x=541, y=1028..1038 +x=607, y=1500..1521 +x=555, y=99..103 +x=563, y=1284..1295 +x=433, y=1940..1942 +x=550, y=632..640 +x=540, y=1417..1434 +x=500, y=221..242 +x=502, y=558..577 +y=531, x=453..472 +x=499, y=395..401 +x=520, y=526..551 +y=1363, x=589..605 +y=178, x=449..466 +x=472, y=1154..1160 +x=605, y=1351..1363 +x=453, y=777..800 +x=573, y=1423..1446 +x=499, y=558..577 +x=542, y=1600..1611 +y=1319, x=531..598 +x=449, y=168..178 +x=463, y=1133..1158 +x=598, y=1305..1319 +x=591, y=1601..1624 +y=57, x=508..511 +y=601, x=509..523 +y=660, x=581..591 +x=513, y=1107..1126 +x=614, y=140..150 +x=564, y=554..566 +y=1722, x=582..602 +y=517, x=481..483 +y=1211, x=483..485 +x=472, y=940..952 +x=529, y=355..363 +x=515, y=1363..1367 +x=466, y=851..856 +x=486, y=1273..1280 +x=457, y=564..577 +x=440, y=669..693 +x=614, y=1576..1595 +y=1924, x=556..561 +y=480, x=521..525 +x=471, y=143..157 +y=1347, x=569..572 +x=537, y=842..854 +y=509, x=544..561 +x=534, y=1694..1696 +y=906, x=495..502 +x=511, y=1544..1551 +y=1416, x=464..477 +y=683, x=525..545 +y=401, x=539..556 +y=1318, x=487..503 +x=583, y=862..877 +x=506, y=670..682 +y=214, x=479..483 +x=439, y=972..976 +x=589, y=1038..1044 +x=584, y=584..596 +y=303, x=460..462 +x=568, y=144..155 +y=1316, x=543..565 +x=494, y=822..836 +y=944, x=606..610 +x=506, y=1261..1263 +x=471, y=777..790 +y=91, x=574..594 +x=489, y=635..639 +x=539, y=141..162 +x=528, y=984..992 +x=486, y=609..619 +x=597, y=95..119 +y=548, x=501..516 +y=107, x=526..529 +x=454, y=205..217 +x=492, y=1677..1685 +x=596, y=1038..1044 +x=542, y=333..335 +x=455, y=719..747 +y=1393, x=503..506 +x=470, y=502..511 +x=566, y=95..106 +x=464, y=499..508 +y=265, x=506..523 +x=516, y=390..404 +y=743, x=508..510 +x=600, y=101..123 +x=440, y=1463..1475 +x=531, y=1694..1696 +x=447, y=1643..1648 +x=552, y=848..876 +x=565, y=325..337 +x=453, y=1454..1465 +y=230, x=511..514 +x=518, y=1363..1367 +y=401, x=499..510 +x=500, y=1153..1160 +x=568, y=111..134 +y=1879, x=558..566 +x=560, y=376..378 +y=635, x=487..489 +y=1033, x=508..510 +x=609, y=1645..1667 +x=474, y=542..547 +y=450, x=492..519 +x=463, y=973..976 +y=1922, x=556..561 +x=602, y=1717..1722 +x=586, y=426..437 +x=471, y=326..336 +x=518, y=1081..1084 +x=451, y=1345..1353 +y=1611, x=525..542 +x=581, y=1692..1697 +x=477, y=1395..1416 +x=548, y=1214..1216 +x=547, y=1152..1155 +y=1517, x=486..505 +y=1060, x=615..619 +x=597, y=568..590 +x=603, y=1815..1818 +x=540, y=802..806 +x=459, y=719..747 +x=538, y=802..806 +y=1925, x=444..446 +x=519, y=667..671 +x=585, y=1887..1900 +x=481, y=1077..1087 +y=548, x=444..448 +y=1844, x=533..556 +y=36, x=463..484 +y=1484, x=574..614 +x=465, y=1634..1658 +x=514, y=696..709 +x=472, y=466..468 +x=491, y=81..83 +y=1586, x=539..541 +x=503, y=1422..1424 +x=475, y=496..520 +y=1860, x=501..524 +x=527, y=783..786 +x=502, y=995..1006 +x=539, y=1576..1586 +x=452, y=1915..1928 +x=531, y=863..874 +x=529, y=906..919 +x=506, y=286..299 +y=871, x=459..462 +x=589, y=1371..1383 +y=1867, x=455..473 +x=473, y=1059..1063 +y=987, x=497..510 +x=527, y=1843..1846 +y=152, x=550..557 +x=562, y=1517..1527 +x=508, y=1031..1033 +x=546, y=797..809 +x=543, y=986..998 +x=487, y=1294..1318 +x=618, y=102..123 +y=1038, x=520..541 +x=557, y=152..159 +x=583, y=1517..1527 +x=534, y=986..997 +x=541, y=1457..1459 +x=499, y=154..174 +y=995, x=586..614 +y=1776, x=521..523 +x=594, y=84..91 +x=515, y=9..21 +y=854, x=519..537 +x=560, y=668..693 +x=495, y=630..643 +x=508, y=51..57 +y=157, x=451..471 +y=1136, x=471..473 +x=463, y=46..49 +x=490, y=370..383 +x=514, y=99..110 +y=582, x=531..534 +y=294, x=600..605 +y=1016, x=577..600 +x=515, y=573..585 +x=599, y=1852..1872 +x=613, y=726..740 +x=608, y=1543..1568 +y=1885, x=466..543 +y=748, x=465..516 +x=525, y=1617..1627 +x=512, y=306..315 +y=520, x=475..494 +y=428, x=529..541 +x=581, y=637..660 +x=471, y=1133..1136 +x=533, y=1578..1592 +y=1247, x=473..499 +x=529, y=419..428 +y=681, x=449..468 +x=523, y=1184..1210 +x=505, y=1108..1126 +y=596, x=567..584 +x=532, y=1554..1567 +x=598, y=602..615 +x=598, y=1333..1337 +x=465, y=540..553 +x=586, y=773..800 +x=463, y=820..833 +y=1466, x=461..467 +y=145, x=605..607 +x=510, y=1031..1033 +x=461, y=76..84 +x=619, y=638..656 +x=516, y=1842..1846 +x=498, y=1467..1472 +x=500, y=1543..1551 +x=473, y=1228..1247 +y=917, x=555..561 +x=590, y=426..437 +x=563, y=1343..1353 +x=514, y=1059..1083 +x=478, y=1789..1799 +x=517, y=792..793 +y=101, x=487..489 +y=1834, x=483..486 +x=572, y=1347..1349 +x=475, y=1059..1063 +y=199, x=437..456 +x=519, y=843..854 +y=1682, x=573..580 +x=438, y=1286..1300 +x=503, y=1955..1963 +x=514, y=987..997 +x=485, y=817..843 +x=534, y=1045..1059 +y=1458, x=485..499 +y=1207, x=447..463 +x=523, y=419..428 +y=1933, x=489..495 +y=1214, x=545..548 +x=483, y=1180..1182 +y=1521, x=607..609 +x=502, y=1747..1758 +x=555, y=907..917 +y=255, x=448..471 +y=147, x=510..534 +x=483, y=411..423 +x=479, y=1077..1087 +x=495, y=1510..1512 +x=449, y=1643..1648 +x=502, y=694..704 +x=549, y=1716..1732 +x=563, y=1154..1166 +x=466, y=167..178 +x=613, y=307..324 +x=483, y=1914..1923 +x=501, y=1330..1337 +x=592, y=240..251 +x=535, y=450..451 +y=150, x=588..614 +x=548, y=1598..1603 +y=1263, x=506..525 +x=573, y=257..258 +x=448, y=189..195 +x=535, y=441..445 +x=578, y=953..955 +x=510, y=959..987 +x=598, y=1131..1143 +y=1423, x=593..616 +x=573, y=1880..1884 +y=1942, x=433..446 +x=472, y=520..531 +x=592, y=1113..1116 +y=796, x=567..575 +y=648, x=434..459 +x=597, y=1243..1253 +x=445, y=1453..1465 +x=502, y=670..682 +x=472, y=993..1015 +x=601, y=525..544 +x=522, y=436..438 +y=1083, x=506..514 +x=469, y=325..336 +y=1253, x=570..597 +y=639, x=487..489 +x=475, y=230..232 +x=493, y=1955..1963 +x=495, y=697..709 +x=483, y=1208..1211 +x=457, y=766..768 +x=480, y=1502..1516 +x=581, y=294..316 +x=524, y=1238..1249 +x=495, y=1744..1754 +x=610, y=70..73 +x=603, y=1896..1911 +y=626, x=542..559 +x=460, y=1432..1435 +x=567, y=1637..1647 +y=195, x=448..450 +y=1603, x=548..559 +x=464, y=419..439 +y=956, x=496..507 +x=495, y=49..62 +x=576, y=847..853 +y=1527, x=562..583 +x=577, y=559..566 +x=556, y=391..401 +x=616, y=1577..1595 +x=504, y=694..704 +y=1353, x=538..555 +x=585, y=1044..1051 +y=1066, x=464..483 +x=527, y=668..671 +x=559, y=1775..1779 +y=1694, x=449..451 +y=635, x=447..450 +x=569, y=921..942 +x=444, y=778..800 +y=992, x=522..528 +x=543, y=1416..1434 +y=1626, x=544..546 +x=456, y=669..672 +y=831, x=512..528 +x=507, y=955..956 +x=562, y=376..378 +y=217, x=437..450 +y=1405, x=518..601 +x=539, y=391..401 +y=197, x=522..549 +x=470, y=1502..1516 +x=475, y=992..1015 +y=1884, x=571..573 +x=549, y=191..197 +x=499, y=1229..1247 +y=1195, x=437..463 +x=528, y=1005..1018 +y=1442, x=584..601 +x=494, y=847..868 +x=515, y=905..919 +y=577, x=499..502 +y=1012, x=446..448 +y=1162, x=573..604 +x=528, y=820..831 +y=1685, x=492..496 +x=442, y=1231..1233 +x=601, y=1449..1459 +x=528, y=1080..1084 +x=617, y=414..440 +x=465, y=572..574 +y=490, x=492..496 +x=573, y=1602..1624 +x=588, y=141..150 +x=489, y=29..39 +x=587, y=929..946 +y=197, x=564..570 +x=607, y=337..346 +x=612, y=749..765 +y=258, x=573..575 +x=557, y=236..254 +x=508, y=1724..1738 +x=573, y=848..876 +y=1702, x=601..609 +x=599, y=1074..1078 +y=226, x=511..514 +x=513, y=611..623 +x=549, y=1535..1546 +x=474, y=589..600 +x=569, y=1022..1037 +x=471, y=437..451 +y=1353, x=451..465 +y=1520, x=570..576 +x=542, y=602..626 +x=593, y=932..938 +y=1947, x=452..472 +y=1552, x=438..452 +y=154, x=458..462 +y=545, x=508..510 +x=465, y=1344..1353 +x=547, y=1935..1944 +x=467, y=1767..1778 +x=485, y=74..86 +y=543, x=508..510 +x=585, y=266..275 +y=1870, x=482..488 +x=562, y=39..67 +x=598, y=748..765 +y=1900, x=585..587 +x=581, y=1959..1971 +x=575, y=793..796 +x=455, y=558..560 +x=589, y=1352..1363 +x=574, y=1471..1484 +x=484, y=1768..1778 +x=544, y=1623..1626 +y=1949, x=539..558