diff options
| author | Louis Burda <quent.burda@gmail.com> | 2023-04-07 17:18:18 -0400 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2023-04-07 17:19:39 -0400 |
| commit | 87ab487d59fa85dbe2afa55cc841b02805ae42ca (patch) | |
| tree | cd90ab715e1b5b5803674045dbafd6d51d27ac90 /src/17 | |
| parent | 1bcc82c5bfbde87edd03c01ffdf9ee5934681592 (diff) | |
| download | aoc2018-python-87ab487d59fa85dbe2afa55cc841b02805ae42ca.tar.gz aoc2018-python-87ab487d59fa85dbe2afa55cc841b02805ae42ca.zip | |
Reorder days into src
Diffstat (limited to 'src/17')
| -rw-r--r-- | src/17/.gitignore | 1 | ||||
| -rw-r--r-- | src/17/input | 1884 | ||||
| -rw-r--r-- | src/17/part1 | 177 | ||||
| -rw-r--r-- | src/17/part2 | 105 | ||||
| -rw-r--r-- | src/17/solve.py | 183 | ||||
| -rw-r--r-- | src/17/test1 | 8 |
6 files changed, 2358 insertions, 0 deletions
diff --git a/src/17/.gitignore b/src/17/.gitignore new file mode 100644 index 0000000..53752db --- /dev/null +++ b/src/17/.gitignore @@ -0,0 +1 @@ +output diff --git a/src/17/input b/src/17/input new file mode 100644 index 0000000..c383645 --- /dev/null +++ b/src/17/input @@ -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/src/17/part1 b/src/17/part1 new file mode 100644 index 0000000..ed0d74c --- /dev/null +++ b/src/17/part1 @@ -0,0 +1,177 @@ +--- Day 17: Reservoir Research --- + +You arrive in the year 18. If it weren't for the coat you got in 1018, you would be very cold: the +North Pole base hasn't even been constructed. + +Rather, it hasn't been constructed [1m[97myet[0m. The Elves are making a little progress, but there's not a +lot of liquid water in this climate, so they're getting very dehydrated. Maybe there's more +underground? + +You scan a two-dimensional vertical slice of the ground nearby and discover that it is mostly +[1m[97msand[0m with veins of [1m[97mclay[0m. The scan only provides data with a granularity of [1m[97msquare meters[0m, but it +should be good enough to determine how much water is trapped there. In the scan, x represents the +distance to the right, and y represents the distance down. There is also a [1m[97mspring of water[0m near the +surface at x=500, y=0. The scan identifies [1m[97mwhich square meters are clay[0m (your puzzle input). + +For example, suppose your scan shows the following veins of clay: + +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 + +Rendering clay as #, sand as ., and the water spring as +, and with x increasing to the right and y +increasing downward, this becomes: + + 44444455555555 + 99999900000000 + 45678901234567 + 0 ......+....... + 1 ............#. + 2 .#..#.......#. + 3 .#..#..#...... + 4 .#..#..#...... + 5 .#.....#...... + 6 .#.....#...... + 7 .#######...... + 8 .............. + 9 .............. +10 ....#.....#... +11 ....#.....#... +12 ....#.....#... +13 ....#######... + +The spring of water will produce water [1m[97mforever[0m. Water can move through sand, but is blocked by clay. +Water [1m[97malways moves down[0m when possible, and spreads to the left and right otherwise, filling space +that has clay on both sides and falling out otherwise. + +For example, if five squares of water are created, they will flow downward until they reach the clay +and settle there. Water that has come to rest is shown here as ~, while sand through which water has +passed (but which is now dry again) is shown as |: + +......+....... +......|.....#. +.#..#.|.....#. +.#..#.|#...... +.#..#.|#...... +.#....|#...... +.#~~~~~#...... +.#######...... +.............. +.............. +....#.....#... +....#.....#... +....#.....#... +....#######... + +Two squares of water can't occupy the same location. If another five squares of water are created, +they will settle on the first five, filling the clay reservoir a little more: + +......+....... +......|.....#. +.#..#.|.....#. +.#..#.|#...... +.#..#.|#...... +.#~~~~~#...... +.#~~~~~#...... +.#######...... +.............. +.............. +....#.....#... +....#.....#... +....#.....#... +....#######... + +Water pressure does not apply in this scenario. If another four squares of water are created, they +will stay on the right side of the barrier, and no water will reach the left side: + +......+....... +......|.....#. +.#..#.|.....#. +.#..#~~#...... +.#..#~~#...... +.#~~~~~#...... +.#~~~~~#...... +.#######...... +.............. +.............. +....#.....#... +....#.....#... +....#.....#... +....#######... + +At this point, the top reservoir overflows. While water can reach the tiles above the surface of the +water, it cannot settle there, and so the next five squares of water settle like this: + +......+....... +......|.....#. +.#..#[1m[97m|[0m|||...#. +.#..#~~#|..... +.#..#~~#|..... +.#~~~~~#|..... +.#~~~~~#|..... +.#######|..... +........|..... +........|..... +....#...|.#... +....#...|.#... +....#~~~~~#... +....#######... + +Note especially the leftmost |: the new squares of water can reach this tile, but cannot stop there. + Instead, eventually, they all fall to the right and settle in the reservoir below. + +After 10 more squares of water, the bottom reservoir is also full: + +......+....... +......|.....#. +.#..#||||...#. +.#..#~~#|..... +.#..#~~#|..... +.#~~~~~#|..... +.#~~~~~#|..... +.#######|..... +........|..... +........|..... +....#~~~~~#... +....#~~~~~#... +....#~~~~~#... +....#######... + +Finally, while there is nowhere left for the water to settle, it can reach a few more tiles before +overflowing beyond the bottom of the scanned data: + +......+....... (line not counted: above minimum y value) +......|.....#. +.#..#||||...#. +.#..#~~#|..... +.#..#~~#|..... +.#~~~~~#|..... +.#~~~~~#|..... +.#######|..... +........|..... +...|||||||||.. +...|#~~~~~#|.. +...|#~~~~~#|.. +...|#~~~~~#|.. +...|#######|.. +...|.......|.. (line not counted: below maximum y value) +...|.......|.. (line not counted: below maximum y value) +...|.......|.. (line not counted: below maximum y value) + +How many tiles can be reached by the water? [1m[97mTo prevent counting forever[0m, ignore tiles with a y +coordinate smaller than the smallest y coordinate in your scan data or larger than the largest one. +Any x coordinate is valid. In this example, the lowest y coordinate given is 1, and the highest is +13, causing the water spring (in row 0) and the water falling off the bottom of the render (in rows +14 through infinity) to be ignored. + +So, in the example above, counting both water at rest (~) and other sand tiles the water can +hypothetically reach (|), the total number of tiles the water can reach is [1m[97m57[0m. + +[1m[97mHow many tiles can the water reach[0m within the range of y values in your scan? + + diff --git a/src/17/part2 b/src/17/part2 new file mode 100644 index 0000000..a0801b8 --- /dev/null +++ b/src/17/part2 @@ -0,0 +1,105 @@ +--- Part Two --- + +Now for the tricky part: notifying all the other robots about the solar flare. The vacuum robot can +do this automatically if it gets into range of a robot. However, you can't see the other robots on +the camera, so you need to be thorough instead: you need to make the vacuum robot [1m[97mvisit every part +of the scaffold at least once[0m. + +The vacuum robot normally wanders randomly, but there isn't time for that today. Instead, you can +[1m[97moverride its movement logic[0m with new rules. + +Force the vacuum robot to wake up by changing the value in your ASCII program at address 0 from 1 to +[1m[97m2[0m. When you do this, you will be automatically prompted for the new movement rules that the vacuum +robot should use. The ASCII program will use input instructions to receive them, but they need to be +provided as ASCII code; end each line of logic with a single newline, ASCII code 10. + +First, you will be prompted for the [1m[97mmain movement routine[0m. The main routine may only call the +[1m[97mmovement functions[0m: A, B, or C. Supply the movement functions to use as ASCII text, separating them +with commas (,, ASCII code 44), and ending the list with a newline (ASCII code 10). For example, to +call A twice, then alternate between B and C three times, provide the string A,A,B,C,B,C,B,C and +then a newline. + +Then, you will be prompted for each [1m[97mmovement function[0m. Movement functions may use L to [1m[97mturn +left[0m, R to [1m[97mturn right[0m, or a number to [1m[97mmove forward[0m that many units. Movement functions may not call +other movement functions. Again, separate the actions with commas and end the list with a newline. +For example, to move forward 10 units, turn left, move forward 8 units, turn right, and finally move +forward 6 units, provide the string 10,L,8,R,6 and then a newline. + +Finally, you will be asked whether you want to see a [1m[97mcontinuous video feed[0m; provide either y or n +and a newline. Enabling the continuous video feed can help you see what's going on, but it also +requires a significant amount of processing power, and may even cause your Intcode computer to +overheat. + +Due to the limited amount of memory in the vacuum robot, the ASCII definitions of the main routine +and the movement functions may each contain [1m[97mat most 20 characters[0m, not counting the newline. + +For example, consider the following camera feed: + +#######...##### +#.....#...#...# +#.....#...#...# +......#...#...# +......#...###.# +......#.....#.# +^########...#.# +......#.#...#.# +......######### +........#...#.. +....#########.. +....#...#...... +....#...#...... +....#...#...... +....#####...... + +In order for the vacuum robot to [1m[97mvisit every part of the scaffold at least once[0m, one path it could +take is: + +R,8,R,8,R,4,R,4,R,8,L,6,L,2,R,4,R,4,R,8,R,8,R,8,L,6,L,2 +Without the memory limit, you could just supply this whole string to function A and have the main +routine call A once. However, you'll need to split it into smaller parts. + +One approach is: + + + - [1m[97mMain routine: A,B,C,B,A,C[0m(ASCII input: 65, 44, 66, 44, 67, 44, 66, 44, 65, 44, 67, 10) + + - [1m[97mFunction A: R,8,R,8[0m(ASCII input: 82, 44, 56, 44, 82, 44, 56, 10) + + - [1m[97mFunction B: R,4,R,4,R,8[0m(ASCII input: 82, 44, 52, 44, 82, 44, 52, 44, 82, 44, 56, 10) + + - [1m[97mFunction C: L,6,L,2[0m(ASCII input: 76, 44, 54, 44, 76, 44, 50, 10) + + +Visually, this would break the desired path into the following parts: + +A, B, C, B, A, C +R,8,R,8, R,4,R,4,R,8, L,6,L,2, R,4,R,4,R,8, R,8,R,8, L,6,L,2 + +CCCCCCA...BBBBB +C.....A...B...B +C.....A...B...B +......A...B...B +......A...CCC.B +......A.....C.B +^AAAAAAAA...C.B +......A.A...C.B +......AAAAAA#AB +........A...C.. +....BBBB#BBBB.. +....B...A...... +....B...A...... +....B...A...... +....BBBBA...... + +Of course, the scaffolding outside your ship is much more complex. + +As the vacuum robot finds other robots and notifies them of the impending solar flare, it also can't +help but leave them squeaky clean, collecting any space dust it finds. Once it finishes the +programmed set of movements, assuming it hasn't drifted off into space, the cleaning robot will +return to its docking station and report the amount of space dust it collected as a large, non-ASCII +value in a single output instruction. + +After visiting every part of the scaffold at least once, [1m[97mhow much dust does the vacuum robot report +it has collected?[0m + + diff --git a/src/17/solve.py b/src/17/solve.py new file mode 100644 index 0000000..c6454f3 --- /dev/null +++ b/src/17/solve.py @@ -0,0 +1,183 @@ +import sys
+sys.path.append("../common")
+import aoc
+
+def parse_line(l):
+ s = l.split(", ")
+ if s[0].startswith("y="):
+ s = s[::-1]
+
+ res = [[int(x) for x in v.split("=")[1].split("..")] for v in s]
+ return res
+
+constraints = [parse_line(l) for l in aoc.data.split("\n")]
+
+xmin = min(c[0][0] for c in constraints)-1
+xmax = max(c[0][-1] for c in constraints)+1
+ymin = min(c[1][0] for c in constraints)
+ymax = max(c[1][-1] for c in constraints)
+xdif = xmax - xmin + 1
+ydif = ymax - ymin + 1
+
+vmap = [[0 for x in range(xdif)] for y in range(ydif)]
+
+def set_map(x, y, v):
+ global vmap
+ if y < ymin or y > ymax or x < xmin or x > xmax:
+ return
+ vmap[y-ymin][x-xmin] = v
+
+def get_map(x, y):
+ global vmap
+ if x > xmax or x < xmin:
+ return 1
+ elif y > ymax:
+ return 0
+ return vmap[y-ymin][x-xmin]
+
+def drawWall(c):
+ if len(c[0]) == 1:
+ for y in range(c[1][0], c[1][1] + 1):
+ set_map(c[0][0], y, 1)
+ else:
+ for x in range(c[0][0], c[0][1] + 1):
+ set_map(x, c[1][0], 1)
+
+for c in constraints:
+ drawWall(c)
+
+spring = (500, 0)
+
+
+### SETUP END
+
+
+def interpretChar(v):
+ chars = [".", "#", "|", "~"]
+ return chars[v]
+
+def drawMap():
+ for y in range(ydif):
+ aoc.debug("".join([interpretChar(v) for v in vmap[y]]))
+
+def fwriteMap():
+ f = open("output","w+")
+ for y in range(ydif):
+ f.write("".join([interpretChar(v) for v in vmap[y]])+"\n")
+ f.close()
+
+def isstatic(p):
+ return get_map(p[0], p[1]) in (1, 3)
+
+def isfree(p):
+ return get_map(p[0], p[1]) == 0
+
+def move(p):
+ x = p[0]
+ y = p[1]
+ if isfree((x, y+1)):
+ return (x, y+1)
+ onblock = isstatic((x, y+1))
+ if not onblock:
+ return (x,y)
+ npos = [(x + dir, y) for dir in [-1, 1]]
+ npos = [np for np in npos if isfree(np) and onblock]
+ if len(npos) > 1:
+ return npos
+ elif len(npos) == 1:
+ return npos[0]
+ return (x, y)
+
+def fillfloor(p):
+ onblock = True
+ isblock = False
+ x = p[0]
+ while onblock and not isblock and x >= xmin:
+ x -= 1
+ isblock = isstatic((x, p[1]))
+ onblock = isstatic((x, p[1]+1))
+ if not isblock:
+ return None # edge
+ lx = x+1
+
+ onblock = True
+ isblock = False
+ x = p[0]
+ while onblock and not isblock and x <= xmax:
+ x += 1
+ isblock = isstatic((x, p[1]))
+ onblock = isstatic((x, p[1]+1))
+ if not isblock:
+ return None
+ rx = x-1
+
+ return [(i, p[1]) for i in range(lx, rx+1)]
+
+def count_w_flowing():
+ water = 0
+ for y in range(ymin, ymax+1):
+ for x in range(xmin, xmax+1):
+ if get_map(x,y) == 2:
+ water += 1
+ return water
+
+def count_w_static():
+ water = 0
+ for y in range(ymin, ymax+1):
+ for x in range(xmin, xmax+1):
+ if get_map(x,y) == 3:
+ water += 1
+ return water
+
+def simulate():
+ heads = [spring]
+ while len(heads) > 0:
+ cp = heads[-1]
+ if isstatic((cp[0], cp[1]+1)):
+ # solid below => expand
+ res = fillfloor(cp)
+ if res:
+ for p in res:
+ set_map(p[0], p[1], 3)
+ nhead = None
+ for x in range(res[0][0], res[-1][0]+1):
+ np = (x, res[0][1]-1)
+ if get_map(np[0], np[1]) == 2:
+ nhead = np
+ break
+ if nhead == None: # head got trapped
+ heads.pop()
+ else:
+ heads[-1] = nhead
+ continue
+
+ res = move(cp)
+ if type(res[0]) == tuple:
+ heads.pop()
+ heads += res
+ for p in res:
+ set_map(p[0], p[1], 2)
+ else:
+ if res != cp:
+ if res[1] <= ymax:
+ set_map(res[0], res[1], 2)
+ heads[-1] = res
+ else:
+ heads.pop()
+ else:
+ heads.pop()
+
+ if aoc.debug_lvl:
+ aoc.debug(heads)
+ input()
+ fwriteMap()
+
+def solve1(args):
+ simulate()
+ return count_w_flowing() + count_w_static()
+
+def solve2(args):
+ simulate()
+ return count_w_static()
+
+aoc.run(solve1, solve2, sols=[39557, 32984])
diff --git a/src/17/test1 b/src/17/test1 new file mode 100644 index 0000000..293b5af --- /dev/null +++ b/src/17/test1 @@ -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 |
