diff --git a/2018/inputs/17.txt b/2018/inputs/17.txt new file mode 100644 index 0000000..c29b948 --- /dev/null +++ b/2018/inputs/17.txt @@ -0,0 +1,1884 @@ +x=309, y=1432..1458 +y=231, x=423..450 +y=1629, x=355..382 +y=1321, x=462..472 +x=478, y=804..815 +x=447, y=583..592 +y=1585, x=315..369 +x=463, y=743..745 +y=1705, x=370..372 +x=478, y=784..794 +x=590, y=149..154 +x=322, y=839..858 +x=322, y=33..38 +y=257, x=474..501 +y=530, x=562..584 +x=588, y=1364..1368 +y=1048, x=567..578 +x=391, y=395..398 +x=585, y=1397..1401 +y=590, x=452..467 +x=549, y=133..146 +y=743, x=463..465 +x=377, y=564..585 +x=405, y=91..97 +x=356, y=893..907 +x=410, y=700..702 +x=583, y=1128..1132 +x=375, y=1449..1455 +x=354, y=1408..1418 +y=876, x=468..477 +y=573, x=402..408 +y=667, x=390..409 +y=1393, x=490..495 +y=1719, x=614..617 +x=379, y=510..530 +y=524, x=369..371 +x=442, y=9..21 +x=380, y=950..975 +x=552, y=66..68 +x=429, y=1005..1020 +x=340, y=216..240 +y=1115, x=580..608 +x=487, y=672..689 +y=519, x=460..468 +y=450, x=503..506 +y=1104, x=369..494 +y=367, x=588..592 +x=409, y=1604..1630 +y=681, x=615..629 +y=1544, x=397..400 +y=71, x=338..349 +x=444, y=283..288 +x=622, y=224..251 +x=465, y=743..745 +x=591, y=1464..1471 +x=349, y=1691..1696 +x=327, y=1158..1162 +x=566, y=237..247 +x=533, y=1366..1368 +y=398, x=364..391 +x=382, y=1446..1458 +x=387, y=1637..1645 +y=266, x=505..524 +y=911, x=365..392 +x=618, y=348..350 +y=24, x=550..568 +y=244, x=558..560 +y=1046, x=360..378 +x=530, y=502..515 +y=1270, x=610..620 +x=623, y=136..162 +y=1477, x=330..349 +x=415, y=834..850 +x=358, y=1489..1502 +x=617, y=1707..1719 +y=1223, x=460..476 +x=382, y=1294..1319 +x=492, y=177..184 +x=372, y=1695..1705 +x=538, y=1573..1598 +x=415, y=238..249 +x=383, y=1070..1077 +y=1371, x=579..600 +x=394, y=1071..1077 +x=586, y=320..334 +x=420, y=481..499 +x=520, y=1307..1320 +x=349, y=1593..1605 +x=577, y=1291..1314 +y=1728, x=326..348 +x=628, y=1007..1011 +y=1424, x=605..608 +x=435, y=1072..1076 +x=355, y=1250..1256 +x=390, y=648..667 +x=520, y=695..721 +y=1011, x=603..628 +x=404, y=701..702 +x=584, y=685..687 +y=1357, x=354..356 +y=645, x=614..620 +x=470, y=992..1002 +y=1543, x=381..385 +y=1143, x=544..546 +x=320, y=1232..1234 +x=633, y=1132..1142 +x=477, y=872..876 +x=340, y=316..339 +x=352, y=1073..1079 +x=486, y=814..831 +x=475, y=1620..1640 +x=553, y=1074..1086 +y=1579, x=345..361 +x=522, y=457..458 +y=585, x=498..635 +x=468, y=513..519 +y=745, x=463..465 +y=1537, x=397..400 +x=448, y=1004..1020 +x=492, y=1543..1546 +x=567, y=1593..1614 +x=566, y=1384..1393 +x=491, y=717..729 +x=334, y=461..481 +y=1697, x=505..508 +y=1437, x=389..403 +x=582, y=36..48 +x=594, y=1323..1345 +x=401, y=1495..1501 +y=1335, x=494..508 +y=782, x=509..511 +x=611, y=484..496 +x=462, y=1281..1297 +x=503, y=1436..1462 +y=850, x=415..420 +y=646, x=336..361 +x=548, y=238..247 +x=330, y=404..406 +x=502, y=408..426 +y=1122, x=307..309 +y=1084, x=342..359 +y=1144, x=312..334 +y=1409, x=380..387 +x=591, y=263..266 +x=367, y=1493..1495 +y=147, x=348..350 +x=496, y=1689..1707 +y=1037, x=434..450 +x=533, y=502..515 +x=513, y=676..689 +x=478, y=700..710 +x=368, y=778..781 +y=1380, x=346..363 +x=604, y=481..493 +x=325, y=438..459 +x=621, y=1606..1614 +y=1533, x=528..530 +x=603, y=929..942 +x=541, y=504..518 +y=1126, x=514..537 +y=369, x=588..592 +x=578, y=216..224 +x=558, y=88..92 +y=997, x=491..500 +x=509, y=779..782 +x=540, y=983..993 +y=641, x=365..370 +x=332, y=501..524 +x=542, y=1261..1274 +y=885, x=417..433 +x=514, y=384..387 +y=1252, x=309..321 +x=412, y=1571..1597 +x=409, y=648..667 +y=1096, x=510..512 +y=1694, x=430..441 +x=516, y=1005..1025 +x=460, y=513..519 +y=1640, x=463..475 +x=420, y=1684..1686 +x=523, y=556..560 +x=381, y=1349..1352 +x=559, y=443..450 +y=975, x=354..380 +x=356, y=865..872 +x=500, y=528..542 +x=402, y=1639..1649 +y=1422, x=605..608 +x=383, y=1474..1476 +y=1385, x=618..633 +x=378, y=240..265 +x=548, y=322..326 +x=570, y=342..351 +x=552, y=1366..1368 +y=836, x=306..322 +x=528, y=527..537 +x=382, y=1617..1629 +x=295, y=1349..1351 +x=326, y=1266..1278 +y=235, x=460..466 +y=53, x=362..384 +x=440, y=157..170 +y=625, x=347..372 +x=610, y=339..353 +y=836, x=464..480 +x=524, y=1572..1598 +y=1604, x=376..378 +x=429, y=180..182 +y=1073, x=350..352 +y=713, x=336..359 +x=618, y=1343..1356 +x=378, y=692..695 +x=471, y=92..101 +x=610, y=1192..1194 +y=1217, x=431..455 +y=1146, x=360..520 +y=73, x=314..316 +x=592, y=1296..1308 +y=1617, x=303..307 +x=324, y=673..687 +x=594, y=793..799 +x=496, y=1051..1063 +x=342, y=400..413 +x=502, y=72..82 +x=578, y=257..268 +y=1255, x=509..528 +x=534, y=1153..1163 +x=599, y=680..694 +y=1667, x=582..599 +x=352, y=1388..1399 +x=373, y=826..832 +x=466, y=230..235 +x=343, y=584..595 +x=626, y=1148..1164 +y=1234, x=484..509 +x=322, y=1053..1056 +x=349, y=1664..1667 +x=335, y=500..524 +x=533, y=278..279 +x=392, y=132..136 +x=434, y=1037..1039 +x=537, y=484..489 +x=375, y=1474..1476 +x=445, y=360..387 +x=555, y=406..420 +x=365, y=897..911 +y=324, x=378..389 +y=1702, x=457..473 +x=353, y=1368..1377 +x=460, y=950..959 +y=354, x=444..449 +y=1505, x=569..578 +x=329, y=1681..1699 +x=476, y=1214..1223 +x=569, y=523..525 +y=542, x=522..538 +y=1684, x=370..375 +x=618, y=1188..1202 +x=518, y=1239..1248 +x=415, y=1206..1210 +x=306, y=818..836 +x=438, y=1605..1618 +x=373, y=1621..1623 +x=595, y=1591..1599 +x=348, y=1725..1728 +x=552, y=864..867 +x=504, y=245..247 +y=537, x=528..532 +y=869, x=584..601 +x=339, y=1536..1540 +y=1271, x=511..524 +x=602, y=147..162 +y=1446, x=509..534 +y=1563, x=326..344 +y=563, x=305..330 +y=1536, x=339..344 +x=440, y=325..330 +y=1182, x=510..514 +x=481, y=493..506 +y=313, x=576..592 +x=393, y=371..376 +x=394, y=1262..1272 +x=591, y=710..727 +x=345, y=250..265 +y=995, x=568..577 +y=278, x=413..418 +x=598, y=1073..1099 +y=1560, x=333..338 +x=486, y=32..44 +x=577, y=926..934 +x=361, y=642..646 +y=193, x=528..549 +x=301, y=518..544 +y=1208, x=312..321 +x=342, y=656..662 +x=603, y=1323..1345 +x=503, y=775..785 +y=689, x=396..400 +x=596, y=895..902 +x=526, y=833..841 +x=498, y=783..794 +x=326, y=1725..1728 +x=475, y=1563..1588 +x=419, y=724..738 +x=321, y=1527..1531 +x=433, y=142..158 +x=596, y=1469..1496 +x=341, y=982..989 +y=378, x=497..504 +y=1599, x=621..633 +x=355, y=1617..1629 +y=1039, x=434..450 +x=360, y=827..832 +x=393, y=1467..1479 +y=937, x=344..350 +x=501, y=251..257 +y=526, x=369..371 +x=527, y=427..438 +y=1599, x=595..615 +x=486, y=1562..1588 +x=358, y=1550..1563 +y=82, x=471..502 +x=300, y=259..276 +y=808, x=492..494 +x=444, y=335..354 +y=1368, x=443..445 +x=567, y=1022..1048 +x=620, y=440..452 +x=572, y=600..612 +x=442, y=583..592 +y=194, x=622..624 +y=184, x=375..379 +x=304, y=1432..1458 +x=443, y=617..637 +x=332, y=1446..1458 +x=327, y=888..913 +x=588, y=1463..1471 +y=1278, x=313..326 +y=493, x=526..550 +x=301, y=438..459 +x=467, y=1158..1182 +y=592, x=442..447 +x=618, y=1364..1385 +x=499, y=35..37 +x=470, y=673..689 +x=620, y=1255..1270 +x=329, y=792..815 +x=389, y=513..532 +y=1598, x=524..538 +x=350, y=1073..1079 +x=414, y=514..532 +x=334, y=128..155 +y=1021, x=404..422 +x=543, y=1457..1476 +x=527, y=297..303 +x=363, y=1677..1687 +x=325, y=399..413 +x=436, y=728..749 +x=561, y=1187..1192 +x=632, y=1149..1164 +y=630, x=474..493 +y=1471, x=422..436 +y=1074, x=553..556 +y=882, x=377..389 +x=404, y=1010..1021 +x=307, y=1461..1481 +y=1018, x=473..478 +x=568, y=35..48 +x=351, y=1194..1202 +x=373, y=1449..1455 +x=516, y=610..617 +y=617, x=607..616 +y=493, x=601..604 +x=618, y=1545..1561 +y=158, x=419..433 +x=560, y=235..244 +x=362, y=38..53 +x=309, y=1120..1122 +x=342, y=1066..1084 +x=495, y=1381..1393 +x=505, y=1634..1641 +x=526, y=791..798 +y=1052, x=583..589 +x=557, y=1135..1146 +x=318, y=34..38 +y=601, x=426..428 +x=530, y=70..74 +y=1099, x=581..598 +y=342, x=466..468 +x=512, y=1094..1096 +x=568, y=984..995 +y=32, x=599..618 +y=1720, x=590..608 +x=365, y=630..641 +y=1571, x=453..466 +y=492, x=617..624 +y=1301, x=341..359 +x=536, y=777..784 +x=589, y=1051..1052 +x=429, y=802..819 +y=1397, x=469..471 +x=620, y=627..645 +y=1431, x=557..576 +y=785, x=503..529 +y=1269, x=402..404 +y=940, x=419..458 +x=590, y=1024..1039 +x=345, y=1576..1579 +x=387, y=287..306 +x=628, y=137..162 +x=336, y=641..646 +x=624, y=1651..1661 +y=944, x=505..511 +x=481, y=989..999 +x=369, y=1595..1608 +y=858, x=317..322 +x=302, y=260..276 +x=347, y=766..769 +x=599, y=1665..1667 +x=561, y=1384..1393 +x=354, y=1345..1357 +y=330, x=530..554 +x=614, y=1708..1719 +y=420, x=540..555 +x=313, y=1011..1029 +x=297, y=1074..1096 +x=362, y=765..769 +y=1409, x=579..595 +y=287, x=585..588 +x=594, y=1024..1039 +y=247, x=504..519 +x=448, y=616..637 +y=210, x=542..566 +x=629, y=666..681 +x=383, y=832..834 +y=238, x=300..324 +x=364, y=1347..1361 +y=405, x=466..478 +y=35, x=494..499 +x=611, y=1553..1556 +y=993, x=540..552 +y=1667, x=342..349 +x=592, y=300..313 +x=563, y=916..934 +x=471, y=1239..1256 +x=463, y=89..98 +x=472, y=1319..1321 +x=373, y=1556..1560 +x=566, y=218..229 +y=617, x=516..540 +y=249, x=415..441 +x=426, y=1177..1182 +y=816, x=400..421 +x=319, y=117..140 +y=821, x=311..315 +y=1563, x=358..381 +y=1143, x=346..357 +x=546, y=777..784 +x=300, y=213..238 +x=417, y=861..885 +x=604, y=1292..1314 +x=389, y=1533..1552 +y=1661, x=618..624 +y=160, x=390..399 +y=542, x=494..500 +y=669, x=504..526 +x=549, y=175..193 +x=412, y=1262..1272 +x=457, y=339..356 +x=400, y=435..454 +x=521, y=1173..1185 +y=1142, x=614..633 +x=392, y=599..621 +x=514, y=1112..1126 +x=618, y=119..142 +y=44, x=486..505 +x=490, y=372..384 +y=355, x=564..581 +x=305, y=694..715 +y=1548, x=559..572 +y=481, x=334..347 +x=583, y=1532..1557 +y=396, x=548..564 +x=400, y=811..816 +x=423, y=361..387 +x=411, y=334..337 +y=1531, x=302..321 +x=570, y=445..455 +x=394, y=1637..1645 +x=468, y=801..811 +x=538, y=1506..1533 +y=454, x=400..423 +x=561, y=1437..1448 +y=585, x=364..377 +x=503, y=219..224 +x=555, y=1303..1317 +x=616, y=609..617 +y=824, x=311..315 +x=543, y=1166..1176 +x=305, y=1594..1604 +x=301, y=288..305 +y=1567, x=418..432 +y=1546, x=473..492 +y=1210, x=499..516 +y=748, x=491..511 +y=1256, x=464..471 +x=411, y=146..164 +y=1248, x=518..520 +x=473, y=1699..1702 +y=347, x=466..468 +x=318, y=1149..1167 +y=155, x=334..358 +x=490, y=677..689 +y=1311, x=623..625 +x=408, y=53..80 +y=1056, x=318..322 +y=1372, x=382..409 +x=434, y=84..91 +x=352, y=865..872 +x=483, y=373..384 +y=1418, x=334..354 +y=387, x=514..534 +x=355, y=1516..1518 +x=391, y=688..701 +y=38, x=318..322 +y=195, x=583..590 +x=363, y=1370..1380 +y=1577, x=493..499 +y=1194, x=608..610 +x=605, y=968..992 +x=531, y=40..56 +y=460, x=475..478 +x=384, y=147..164 +x=353, y=1285..1291 +x=615, y=1590..1599 +x=381, y=1549..1563 +x=497, y=473..492 +x=552, y=984..993 +y=959, x=539..551 +y=65, x=466..479 +x=318, y=1053..1056 +x=568, y=182..186 +x=342, y=1598..1621 +y=1493, x=470..490 +x=609, y=928..942 +y=290, x=578..597 +y=467, x=303..320 +x=457, y=1698..1702 +x=460, y=492..506 +x=588, y=367..369 +x=470, y=1489..1493 +y=1438, x=344..367 +x=544, y=1132..1143 +x=473, y=1280..1297 +x=566, y=320..334 +x=402, y=1267..1269 +y=1215, x=590..605 +x=358, y=1532..1544 +x=625, y=1301..1311 +y=999, x=478..481 +x=514, y=811..817 +x=384, y=940..944 +y=74, x=530..539 +x=542, y=1036..1039 +y=899, x=443..494 +y=426, x=464..466 +x=358, y=128..155 +x=419, y=927..940 +x=505, y=645..647 +y=452, x=620..631 +x=520, y=1134..1146 +x=454, y=947..956 +x=456, y=738..748 +x=592, y=667..669 +y=229, x=394..406 +x=444, y=1514..1520 +x=375, y=1674..1684 +y=1338, x=350..539 +x=340, y=1463..1474 +y=91, x=434..447 +y=418, x=609..613 +x=574, y=179..189 +x=612, y=224..251 +x=595, y=1188..1202 +x=356, y=585..595 +y=1228, x=406..424 +y=1540, x=339..344 +y=1291, x=351..353 +x=338, y=1387..1399 +x=518, y=407..426 +y=1182, x=467..479 +y=413, x=325..342 +y=1407, x=621..624 +x=346, y=1511..1525 +y=1449, x=373..375 +x=361, y=1516..1518 +x=355, y=1430..1435 +y=1164, x=626..632 +x=530, y=733..734 +x=364, y=1556..1560 +y=798, x=505..526 +x=506, y=1043..1058 +x=492, y=801..808 +x=438, y=10..21 +x=460, y=89..98 +x=480, y=1422..1426 +y=1192, x=608..610 +y=1588, x=475..486 +y=637, x=443..448 +y=1090, x=540..562 +x=586, y=297..310 +y=420, x=609..613 +y=715, x=303..305 +x=583, y=1050..1052 +x=302, y=983..993 +x=432, y=1402..1406 +y=1710, x=589..606 +x=560, y=256..268 +x=551, y=953..959 +x=494, y=1090..1104 +y=1501, x=401..418 +x=603, y=412..425 +x=593, y=1171..1178 +y=1079, x=350..352 +x=385, y=1527..1543 +x=485, y=1010..1021 +y=80, x=408..427 +x=371, y=109..117 +x=454, y=1245..1255 +y=944, x=384..412 +x=524, y=1550..1560 +y=989, x=327..341 +y=69, x=314..316 +x=370, y=1511..1525 +y=1476, x=524..543 +x=330, y=1465..1477 +y=1317, x=528..555 +y=727, x=582..591 +x=409, y=1363..1372 +x=609, y=1022..1025 +y=240, x=333..340 +y=1165, x=425..428 +x=534, y=384..387 +x=515, y=219..224 +x=485, y=854..856 +x=377, y=876..882 +x=543, y=431..434 +y=602, x=322..330 +x=464, y=1238..1256 +x=400, y=1537..1544 +x=482, y=1375..1398 +x=315, y=1611..1625 +x=613, y=1040..1061 +x=436, y=1457..1471 +x=378, y=1593..1604 +x=535, y=431..434 +x=344, y=1536..1540 +y=1630, x=409..420 +x=546, y=1511..1536 +y=101, x=453..471 +x=615, y=666..681 +y=981, x=405..470 +y=1455, x=373..375 +x=550, y=11..24 +x=403, y=1418..1437 +y=76, x=413..420 +x=604, y=718..720 +x=422, y=1520..1526 +x=541, y=917..934 +y=706, x=486..493 +x=413, y=221..226 +x=504, y=375..378 +x=598, y=361..372 +x=472, y=821..832 +x=413, y=61..76 +y=149, x=590..595 +y=1725, x=415..428 +x=443, y=1356..1368 +x=334, y=1342..1345 +x=367, y=1427..1438 +y=1552, x=389..407 +x=426, y=492..494 +x=480, y=163..166 +x=527, y=76..87 +y=733, x=371..381 +x=502, y=871..890 +x=511, y=1265..1271 +x=576, y=299..313 +x=590, y=1206..1215 +x=537, y=1436..1448 +x=353, y=251..265 +x=579, y=1392..1409 +y=130, x=560..574 +y=1427, x=598..623 +y=1291, x=548..554 +x=392, y=1657..1667 +y=1396, x=550..576 +x=528, y=39..56 +x=605, y=1422..1424 +x=417, y=481..499 +x=564, y=344..355 +x=321, y=1241..1252 +x=315, y=1571..1585 +x=481, y=1028..1042 +y=907, x=353..356 +x=342, y=1665..1667 +x=436, y=107..134 +x=322, y=593..602 +y=481, x=313..331 +y=1625, x=295..315 +x=539, y=69..74 +y=1368, x=588..592 +y=1474, x=340..343 +x=405, y=967..981 +x=301, y=763..789 +y=162, x=623..628 +y=738, x=394..419 +y=1351, x=295..310 +y=1398, x=482..485 +x=356, y=1345..1357 +x=541, y=1512..1536 +x=307, y=287..305 +y=426, x=502..518 +y=834, x=383..392 +y=119, x=593..600 +x=561, y=1129..1132 +x=314, y=69..73 +x=569, y=760..788 +x=515, y=1307..1320 +y=280, x=307..311 +x=583, y=146..162 +x=312, y=1196..1208 +y=1604, x=305..322 +x=296, y=1681..1683 +y=34, x=400..424 +x=554, y=204..207 +x=367, y=329..332 +y=1479, x=370..393 +x=562, y=507..530 +x=326, y=1549..1563 +x=344, y=1427..1438 +x=451, y=1536..1538 +x=554, y=317..330 +y=142, x=604..618 +x=331, y=1599..1621 +y=1039, x=539..542 +y=337, x=408..411 +y=1643, x=354..356 +x=577, y=983..995 +y=1608, x=369..385 +x=346, y=1371..1380 +y=1368, x=421..425 +x=363, y=330..332 +x=504, y=659..669 +y=85, x=378..391 +x=494, y=1332..1335 +y=163, x=477..480 +x=589, y=667..669 +x=498, y=1379..1393 +y=859, x=471..491 +x=334, y=1133..1144 +x=614, y=1605..1614 +y=1345, x=594..603 +x=434, y=824..826 +x=381, y=714..733 +y=247, x=548..566 +y=1673, x=474..489 +x=429, y=908..918 +x=431, y=292..295 +x=621, y=1591..1599 +x=337, y=1637..1652 +x=509, y=1423..1446 +x=574, y=792..799 +y=1671, x=380..398 +x=303, y=1012..1029 +x=442, y=949..959 +y=431, x=535..543 +x=516, y=1196..1210 +y=268, x=560..578 +x=404, y=1294..1319 +y=266, x=591..619 +y=1063, x=382..496 +y=1683, x=296..299 +x=299, y=1682..1683 +x=309, y=1241..1252 +x=449, y=801..819 +y=967, x=316..344 +x=336, y=1149..1167 +x=579, y=579..582 +x=295, y=116..140 +y=276, x=300..302 +x=478, y=390..405 +y=992, x=605..612 +y=328, x=490..497 +x=302, y=1528..1531 +y=212, x=467..471 +y=1210, x=447..449 +y=428, x=380..393 +y=1022, x=605..609 +x=460, y=1215..1223 +x=347, y=1691..1696 +y=499, x=417..420 +y=1204, x=508..510 +x=610, y=1256..1270 +x=546, y=1166..1176 +x=393, y=1390..1412 +y=350, x=618..622 +y=1448, x=537..561 +y=366, x=397..417 +y=87, x=505..527 +x=464, y=824..836 +x=508, y=1692..1697 +y=1409, x=423..438 +x=347, y=1153..1161 +x=347, y=461..481 +y=595, x=343..356 +y=1086, x=553..556 +y=1210, x=415..417 +y=1406, x=430..432 +x=556, y=1480..1507 +y=492, x=497..517 +x=356, y=1639..1643 +x=614, y=1133..1142 +y=332, x=363..367 +x=586, y=993..1006 +x=329, y=89..111 +x=370, y=1468..1479 +x=424, y=23..34 +x=629, y=367..394 +y=519, x=598..623 +x=493, y=618..630 +x=468, y=342..347 +x=369, y=524..526 +x=478, y=1008..1018 +x=554, y=1281..1291 +x=532, y=527..537 +x=450, y=217..231 +x=590, y=180..195 +x=511, y=918..944 +x=352, y=736..756 +x=553, y=1168..1180 +x=599, y=16..32 +x=418, y=273..278 +y=621, x=383..392 +x=499, y=1568..1577 +x=479, y=338..356 +y=913, x=324..327 +x=438, y=1395..1409 +x=344, y=911..937 +y=755, x=518..525 +x=372, y=599..625 +y=1255, x=436..454 +x=423, y=218..231 +y=1560, x=516..524 +x=548, y=1281..1291 +x=560, y=108..130 +y=749, x=422..436 +x=515, y=10..23 +y=1077, x=383..394 +y=1273, x=549..564 +x=382, y=1363..1372 +x=313, y=471..481 +y=1294, x=542..560 +x=380, y=100..120 +x=558, y=381..393 +x=610, y=744..772 +y=315, x=399..416 +x=420, y=834..850 +y=942, x=603..609 +y=1000, x=395..411 +y=134, x=430..436 +x=484, y=1221..1234 +y=1504, x=468..470 +x=463, y=1498..1518 +x=359, y=1281..1301 +y=111, x=306..329 +x=524, y=250..266 +x=410, y=609..635 +y=734, x=530..544 +x=371, y=1714..1727 +x=416, y=306..315 +x=445, y=1356..1368 +y=154, x=590..595 +x=359, y=100..120 +y=1520, x=444..447 +x=602, y=1488..1493 +y=1481, x=307..312 +y=662, x=342..370 +x=509, y=346..349 +y=687, x=324..351 +x=512, y=345..349 +x=347, y=1016..1021 +x=540, y=1070..1090 +x=311, y=821..824 +y=288, x=444..466 +x=489, y=1184..1199 +x=580, y=627..637 +x=417, y=363..366 +x=498, y=304..312 +y=182, x=429..453 +x=332, y=1231..1234 +x=422, y=727..749 +x=493, y=704..706 +y=1538, x=430..451 +x=475, y=1408..1412 +x=566, y=841..850 +x=470, y=967..981 +x=453, y=91..101 +x=431, y=1073..1076 +x=334, y=1483..1495 +y=326, x=539..548 +y=186, x=375..379 +x=428, y=594..601 +x=585, y=274..287 +x=467, y=209..212 +y=1633, x=478..483 +x=389, y=1417..1437 +x=471, y=209..212 +y=184, x=492..502 +x=463, y=759..772 +x=540, y=609..617 +x=333, y=215..240 +x=518, y=696..721 +x=483, y=1070..1082 +x=458, y=360..385 +y=1163, x=509..534 +x=370, y=630..641 +y=817, x=514..532 +x=386, y=173..191 +x=363, y=1637..1646 +x=370, y=1674..1684 +x=434, y=1155..1172 +y=189, x=557..574 +x=364, y=563..585 +y=310, x=584..586 +x=562, y=18..20 +y=769, x=347..362 +x=601, y=853..869 +y=1234, x=320..332 +y=694, x=443..449 +x=417, y=1206..1210 +x=345, y=1592..1605 +x=466, y=284..288 +x=461, y=1441..1467 +x=394, y=723..738 +y=1020, x=429..448 +x=348, y=1405..1414 +x=485, y=596..609 +y=489, x=537..542 +x=608, y=1717..1720 +x=342, y=1636..1646 +x=328, y=735..756 +x=384, y=240..265 +x=541, y=1709..1727 +y=756, x=328..352 +x=505, y=736..745 +x=525, y=556..560 +x=379, y=1717..1730 +x=508, y=1070..1082 +x=621, y=1100..1120 +y=434, x=535..543 +y=954, x=583..591 +x=583, y=181..195 +y=1536, x=541..546 +x=428, y=1707..1725 +x=394, y=1203..1212 +x=460, y=230..235 +x=499, y=9..23 +x=621, y=412..425 +x=501, y=1437..1462 +x=427, y=54..80 +x=582, y=1664..1667 +x=312, y=983..993 +x=408, y=334..337 +x=558, y=235..244 +x=328, y=1485..1498 +x=394, y=777..781 +y=815, x=329..341 +x=528, y=1241..1255 +x=576, y=1639..1642 +y=1286, x=504..523 +x=581, y=1252..1264 +x=334, y=1407..1418 +x=404, y=1267..1269 +y=1645, x=431..442 +x=361, y=1015..1021 +x=448, y=133..146 +x=519, y=246..247 +x=591, y=1219..1243 +x=385, y=1596..1608 +x=557, y=366..368 +y=1401, x=585..587 +x=532, y=810..817 +x=579, y=1352..1371 +x=570, y=1252..1264 +x=608, y=1192..1194 +y=506, x=460..481 +x=588, y=274..287 +x=577, y=1437..1456 +x=566, y=197..210 +y=1272, x=394..412 +y=635, x=410..419 +x=592, y=367..369 +x=406, y=522..525 +x=569, y=1490..1505 +y=265, x=378..384 +x=430, y=1677..1694 +y=1642, x=576..578 +x=389, y=1349..1352 +x=605, y=1488..1493 +y=704, x=464..466 +x=384, y=39..53 +x=623, y=1412..1427 +x=478, y=989..999 +x=344, y=951..967 +x=466, y=342..347 +x=529, y=1637..1658 +x=510, y=1094..1096 +x=378, y=65..85 +x=549, y=723..728 +y=1180, x=535..553 +y=1176, x=543..546 +y=1399, x=338..352 +y=745, x=502..505 +y=1498, x=328..345 +x=463, y=633..653 +x=578, y=680..694 +x=602, y=1533..1536 +y=1621, x=373..375 +x=478, y=1619..1633 +y=1623, x=373..375 +y=1402, x=430..432 +x=419, y=610..635 +x=590, y=1716..1720 +x=336, y=700..713 +x=470, y=1504..1511 +x=383, y=599..621 +x=307, y=259..280 +x=348, y=136..147 +x=322, y=819..836 +x=635, y=573..585 +y=387, x=423..445 +x=413, y=274..278 +x=590, y=1436..1456 +x=578, y=523..525 +x=453, y=1546..1571 +x=612, y=967..992 +y=1185, x=501..521 +x=388, y=1202..1212 +x=406, y=1203..1228 +x=509, y=1154..1163 +x=369, y=137..150 +x=528, y=1530..1533 +x=607, y=610..617 +x=455, y=1192..1217 +y=701, x=369..391 +x=353, y=892..907 +x=479, y=1158..1182 +x=443, y=889..899 +x=428, y=1165..1167 +x=389, y=315..324 +y=48, x=568..582 +y=1199, x=489..493 +y=890, x=502..520 +y=959, x=442..460 +x=617, y=477..492 +x=524, y=1265..1271 +x=601, y=719..720 +y=265, x=345..353 +x=345, y=1486..1498 +y=1178, x=593..608 +x=330, y=593..602 +y=525, x=395..406 +y=1687, x=363..381 +x=539, y=952..959 +x=584, y=832..839 +x=509, y=305..312 +x=462, y=1319..1321 +x=509, y=1221..1234 +x=396, y=463..466 +x=580, y=1109..1115 +x=585, y=489..498 +x=565, y=1197..1219 +y=498, x=568..585 +y=209, x=344..350 +y=1120, x=614..621 +y=1652, x=329..337 +x=305, y=58..78 +y=1161, x=347..349 +y=956, x=452..454 +y=1096, x=297..306 +x=511, y=779..782 +y=1605, x=345..349 +y=741, x=295..300 +x=582, y=709..727 +x=615, y=1017..1030 +x=305, y=561..563 +y=1146, x=537..557 +x=571, y=1639..1656 +y=875, x=344..362 +x=505, y=75..87 +y=473, x=541..609 +y=565, x=512..532 +y=689, x=470..487 +y=772, x=463..486 +x=387, y=482..505 +x=315, y=1341..1345 +x=602, y=367..394 +x=572, y=1522..1548 +x=350, y=136..147 +x=458, y=927..940 +x=310, y=1041..1064 +x=551, y=1701..1720 +y=815, x=461..478 +x=505, y=32..44 +x=447, y=83..91 +y=419, x=410..419 +y=1172, x=416..434 +x=433, y=861..885 +x=380, y=421..428 +y=1666, x=613..630 +y=215, x=459..477 +x=397, y=363..366 +x=429, y=1504..1525 +x=376, y=1593..1604 +x=561, y=1644..1652 +x=295, y=714..741 +y=1219, x=538..565 +x=583, y=1296..1308 +x=550, y=1380..1396 +x=391, y=65..85 +x=566, y=182..186 +x=494, y=51..65 +y=56, x=528..531 +x=494, y=1616..1627 +x=468, y=872..876 +y=1039, x=590..594 +y=120, x=359..380 +x=466, y=391..405 +x=453, y=823..826 +x=430, y=1535..1538 +x=573, y=342..351 +y=186, x=566..568 +x=317, y=840..858 +x=503, y=429..450 +y=1404, x=380..387 +x=490, y=1382..1393 +y=305, x=301..307 +x=593, y=114..119 +x=520, y=1239..1248 +x=582, y=1238..1240 +y=1064, x=310..329 +y=1240, x=582..584 +x=620, y=720..734 +x=603, y=1007..1011 +x=375, y=1621..1623 +y=1597, x=412..428 +y=20, x=506..508 +y=356, x=457..479 +y=1656, x=547..571 +y=748, x=456..475 +y=1202, x=342..351 +x=464, y=717..729 +x=577, y=360..372 +x=386, y=90..97 +x=447, y=493..494 +x=455, y=361..385 +y=458, x=496..522 +x=595, y=149..154 +x=547, y=1638..1656 +x=609, y=462..473 +x=538, y=1197..1219 +x=595, y=1393..1409 +x=562, y=443..450 +x=391, y=1028..1042 +x=307, y=1617..1621 +x=453, y=180..182 +x=389, y=875..882 +x=374, y=109..117 +x=329, y=1636..1652 +x=515, y=1689..1707 +x=499, y=1617..1627 +y=832, x=472..474 +y=1618, x=438..445 +x=530, y=318..330 +y=518, x=524..541 +y=65, x=494..516 +x=488, y=814..831 +y=1614, x=614..621 +x=514, y=1179..1182 +x=389, y=28..31 +y=29, x=606..608 +x=496, y=1495..1500 +x=458, y=1441..1467 +y=1006, x=586..591 +x=586, y=814..823 +x=336, y=404..406 +x=497, y=375..378 +x=303, y=463..467 +x=570, y=362..376 +x=466, y=1545..1571 +x=344, y=1550..1563 +y=1476, x=375..383 +x=605, y=86..99 +x=500, y=976..997 +x=576, y=657..675 +x=307, y=1120..1122 +y=1021, x=468..485 +y=496, x=594..611 +x=606, y=25..29 +y=376, x=371..393 +x=432, y=1551..1567 +x=450, y=908..918 +x=447, y=1514..1520 +y=1107, x=571..575 +y=455, x=552..570 +x=575, y=1218..1243 +x=509, y=1242..1255 +x=508, y=7..20 +y=1167, x=425..428 +x=603, y=832..839 +x=399, y=157..160 +y=1544, x=332..358 +y=1621, x=303..307 +x=421, y=1366..1368 +y=329, x=354..358 +x=623, y=505..519 +y=525, x=569..578 +x=450, y=1037..1039 +y=21, x=438..442 +x=400, y=671..689 +y=92, x=556..558 +y=609, x=485..505 +x=441, y=239..249 +x=578, y=1021..1048 +y=1518, x=355..361 +x=406, y=211..229 +y=1082, x=483..508 +x=375, y=29..31 +x=447, y=1207..1210 +x=452, y=568..590 +y=1030, x=599..615 +y=702, x=404..410 +x=512, y=552..565 +x=306, y=90..111 +x=552, y=1644..1652 +y=330, x=440..454 +x=397, y=1537..1544 +y=191, x=365..386 +y=1687, x=614..628 +x=453, y=419..433 +x=471, y=1374..1397 +x=494, y=800..808 +y=1029, x=303..313 +x=357, y=1682..1699 +x=330, y=562..563 +x=380, y=1660..1671 +x=306, y=1075..1096 +y=170, x=440..564 +x=392, y=897..911 +y=1361, x=348..364 +x=498, y=574..585 +x=370, y=657..662 +x=613, y=418..420 +x=516, y=641..650 +x=524, y=1456..1476 +y=788, x=555..569 +x=630, y=1644..1666 +y=1308, x=583..592 +y=25, x=606..608 +x=537, y=1134..1146 +y=1352, x=381..389 +x=508, y=1194..1204 +y=166, x=477..480 +x=416, y=1156..1172 +y=1511, x=468..470 +x=378, y=1040..1046 +x=556, y=1074..1086 +x=425, y=1165..1167 +x=609, y=418..420 +y=669, x=589..592 +y=1397, x=585..587 +x=587, y=685..687 +x=385, y=481..505 +x=501, y=1174..1185 +x=360, y=1041..1046 +x=603, y=1544..1561 +x=560, y=1284..1294 +x=336, y=1251..1256 +x=505, y=791..798 +x=381, y=1527..1543 +x=502, y=736..745 +y=466, x=373..396 +x=510, y=1194..1204 +x=341, y=793..815 +y=1495, x=334..339 +x=357, y=1368..1377 +x=540, y=406..420 +x=538, y=530..542 +x=490, y=317..328 +x=300, y=714..741 +x=628, y=1676..1687 +y=867, x=527..552 +y=1182, x=422..426 +y=1426, x=480..502 +x=350, y=195..209 +x=428, y=1570..1597 +x=300, y=156..181 +x=425, y=1367..1368 +y=1526, x=416..422 +x=303, y=694..715 +x=324, y=214..238 +x=468, y=1011..1021 +x=397, y=550..567 +x=518, y=731..755 +x=371, y=1389..1412 +x=625, y=719..734 +y=146, x=448..549 +x=586, y=626..637 +x=589, y=1698..1710 +y=123, x=462..541 +x=539, y=1036..1039 +x=624, y=478..492 +x=614, y=1342..1356 +y=1645, x=387..394 +x=618, y=15..32 +x=513, y=1496..1500 +x=321, y=1196..1208 +y=162, x=583..602 +x=474, y=821..832 +x=605, y=1022..1025 +x=416, y=1683..1686 +x=532, y=552..565 +x=333, y=1547..1560 +x=474, y=252..257 +y=1576, x=345..361 +x=614, y=1100..1120 +x=442, y=1627..1645 +y=532, x=389..414 +x=396, y=671..689 +y=425, x=603..621 +x=469, y=1373..1397 +x=349, y=49..71 +y=1686, x=416..420 +x=456, y=57..60 +x=461, y=803..815 +x=598, y=1413..1427 +x=353, y=1430..1435 +x=455, y=1589..1596 +y=181, x=300..312 +x=295, y=1611..1625 +y=650, x=466..516 +y=251, x=612..622 +x=373, y=286..306 +x=602, y=657..675 +x=449, y=685..694 +y=1720, x=551..577 +x=486, y=760..772 +x=633, y=1364..1385 +x=360, y=1156..1165 +y=372, x=577..598 +y=1165, x=342..360 +y=71, x=620..625 +x=310, y=1348..1351 +x=457, y=867..881 +y=695, x=378..381 +y=1435, x=353..355 +x=534, y=1507..1533 +x=591, y=947..954 +x=549, y=1017..1044 +x=346, y=1132..1143 +x=409, y=222..226 +x=530, y=1017..1044 +y=1021, x=347..361 +x=524, y=505..518 +x=550, y=481..493 +x=550, y=834..841 +y=850, x=557..566 +y=1285, x=351..353 +x=395, y=988..1000 +x=555, y=381..393 +y=1101, x=376..422 +y=1507, x=556..560 +x=342, y=1155..1165 +x=530, y=1529..1533 +x=487, y=991..1002 +y=1467, x=458..461 +x=478, y=449..460 +x=598, y=505..519 +x=350, y=1328..1338 +y=339, x=340..348 +x=330, y=1158..1162 +x=369, y=1571..1585 +x=565, y=813..823 +x=516, y=1550..1560 +x=454, y=325..330 +x=584, y=1238..1240 +y=394, x=602..629 +x=343, y=1463..1474 +y=23, x=499..515 +x=575, y=1104..1107 +y=1104, x=502..522 +x=548, y=67..68 +y=560, x=523..525 +y=530, x=358..379 +x=376, y=1098..1101 +x=581, y=1073..1099 +x=630, y=338..353 +x=354, y=949..975 +x=348, y=315..339 +x=525, y=731..755 +y=1596, x=443..455 +y=1332, x=494..508 +y=734, x=620..625 +x=499, y=1197..1210 +y=1730, x=359..379 +x=462, y=110..123 +x=604, y=119..142 +x=395, y=522..525 +y=974, x=431..449 +x=371, y=524..526 +x=486, y=704..706 +y=1345, x=315..334 +x=571, y=1103..1107 +x=502, y=177..184 +x=421, y=810..816 +y=1496, x=596..617 +x=331, y=470..481 +x=624, y=1391..1407 +x=494, y=888..899 +x=614, y=626..645 +y=1192, x=561..568 +x=411, y=988..1000 +y=1393, x=561..566 +x=388, y=131..136 +x=451, y=632..653 +x=361, y=1697..1709 +x=584, y=853..869 +x=359, y=1716..1730 +x=527, y=865..867 +y=993, x=302..312 +y=1414, x=346..348 +y=20, x=560..562 +y=839, x=584..603 +y=349, x=509..512 +y=207, x=552..554 +y=1699, x=329..357 +x=430, y=108..134 +y=1727, x=527..541 +x=510, y=1379..1393 +x=471, y=73..82 +x=528, y=176..193 +y=351, x=570..573 +y=902, x=576..596 +y=728, x=549..568 +x=485, y=1374..1398 +x=576, y=1411..1431 +y=295, x=425..431 +y=687, x=584..587 +y=823, x=565..586 +x=410, y=1315..1324 +x=466, y=57..65 +x=358, y=312..329 +x=557, y=180..189 +y=1500, x=496..513 +y=544, x=301..306 +x=371, y=1493..1495 +x=594, y=483..496 +x=486, y=645..647 +x=502, y=1421..1426 +x=477, y=205..215 +x=577, y=1702..1720 +y=1264, x=570..581 +y=1495, x=367..371 +x=452, y=947..956 +y=637, x=580..586 +x=592, y=1364..1368 +x=560, y=1480..1507 +x=542, y=484..489 +y=523, x=569..578 +x=348, y=1348..1361 +x=312, y=157..181 +x=490, y=1488..1493 +x=549, y=1255..1273 +x=568, y=722..728 +x=619, y=262..266 +x=508, y=1332..1335 +y=647, x=486..505 +y=385, x=455..458 +x=528, y=1439..1442 +x=510, y=1179..1182 +x=568, y=11..24 +y=1652, x=552..561 +x=502, y=1090..1104 +y=1553, x=609..611 +y=1696, x=347..349 +x=493, y=1568..1577 +x=311, y=765..787 +x=581, y=345..355 +x=474, y=1656..1673 +x=483, y=1408..1412 +y=831, x=486..488 +y=819, x=429..449 +y=505, x=385..387 +y=1132, x=561..583 +y=98, x=460..463 +x=329, y=59..78 +x=381, y=1676..1687 +y=918, x=429..450 +y=368, x=557..560 +y=1646, x=342..363 +y=1707, x=496..515 +x=601, y=481..493 +y=1691, x=347..349 +y=645, x=486..505 +x=419, y=142..158 +x=400, y=24..34 +x=608, y=1109..1115 +x=570, y=913..916 +x=419, y=399..419 +x=559, y=1523..1548 +x=597, y=277..290 +x=480, y=823..836 +x=622, y=190..194 +x=560, y=18..20 +x=526, y=1439..1442 +x=618, y=1651..1661 +x=392, y=831..834 +x=479, y=58..65 +x=527, y=1708..1727 +x=473, y=1008..1018 +x=517, y=473..492 +x=306, y=517..544 +x=578, y=87..99 +x=608, y=25..29 +x=389, y=1657..1667 +x=586, y=219..229 +x=621, y=1391..1407 +x=449, y=972..974 +y=1324, x=410..431 +y=1556, x=609..611 +x=364, y=394..398 +y=1044, x=530..549 +x=342, y=1194..1202 +x=349, y=1153..1161 +x=371, y=713..733 +x=371, y=138..150 +x=479, y=1499..1518 +y=1621, x=331..342 +x=552, y=204..207 +x=430, y=1402..1406 +y=1393, x=498..510 +x=468, y=1504..1511 +y=1243, x=575..591 +x=494, y=529..542 +y=856, x=481..485 +y=353, x=610..630 +x=390, y=157..160 +x=420, y=61..76 +x=494, y=35..37 +x=312, y=1133..1144 +x=369, y=1091..1104 +x=381, y=1488..1502 +x=315, y=821..824 +x=522, y=529..542 +x=511, y=739..748 +x=505, y=917..944 +x=608, y=1422..1424 +x=466, y=422..426 +x=357, y=1133..1143 +x=398, y=1659..1671 +x=620, y=1532..1536 +x=623, y=1301..1311 +x=539, y=1327..1338 +x=578, y=276..290 +x=443, y=684..694 +x=535, y=1169..1180 +y=1162, x=327..330 +y=78, x=305..329 +y=1533, x=534..538 +x=477, y=163..166 +x=364, y=1714..1727 +y=729, x=464..491 +y=934, x=541..563 +y=1256, x=336..355 +x=572, y=1594..1614 +x=491, y=846..859 +x=341, y=1280..1301 +y=781, x=368..394 +y=1314, x=577..604 +x=466, y=640..650 +y=1709, x=361..378 +y=934, x=577..591 +y=916, x=570..587 +y=406, x=330..336 +y=334, x=566..586 +x=518, y=1637..1658 +y=164, x=384..411 +y=224, x=576..578 +x=467, y=569..590 +y=376, x=550..570 +y=1061, x=610..613 +x=475, y=739..748 +x=466, y=801..811 +x=591, y=994..1006 +y=675, x=576..602 +x=475, y=1260..1274 +x=550, y=363..376 +x=375, y=184..186 +y=1238, x=582..584 +y=1614, x=567..572 +y=384, x=483..490 +x=489, y=1655..1673 +x=523, y=1282..1286 +y=303, x=527..543 +x=332, y=1533..1544 +x=471, y=847..859 +x=384, y=550..567 +x=546, y=1132..1143 +x=580, y=601..612 +x=528, y=1304..1317 +y=841, x=526..550 +y=494, x=426..447 +y=1462, x=501..503 +y=136, x=388..392 +y=37, x=494..499 +y=881, x=457..484 +x=422, y=1098..1101 +x=365, y=173..191 +x=354, y=1639..1643 +y=450, x=559..562 +y=1502, x=358..381 +y=787, x=311..331 +y=1412, x=475..483 +x=338, y=1547..1560 +x=303, y=1617..1621 +y=1384, x=561..566 +x=459, y=206..215 +x=491, y=738..748 +x=418, y=1494..1501 +x=552, y=428..438 +x=506, y=7..20 +y=1368, x=533..552 +x=617, y=1470..1496 +x=445, y=1606..1618 +x=474, y=618..630 +x=378, y=316..324 +x=506, y=429..450 +x=600, y=1351..1371 +y=1525, x=429..456 +x=422, y=1456..1471 +x=541, y=462..473 +x=418, y=1551..1567 +y=692, x=378..381 +x=324, y=887..913 +y=1561, x=603..618 +x=436, y=1244..1255 +y=117, x=371..374 +y=1471, x=588..591 +y=1667, x=389..392 +y=484, x=537..542 +y=567, x=384..397 +x=316, y=69..73 +x=568, y=490..498 +x=493, y=1184..1199 +x=354, y=313..329 +y=832, x=360..373 +y=811, x=466..468 +x=380, y=1404..1409 +x=600, y=744..772 +y=1002, x=470..487 +y=1202, x=595..618 +x=562, y=1069..1090 +x=599, y=1016..1030 +x=622, y=348..350 +x=614, y=1677..1687 +x=370, y=1695..1705 +x=347, y=599..625 +x=605, y=1206..1215 +x=449, y=1207..1210 +x=316, y=951..967 +y=1514, x=444..447 +x=420, y=1603..1630 +x=408, y=552..573 +x=534, y=1422..1446 +x=402, y=553..573 +x=464, y=422..426 +x=576, y=216..224 +x=351, y=1285..1291 +y=312, x=498..509 +x=497, y=316..328 +x=327, y=982..989 +x=304, y=763..789 +y=789, x=301..304 +x=542, y=196..210 +x=349, y=1466..1477 +x=423, y=1395..1409 +x=329, y=1041..1064 +x=431, y=1627..1645 +y=31, x=375..389 +y=1442, x=526..528 +x=542, y=1283..1294 +x=520, y=872..890 +x=423, y=434..454 +y=826, x=434..453 +x=505, y=596..609 +x=416, y=1519..1526 +x=606, y=1699..1710 +x=424, y=1204..1228 +x=407, y=1534..1552 +x=631, y=440..452 +y=1560, x=364..373 +y=1627, x=494..499 +x=576, y=1381..1396 +y=1167, x=318..336 +x=320, y=464..467 +y=1456, x=577..590 +y=404, x=330..336 +x=344, y=194..209 +x=466, y=701..704 +x=593, y=1532..1557 +x=311, y=259..280 +y=872, x=352..356 +x=443, y=1590..1596 +x=518, y=1043..1058 +x=587, y=913..916 +y=459, x=301..325 +x=473, y=1542..1546 +x=574, y=108..130 +x=483, y=1620..1633 +y=784, x=536..546 +x=464, y=702..704 +y=772, x=600..610 +x=360, y=1134..1146 +y=226, x=409..413 +x=584, y=297..310 +y=1412, x=371..393 +y=140, x=295..319 +y=393, x=555..558 +y=1653, x=305..310 +x=633, y=1590..1599 +y=1493, x=602..605 +x=431, y=1315..1324 +x=557, y=1412..1431 +y=794, x=478..498 +y=1025, x=605..609 +y=1518, x=463..479 +x=516, y=51..65 +x=578, y=1638..1642 +y=1525, x=346..370 +x=481, y=854..856 +x=359, y=1066..1084 +y=1557, x=583..593 +x=472, y=418..433 +x=546, y=277..279 +x=305, y=1631..1653 +x=541, y=110..123 +x=573, y=921..929 +x=313, y=1266..1278 +x=449, y=334..354 +x=399, y=306..315 +x=441, y=1677..1694 +x=564, y=1256..1273 +x=557, y=842..850 +x=410, y=399..419 +y=1042, x=391..481 +y=1319, x=382..404 +x=564, y=158..170 +y=710, x=478..502 +y=1458, x=332..382 +x=378, y=1698..1709 +y=689, x=490..513 +x=613, y=1644..1666 +y=229, x=566..586 +y=1658, x=518..529 +x=522, y=1091..1104 +y=1377, x=353..357 +x=625, y=58..71 +x=350, y=911..937 +y=1320, x=515..520 +x=583, y=946..954 +y=653, x=451..463 +x=312, y=1461..1481 +x=544, y=732..734 +x=502, y=699..710 +x=594, y=579..582 +y=1274, x=475..542 +y=612, x=572..580 +x=491, y=975..997 +x=498, y=1634..1641 +x=387, y=1404..1409 +x=539, y=322..326 +x=521, y=1006..1025 +y=150, x=369..371 +y=1727, x=364..371 +y=279, x=533..546 +x=331, y=764..787 +x=568, y=1186..1192 +x=526, y=482..493 +x=393, y=421..428 +x=587, y=1397..1401 +y=438, x=527..552 +y=1212, x=388..394 +x=381, y=692..695 +x=441, y=56..60 +y=694, x=578..599 +y=1641, x=498..505 +y=1536, x=602..620 +y=1058, x=506..518 +x=624, y=190..194 +x=584, y=507..530 +x=608, y=1170..1178 +x=422, y=1178..1182 +x=564, y=384..396 +x=496, y=456..458 +x=382, y=1051..1063 +x=600, y=114..119 +y=582, x=579..594 +x=526, y=658..669 +x=361, y=1576..1579 +y=929, x=567..573 +x=431, y=1191..1217 +y=433, x=453..472 +x=556, y=89..92 +x=351, y=673..687 +x=338, y=50..71 +y=1076, x=431..435 +x=475, y=450..460 +y=799, x=574..594 +x=578, y=1491..1505 +x=555, y=760..788 +x=620, y=58..71 +x=358, y=510..530 +x=339, y=1483..1495 +x=537, y=1112..1126 +x=359, y=699..713 +y=68, x=548..552 +x=382, y=1640..1649 +x=567, y=920..929 +x=543, y=298..303 +x=379, y=184..186 +x=552, y=446..455 +x=609, y=1553..1556 +x=548, y=383..396 +x=369, y=689..701 +y=720, x=601..604 +x=322, y=1593..1604 +x=505, y=1692..1697 +x=346, y=1405..1414 +x=431, y=972..974 +y=1025, x=516..521 +x=591, y=925..934 +x=484, y=867..881 +y=721, x=518..520 +y=1356, x=614..618 +x=456, y=1503..1525 +y=524, x=332..335 +y=99, x=578..605 +x=371, y=370..376 +x=415, y=1707..1725 +x=422, y=1010..1021 +x=344, y=862..875 +x=426, y=593..601 +y=1649, x=382..402 +x=362, y=861..875 +x=610, y=1040..1061 +x=310, y=1632..1653 +y=1458, x=304..309 +x=576, y=895..902 +y=224, x=503..515 +y=515, x=530..533 +y=306, x=373..387 +x=394, y=212..229 +x=373, y=463..466 +y=97, x=386..405 +y=1297, x=462..473 +x=560, y=366..368 +x=425, y=293..295 +y=60, x=441..456 +x=463, y=1619..1640 +x=412, y=941..944 +x=529, y=774..785 +x=505, y=250..266 +x=504, y=1281..1286 diff --git a/2018/src/day17.rs b/2018/src/day17.rs index e876bd8..a317fa1 100644 --- a/2018/src/day17.rs +++ b/2018/src/day17.rs @@ -1,25 +1,197 @@ use std::io::Read; use common::Solution; +use std::collections::HashSet; +use regex::Regex; +use std::io::BufReader; +use std::io::BufRead; +use itertools::Itertools; +use itertools::MinMaxResult; + +type Coordinate = (usize, usize); #[derive(Default)] -pub struct Day17 {} +pub struct Day17 { + clays: HashSet, + flowing: HashSet, + contained: HashSet, + ymin: usize, + ymax: usize, +} impl Day17 { pub fn new() -> Self { Default::default() } + + fn read_input(&mut self, input: &mut Read) { + let matcher = Regex::new(r"(.)=(\d+), (.)=(\d+)\.\.(\d+)").unwrap(); + let reader = BufReader::new(input); + + for line in reader.lines() { + let line = line.unwrap(); + let captures = matcher.captures(&line).unwrap(); + + let fixed: usize = captures[2].parse().unwrap(); + let a: usize = captures[4].parse().unwrap(); + let b: usize = captures[5].parse().unwrap(); + + match &captures[1] { + "x" => { + for y in a..=b { + self.clays.insert((fixed, y)); + } + }, + "y" => { + for x in a..=b { + self.clays.insert((x, fixed)); + } + } + _ => panic!(), + } + } + + match self.clays.iter().map(|(_, y)| y).minmax() { + MinMaxResult::MinMax(a, b) => { + self.ymin = *a; + self.ymax = *b; + }, + _ => panic!(), + }; + } + + #[allow(unused)] + fn map(&self) { + let (xmin, xmax) = match self.clays.iter().map(|(x, _)| *x).minmax() { + MinMaxResult::MinMax(a, b) => (a, b), + _ => panic!(), + }; + + println!("{}, {} to {}, {}", xmin, self.ymin, xmax, self.ymax); + + for y in self.ymin..=self.ymax { + let mut buf = String::with_capacity(xmax - xmin + 1); + for x in xmin..=xmax { + let pos = (x, y); + if self.clays.contains(&pos) { + buf.push('#'); + } else if self.contained.contains(&pos) { + buf.push('~'); + } else if self.flowing.contains(&pos) { + buf.push('|'); + } else { + buf.push(' '); + } + } + println!("{}", buf); + } + } + + fn descend(&mut self, pos: Coordinate) { + let (x, y) = pos; + + if y > self.ymax || self.clays.contains(&pos) || self.flowing.contains(&pos) || self.contained.contains(&pos) { + return; + } + + let below = (x, y + 1); + + self.descend(below); + + if self.clays.contains(&below) || self.contained.contains(&below) { + let mut contained = true; + + let mut layer = vec![pos]; + + let mut nx = x + 1; + loop { + let npos = (nx, y); + if self.clays.contains(&npos) { + break; + } + layer.push(npos); + + let nbelow = (nx, y + 1); + self.descend(nbelow); + if !self.clays.contains(&nbelow) && !self.contained.contains(&nbelow) { + contained = false; + break; + } + + nx += 1; + } + let mut nx = x - 1; + loop { + let npos = (nx, y); + if self.clays.contains(&npos) { + break; + } + layer.push(npos); + + let nbelow = (nx, y + 1); + self.descend(nbelow); + if !self.clays.contains(&nbelow) && !self.contained.contains(&nbelow) { + contained = false; + break; + } + nx -= 1; + } + + if contained { + self.contained.extend(layer); + } else { + self.flowing.extend(layer); + } + } else { + self.flowing.insert(pos); + } + } } impl Solution for Day17 { - fn part1(&mut self, _input: &mut Read) -> String { - unimplemented!() + fn part1(&mut self, input: &mut Read) -> String { + self.read_input(input); + + + self.descend((500, 0)); + + let range_filter = |&&(_, y): &&(usize, usize)| y >= self.ymin && y <= self.ymax; + + let result = self.contained.iter().filter(range_filter).count() + + self.flowing.iter().filter(range_filter).count(); + format!("{}", result) } - fn part2(&mut self, _input: &mut Read) -> String { - unimplemented!() + fn part2(&mut self, input: &mut Read) -> String { + self.read_input(input); + + + self.descend((500, 0)); + + let range_filter = |&&(_, y): &&(usize, usize)| y >= self.ymin && y <= self.ymax; + + let result = self.contained.iter().filter(range_filter).count(); + format!("{}", result) } } #[cfg(test)] -mod tests {} +mod tests { + use day17::Day17; + use common::Solution; + + const SAMPLE_INPUT: &[u8] = include_bytes!("samples/17.txt"); + + #[test] + fn sample_part1() { + let mut instance = Day17::new(); + assert_eq!("57", instance.part1(&mut SAMPLE_INPUT)); + } + + #[test] + fn sample_part2() { + let mut instance = Day17::new(); + assert_eq!("29", instance.part2(&mut SAMPLE_INPUT)); + } + +} diff --git a/2018/src/samples/17.txt b/2018/src/samples/17.txt new file mode 100644 index 0000000..293b5af --- /dev/null +++ b/2018/src/samples/17.txt @@ -0,0 +1,8 @@ +x=495, y=2..7 +y=7, x=495..501 +x=501, y=3..7 +x=498, y=2..4 +x=506, y=1..2 +x=498, y=10..13 +x=504, y=10..13 +y=13, x=498..504