Compare commits
5 commits
a0b969332b
...
3027ffbdd7
Author | SHA1 | Date | |
---|---|---|---|
|
3027ffbdd7 | ||
|
4f06bb8fe5 | ||
|
eac5a9dff7 | ||
|
db441a2940 | ||
|
6aaaf35995 |
21 changed files with 3772 additions and 2 deletions
7
.idea/misc.xml
Normal file
7
.idea/misc.xml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Black">
|
||||||
|
<option name="sdkName" value="Python 3.11" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
15
python/day11.py
Normal file
15
python/day11.py
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
path = 'res/01/input'
|
||||||
|
|
||||||
|
space = []
|
||||||
|
|
||||||
|
with open(path, 'r') as file:
|
||||||
|
for line in file:
|
||||||
|
space.append([1 if c is '#' else 0 for c in line])
|
||||||
|
if '#' not in line:
|
||||||
|
space.append([0 for _ in line])
|
||||||
|
|
||||||
|
ind = set()
|
||||||
|
for i in range(len(space[0])):
|
||||||
|
if '#' not in [space[i][j] for j in range(len(space))]:
|
||||||
|
ind.add(i)
|
||||||
|
|
3
res/09/example
Normal file
3
res/09/example
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
0 3 6 9 12 15
|
||||||
|
1 3 6 10 15 21
|
||||||
|
10 13 16 21 30 45
|
200
res/09/input
Normal file
200
res/09/input
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72
|
||||||
|
16 31 50 76 128 260 603 1440 3332 7343 15476 31542 62852 123360 239205 458014 863848 1600311 2905110 5160264 8963224
|
||||||
|
1 7 22 48 87 141 212 302 413 547 706 892 1107 1353 1632 1946 2297 2687 3118 3592 4111
|
||||||
|
12 23 36 62 124 254 502 969 1869 3621 6982 13270 24809 45876 84666 157141 294122 553651 1041528 1944054 3578426
|
||||||
|
9 23 48 101 209 416 802 1529 2935 5694 11042 21037 38795 68675 116571 190984 306728 495653 834081 1507811 2959064
|
||||||
|
8 1 -4 3 48 184 511 1225 2735 5912 12561 26229 53466 105620 201137 368104 646350 1087719 1752038 2694683 3939328
|
||||||
|
1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101
|
||||||
|
-1 7 25 50 76 108 190 447 1141 2741 6007 12088 22634 39922 66996 107821 167451 252211 369893 529966 743800
|
||||||
|
2 13 47 129 307 666 1345 2569 4722 8498 15187 27209 49143 89767 166101 311215 588730 1118619 2121239 3989641 7404275
|
||||||
|
-2 16 54 115 202 321 500 852 1723 3979 9499 21954 47965 98746 192351 356657 633228 1082218 1788484 2869093 4482420
|
||||||
|
9 9 16 36 79 180 438 1076 2525 5535 11316 21712 39411 68194 113226 181392 281681 425621 627768 906252 1283383
|
||||||
|
-5 1 21 69 164 336 652 1267 2502 4951 9623 18134 32979 57936 98684 163756 265997 424757 669121 1042563 1609510
|
||||||
|
7 16 28 43 61 82 106 133 163 196 232 271 313 358 406 457 511 568 628 691 757
|
||||||
|
11 9 7 5 3 1 -1 -3 -5 -7 -9 -11 -13 -15 -17 -19 -21 -23 -25 -27 -29
|
||||||
|
12 23 46 111 260 540 1007 1756 3002 5257 9675 18672 36982 73423 143934 277182 525808 990279 1870244 3573361 6938576
|
||||||
|
10 17 48 128 305 663 1335 2516 4476 7573 12266 19128 28859 42299 60441 84444 115646 155577 205972 268784 346197
|
||||||
|
2 19 52 116 233 425 709 1095 1583 2150 2713 3049 2648 470 -5428 -18434 -44136 -91339 -173398 -309926 -528941
|
||||||
|
-4 -9 -17 -26 -25 22 205 723 1990 4829 10803 22744 45553 87356 161113 286789 494208 826723 1345847 2137002 3316555
|
||||||
|
15 26 53 120 261 517 950 1695 3077 5826 11429 22664 44367 84489 155506 276251 474243 788594 1273581 2002976 3075233
|
||||||
|
29 43 57 71 85 99 113 127 141 155 169 183 197 211 225 239 253 267 281 295 309
|
||||||
|
10 13 8 -3 -15 -9 84 453 1525 4154 9921 21622 44097 85690 160846 294650 530472 942235 1653042 2861771 4878453
|
||||||
|
9 16 47 111 219 394 681 1161 1988 3491 6416 12440 25204 52344 109433 227490 466883 942166 1864729 3613125 6844481
|
||||||
|
26 45 67 102 171 307 570 1090 2153 4340 8714 17021 31824 56420 94295 147747 215148 286119 333653 301936 88281
|
||||||
|
17 35 64 102 146 205 338 727 1792 4354 9858 20682 40582 75383 134219 232202 396911 684641 1220040 2288434 4540598
|
||||||
|
8 17 39 77 134 213 317 449 612 809 1043 1317 1634 1997 2409 2873 3392 3969 4607 5309 6078
|
||||||
|
8 19 35 55 85 143 277 608 1408 3223 7065 14752 29631 58299 114769 230199 474424 1001019 2136783 4551173 9563745
|
||||||
|
9 8 21 70 185 404 773 1346 2185 3360 4949 7038 9721 13100 17285 22394 28553 35896 44565 54710 66489
|
||||||
|
23 51 103 190 334 587 1061 1973 3716 6985 13023 24126 44702 83494 158168 304496 594041 1166835 2289339 4453338 8538746
|
||||||
|
-9 -5 16 62 155 345 739 1557 3239 6666 13649 28022 58002 121021 253079 525918 1077099 2160521 4228218 8058594 14951817
|
||||||
|
21 39 68 102 141 202 330 609 1173 2217 4008 6896 11325 17844 27118 39939 57237 80091 109740 147594 195245
|
||||||
|
1 9 39 106 229 439 798 1438 2641 4996 9692 19055 37556 73801 144663 284149 562669 1128767 2298205 4740064 9855499
|
||||||
|
25 46 91 176 335 634 1188 2192 3984 7177 12943 23619 43946 83467 160955 312396 605538 1167687 2242414 4311733 8366012
|
||||||
|
1 4 4 9 43 148 384 836 1660 3236 6557 14089 31515 71074 157733 340433 712639 1450356 2883306 5628789 10842031
|
||||||
|
12 17 44 112 258 563 1191 2441 4812 9081 16394 28370 47218 75867 118109 178755 263804 380625 538152 747092 1020146
|
||||||
|
-2 -7 -3 22 81 187 352 586 896 1285 1751 2286 2875 3495 4114 4690 5170 5489 5569 5318 4629
|
||||||
|
9 8 12 37 119 341 873 2025 4313 8538 15878 27993 47143 76319 119387 181245 267993 387116 547680 760541 1038567
|
||||||
|
7 19 45 93 179 339 650 1266 2488 4912 9735 19354 38509 76513 151821 301750 603281 1216629 2473213 5045951 10265339
|
||||||
|
9 19 27 26 3 -66 -218 -494 -905 -1353 -1480 -396 3831 15201 41913 100707 225285 481687 994689 1990506 3862035
|
||||||
|
27 39 64 125 250 472 849 1530 2904 5888 12450 26545 55797 114526 229134 447476 854792 1600561 2944730 5341858 9605945
|
||||||
|
11 40 84 151 263 459 803 1406 2471 4370 7762 13761 24163 41741 70617 116720 188339 296780 457136 689179 1018383
|
||||||
|
6 17 42 100 224 475 971 1937 3778 7173 13184 23370 39892 65591 104017 159383 236414 340057 475014 645056 852072
|
||||||
|
13 23 35 50 80 166 410 1030 2468 5616 12274 26017 53725 108121 211767 403087 745119 1337845 2335109 3967308 6571230
|
||||||
|
15 35 75 149 282 516 924 1642 2927 5242 9365 16538 28746 49389 84938 148717 268807 503317 968015 1883675 3653602
|
||||||
|
9 30 76 163 305 522 872 1518 2841 5610 11220 22009 41665 75734 132240 222428 361641 570342 875292 1310895 1920721
|
||||||
|
21 28 41 70 133 273 599 1376 3208 7393 16592 36055 75800 154381 305292 587808 1105471 2037998 3696899 6622680 11753751
|
||||||
|
8 27 66 147 304 580 1033 1772 3057 5529 10707 22026 46939 101055 216098 454934 939486 1901747 3775336 7356561 14081706
|
||||||
|
-1 -6 -4 19 85 229 504 986 1779 3020 4884 7589 11401 16639 23680 32964 44999 60366 79724 103815 133469
|
||||||
|
19 30 54 104 187 308 489 821 1578 3431 7814 17528 37746 77733 153859 294907 551317 1010924 1825014 3250216 5713957
|
||||||
|
21 41 70 124 239 473 916 1734 3302 6534 13604 29380 64072 137834 288368 582964 1136883 2140559 3898770 6885716 11820853
|
||||||
|
-1 5 18 37 73 175 471 1236 3017 6883 14945 31442 64987 133174 272024 555469 1135812 2327901 4783249 9845571 20263562
|
||||||
|
5 -2 -19 -36 -20 94 419 1147 2605 5348 10303 18980 33768 58336 98161 161207 258781 406594 626057 945844 1403756
|
||||||
|
-2 0 5 15 37 104 319 935 2485 5981 13226 27363 53985 103556 196703 375354 725012 1417050 2785263 5458603 10582753
|
||||||
|
19 26 35 63 138 307 666 1429 3061 6513 13615 27705 54596 104006 191594 341753 591303 994196 1627283 2597091 4047406
|
||||||
|
6 11 32 88 200 401 761 1427 2678 4995 9146 16286 28072 46793 75515 118241 180086 267467 388308 552260 770936
|
||||||
|
-9 -13 -6 28 116 314 743 1644 3462 6992 13657 26039 48849 90601 166348 301945 540425 951209 1643020 2781534 4612978
|
||||||
|
11 7 -5 -20 -18 38 211 626 1569 3720 8656 19866 44678 97719 206824 422690 834047 1590701 2937505 5263144 9168590
|
||||||
|
10 30 63 109 168 240 325 423 534 658 795 945 1108 1284 1473 1675 1890 2118 2359 2613 2880
|
||||||
|
8 13 26 62 138 273 488 806 1252 1853 2638 3638 4886 6417 8268 10478 13088 16141 19682 23758 28418
|
||||||
|
15 12 1 -23 -57 -69 35 456 1559 3942 8517 16603 30031 51261 83511 130898 198591 292976 421833 594525 822199
|
||||||
|
3 10 34 81 168 336 659 1243 2213 3696 5823 8806 13236 20970 37448 77174 175631 413358 961632 2164559 4679824
|
||||||
|
-4 -4 16 82 227 498 974 1801 3255 5852 10546 19105 34848 64097 119029 223293 423182 810080 1565696 3052536 5991817
|
||||||
|
8 13 13 8 -2 -17 -37 -62 -92 -127 -167 -212 -262 -317 -377 -442 -512 -587 -667 -752 -842
|
||||||
|
10 29 70 154 311 575 976 1538 2306 3442 5461 9745 19601 42341 93185 202283 426988 873111 1732174 3348456 6343141
|
||||||
|
8 15 43 120 284 578 1044 1717 2627 3834 5556 8516 14749 29297 63507 141067 308506 652689 1328905 2604528 4924986
|
||||||
|
1 11 34 80 172 357 716 1372 2496 4325 7240 12016 20485 37151 73009 154445 343531 782783 1789890 4049604 8986042
|
||||||
|
5 7 15 28 45 65 87 110 133 155 175 192 205 213 215 210 197 175 143 100 45
|
||||||
|
18 27 48 103 237 544 1208 2559 5144 9813 17820 30939 51595 83010 129364 195971 289470 418031 591576 822015 1123497
|
||||||
|
21 43 83 155 286 534 1016 1946 3683 6789 12097 20789 34484 55336 86142 130460 192737 278447 394239 548095 749498
|
||||||
|
15 32 60 94 124 135 107 15 -171 -486 -970 -1668 -2630 -3911 -5571 -7675 -10293 -13500 -17376 -22006 -27480
|
||||||
|
6 15 39 91 184 331 545 839 1226 1719 2331 3075 3964 5011 6229 7631 9230 11039 13071 15339 17856
|
||||||
|
17 23 43 89 181 371 795 1783 4071 9184 20113 42528 87032 173535 340054 660808 1283697 2507585 4939611 9809451 19583171
|
||||||
|
3 16 36 69 126 235 461 930 1863 3650 7052 13747 27686 58160 126167 276687 600947 1274952 2624068 5229525 10103798
|
||||||
|
9 21 33 56 124 318 817 2003 4666 10373 22086 45156 88925 169422 314203 571534 1028279 1844645 3320155 6014820 10963458
|
||||||
|
13 17 24 44 96 209 427 834 1639 3398 7513 17266 39872 90457 199629 427664 890761 1809323 3596826 7024560 13529936
|
||||||
|
9 7 1 0 26 129 422 1141 2742 6061 12584 24902 47461 87759 158191 278799 481247 814411 1352051 2203116 3525324
|
||||||
|
-3 -1 4 14 27 46 107 344 1136 3423 9332 23313 54037 117335 240434 467640 867387 1540163 2626176 4310660 6823355
|
||||||
|
17 38 67 97 122 145 188 304 591 1205 2361 4296 7144 10638 13506 12365 -163 -38488 -128737 -315725 -673018
|
||||||
|
-1 -5 -6 7 65 237 649 1513 3189 6327 12190 23385 45502 90700 185258 384768 803303 1666951 3408070 6825103 13344531
|
||||||
|
22 47 81 135 232 407 707 1191 1930 3007 4517 6567 9276 12775 17207 22727 29502 37711 47545 59207 72912
|
||||||
|
14 28 67 154 326 639 1189 2174 4047 7863 16032 33896 72905 156742 332620 691238 1400644 2761630 5295409 9878342 17943552
|
||||||
|
14 17 29 61 126 252 508 1043 2138 4271 8195 15029 26362 44370 71946 112843 171830 254861 369257 523901 729446
|
||||||
|
1 5 18 40 71 111 160 218 285 361 446 540 643 755 876 1006 1145 1293 1450 1616 1791
|
||||||
|
12 18 26 34 45 82 215 600 1530 3498 7272 13982 25219 43146 70621 111332 169944 252258 365382 517914 720137
|
||||||
|
9 12 15 12 -9 -60 -136 -187 -79 456 1881 4926 10671 20640 36906 62207 100073 154964 232419 339216 483543
|
||||||
|
-3 -4 6 41 129 329 760 1648 3390 6624 12277 21534 35628 55299 79725 104721 120083 106196 30528 -154473 -509109
|
||||||
|
9 17 49 130 296 588 1056 1788 2988 5141 9315 17647 34016 64767 119016 207380 336732 496562 629578 575329 -28787
|
||||||
|
19 25 36 62 113 199 330 516 767 1093 1504 2010 2621 3347 4198 5184 6315 7601 9052 10678 12489
|
||||||
|
5 16 36 60 76 62 -7 -132 -233 -52 994 4020 10950 24874 50495 94676 167097 281032 454256 710092 1078608
|
||||||
|
-3 -2 -2 -1 15 81 279 796 2044 4917 11353 25528 56261 121611 257333 532148 1075396 2128134 4140269 7960047 15209916
|
||||||
|
8 19 36 71 151 322 662 1317 2574 4988 9602 18368 35033 67049 129564 253328 499492 985889 1931576 3729309 7059355
|
||||||
|
15 21 41 97 230 520 1133 2404 4971 9986 19440 36649 66977 119004 206812 355370 614139 1090735 2029651 3985113 8178780
|
||||||
|
8 18 25 40 88 208 453 890 1600 2678 4233 6388 9280 13060 17893 23958 31448 40570 51545 64608 80008
|
||||||
|
12 35 82 172 331 591 994 1620 2680 4750 9275 19554 42544 92020 193961 395649 781200 1498749 2809472 5178044 9441173
|
||||||
|
12 26 43 72 138 296 670 1546 3570 8136 18103 39080 81734 166067 329694 644430 1250015 2422394 4709724 9197418 18012729
|
||||||
|
6 17 55 141 315 662 1354 2710 5276 9927 17993 31411 52905 86196 136244 209524 314338 461165 663051 936041 1299655
|
||||||
|
25 37 56 89 143 225 342 501 709 973 1300 1697 2171 2729 3378 4125 4977 5941 7024 8233 9575
|
||||||
|
16 32 66 133 271 566 1189 2447 4861 9300 17226 31159 55594 98875 177099 322226 598582 1135412 2188850 4255693 8275121
|
||||||
|
26 36 53 92 185 394 822 1614 2938 4936 7637 10828 13885 15574 13842 5630 -13246 -48084 -105075 -190772 -311127
|
||||||
|
20 39 84 183 385 781 1549 3042 5953 11617 22567 43594 83851 161122 310476 601561 1172588 2296261 4506756 8843399 17316791
|
||||||
|
13 15 16 18 27 67 202 574 1480 3536 8020 17562 37481 78314 160584 323956 645379 1276101 2518344 4983770 9915659
|
||||||
|
0 0 1 6 30 109 316 807 1946 4606 10819 25068 56728 124591 265290 549185 1110556 2204764 4314821 8345522 15967562
|
||||||
|
3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 67 71 75 79 83
|
||||||
|
-1 -5 -3 19 92 272 648 1358 2641 4985 9475 18501 37054 74918 150158 294408 560579 1033735 1846025 3196711 5378496
|
||||||
|
14 19 30 44 53 54 64 131 340 834 1917 4399 10517 26097 65285 160571 383867 891105 2017623 4483900 9840214
|
||||||
|
3 -3 -6 -2 13 43 92 164 263 393 558 762 1009 1303 1648 2048 2507 3029 3618 4278 5013
|
||||||
|
25 42 56 62 66 107 297 894 2426 5882 12979 26502 50697 91675 157758 259666 410407 624690 917634 1302494 1787068
|
||||||
|
11 22 38 62 101 171 303 552 1031 2029 4344 10116 24775 61383 149880 355849 816755 1808556 3862422 7960118 15847105
|
||||||
|
10 27 55 108 212 411 785 1488 2816 5329 10101 19303 37617 75573 157022 334955 723266 1557567 3306799 6870486 13915798
|
||||||
|
12 17 36 80 163 304 521 827 1263 2033 3844 8615 20843 50186 116403 258973 556061 1162132 2382703 4822953 9682702
|
||||||
|
20 32 48 76 130 225 379 627 1062 1941 3930 8611 19436 43388 93697 194060 384928 732550 1341604 2372398 4063790
|
||||||
|
12 22 51 113 234 467 912 1741 3228 5784 9997 16677 26906 42093 64034 94977 137692 195546 272583 373609 504282
|
||||||
|
20 44 86 149 235 363 605 1156 2468 5493 12105 25826 53101 105620 204722 390086 737495 1396067 2667074 5169749 10183056
|
||||||
|
11 17 37 93 225 507 1073 2154 4126 7579 13461 23477 41213 75033 144836 296488 630449 1355149 2881449 5982541 12054453
|
||||||
|
1 12 38 79 137 221 365 674 1429 3324 7996 19172 45033 102837 227534 487181 1009633 2027540 3952478 7494437 13850081
|
||||||
|
8 25 44 70 131 302 738 1720 3729 7584 14715 27705 51367 94910 176342 331382 631106 1215695 2356378 4564340 8774263
|
||||||
|
7 25 53 95 171 330 676 1432 3094 6779 14968 33019 72133 155017 326564 674018 1365421 2723713 5370291 10502143 20420427
|
||||||
|
19 30 45 64 83 87 47 -69 -258 -402 -130 1394 5772 15775 35858 72793 136421 240518 403763 650788 1013281
|
||||||
|
-3 8 41 116 273 587 1187 2286 4240 7665 13652 24131 42446 74214 128552 219767 369615 610246 987963 1567934 2440007
|
||||||
|
5 0 -5 -10 -15 -20 -25 -30 -35 -40 -45 -50 -55 -60 -65 -70 -75 -80 -85 -90 -95
|
||||||
|
8 2 6 45 151 365 752 1431 2630 4805 8933 17242 34942 74069 161488 354607 770672 1638944 3389972 6803015 13241957
|
||||||
|
8 29 67 127 223 394 730 1414 2803 5618 11405 23581 49606 105139 221458 457966 922282 1801243 3407135 6244643 11105377
|
||||||
|
23 44 81 149 276 521 1013 2033 4171 8598 17499 34717 66660 123523 220875 381657 638631 1037312 1639405 2526757 3805820
|
||||||
|
15 32 75 164 336 666 1294 2453 4493 7896 13277 21366 32966 48882 69816 96223 128123 164864 204831 245096 281004
|
||||||
|
14 15 12 1 -27 -73 -93 70 803 2934 8126 19605 43454 90806 181391 349036 649884 1174289 2063560 3532969 5902707
|
||||||
|
18 34 69 138 274 543 1059 1999 3618 6264 10393 16584 25554 38173 55479 78693 109234 148734 199053 262294 340818
|
||||||
|
-8 -18 -29 -34 -19 41 186 475 990 1840 3165 5140 7979 11939 17324 24489 33844 45858 61063 80058 103513
|
||||||
|
6 28 61 105 160 226 303 391 490 600 721 853 996 1150 1315 1491 1678 1876 2085 2305 2536
|
||||||
|
17 36 78 157 302 573 1087 2067 3946 7585 14697 28606 55509 106448 200236 367614 656943 1141754 1930488 3178755 5104424
|
||||||
|
27 51 95 180 341 640 1196 2247 4277 8269 16183 31806 62179 119874 226472 417681 750631 1313991 2241671 3731000 6066409
|
||||||
|
8 28 57 98 167 306 596 1167 2195 3876 6390 9929 14975 23192 39582 77107 166306 375912 859327 1962860 4478119
|
||||||
|
22 39 80 155 268 424 658 1101 2098 4393 9402 19617 39236 75214 139100 250291 441726 769595 1329388 2281599 3891676
|
||||||
|
25 52 95 163 282 506 928 1691 2999 5128 8437 13379 20512 30510 44174 62443 86405 117308 156571 205795 266774
|
||||||
|
8 32 69 123 205 333 544 940 1811 3922 9126 21574 49944 111339 237905 487997 965242 1851716 3466587 6370309 11548631
|
||||||
|
23 34 56 110 239 521 1096 2230 4450 8795 17244 33412 63675 119064 218707 396582 715357 1294896 2369732 4401050 8286675
|
||||||
|
8 19 37 69 136 286 624 1383 3073 6772 14682 31193 64932 132723 267237 531715 1048138 2050769 3987267 7708517 14822964
|
||||||
|
18 38 67 102 138 168 183 172 122 18 -157 -422 -798 -1308 -1977 -2832 -3902 -5218 -6813 -8722 -10982
|
||||||
|
13 23 56 136 299 593 1078 1826 2921 4459 6548 9308 12871 17381 22994 29878 38213 48191 60016 73904 90083
|
||||||
|
2 8 14 20 26 32 38 44 50 56 62 68 74 80 86 92 98 104 110 116 122
|
||||||
|
3 16 37 81 178 385 815 1693 3467 7034 14187 28449 56534 110763 212865 399709 731643 1304260 2264569 3832721 6330626
|
||||||
|
6 16 41 107 250 525 1028 1934 3558 6447 11516 20264 35172 60554 104556 184024 336294 646890 1311855 2771517 5984294
|
||||||
|
4 2 -1 8 60 209 531 1120 2094 3644 6192 10770 19795 38515 77591 157668 317564 629174 1224801 2347036 4438402
|
||||||
|
21 36 58 87 123 166 216 273 337 408 486 571 663 762 868 981 1101 1228 1362 1503 1651
|
||||||
|
-1 4 30 97 242 537 1115 2214 4271 8145 15648 30763 62297 129346 271948 570792 1181963 2395554 4730662 9083861 16953704
|
||||||
|
7 11 34 93 211 417 745 1248 2072 3693 7533 17391 42546 104180 248248 570709 1266338 2722472 5698241 11665570 23453174
|
||||||
|
21 43 87 167 308 561 1032 1928 3623 6754 12385 22347 40002 71924 131382 245098 465593 892589 1708475 3234847 6019680
|
||||||
|
18 45 97 196 373 668 1130 1817 2796 4143 5943 8290 11287 15046 19688 25343 32150 40257 49821 61008 73993
|
||||||
|
1 13 36 77 158 324 658 1323 2668 5455 11287 23343 47555 94394 181467 337165 605643 1053457 1778230 2919769 4674108
|
||||||
|
12 11 20 55 135 280 509 838 1278 1833 2498 3257 4081 4926 5731 6416 6880 6999 6624 5579 3659
|
||||||
|
-2 0 9 24 53 125 302 691 1456 2830 5127 8754 14223 22163 33332 48629 69106 95980 130645 174684 229881
|
||||||
|
8 9 8 5 0 -7 -16 -27 -40 -55 -72 -91 -112 -135 -160 -187 -216 -247 -280 -315 -352
|
||||||
|
18 23 24 21 14 3 -12 -31 -54 -81 -112 -147 -186 -229 -276 -327 -382 -441 -504 -571 -642
|
||||||
|
11 25 62 128 239 433 794 1516 3043 6324 13220 27093 53595 101658 184664 321747 539147 871499 1362898 2067534 3049639
|
||||||
|
18 28 45 69 100 138 183 235 294 360 433 513 600 694 795 903 1018 1140 1269 1405 1548
|
||||||
|
21 36 75 158 312 576 1023 1811 3288 6203 12121 24216 48739 97651 193203 375671 716055 1336374 2441287 4366202 7648866
|
||||||
|
18 23 27 33 48 103 299 885 2373 5699 12449 25186 47939 86949 151811 257206 425484 690439 1102711 1737359 2704274
|
||||||
|
8 27 75 172 339 609 1053 1821 3198 5675 10035 17454 29617 48849 78261 121911 184980 273963 396875 563472 785487
|
||||||
|
12 27 63 136 284 596 1255 2595 5172 9849 17895 31098 51892 83498 130079 196909 290556 419079 592239 821724 1121388
|
||||||
|
5 15 22 24 31 69 178 406 801 1396 2177 3048 3916 5326 10802 33608 113793 357560 1023014 2699829 6676501
|
||||||
|
-3 13 57 157 363 755 1466 2736 5015 9135 16573 29829 52945 92193 156962 260876 423177 670409 1038441 1574869 2341839
|
||||||
|
6 19 40 75 146 297 610 1241 2484 4866 9268 17056 30192 51278 83466 130144 194282 277293 377232 486121 586150
|
||||||
|
8 15 23 32 42 53 65 78 92 107 123 140 158 177 197 218 240 263 287 312 338
|
||||||
|
10 7 13 50 168 466 1116 2387 4666 8473 14467 23440 36296 54012 77578 107913 145754 191515 245113 305758 371704
|
||||||
|
-1 10 28 46 62 91 179 419 969 2072 4078 7468 12880 21137 33277 50585 74627 107286 150800 207802 281362
|
||||||
|
13 20 48 116 247 467 814 1378 2403 4491 8953 18344 37186 72820 136257 242907 413401 676032 1076270 1709310 2817625
|
||||||
|
-3 -8 -6 9 37 67 72 4 -211 -678 -1538 -2973 -5211 -8531 -13268 -19818 -28643 -40276 -55326 -74483 -98523
|
||||||
|
15 20 44 112 273 621 1330 2709 5283 9906 17912 31310 53029 87219 139614 217963 332535 496704 727620 1046972 1481849
|
||||||
|
5 14 36 79 148 252 424 754 1445 2931 6154 13202 28699 62699 136573 294921 629713 1329116 2775196 5735649 11730538
|
||||||
|
4 8 26 74 169 324 539 788 1002 1048 704 -370 -2665 -6860 -13863 -24856 -41344 -65208 -98762 -144814 -206731
|
||||||
|
15 22 24 30 54 117 255 529 1035 1919 3413 5922 10208 17734 31248 55703 99623 177036 310102 532566 894162
|
||||||
|
8 8 26 90 245 556 1120 2096 3763 6628 11648 20729 37856 71534 139732 279279 562730 1127176 2221398 4280252 8038319
|
||||||
|
-2 13 43 106 243 532 1122 2305 4658 9325 18585 36980 73471 145364 285116 551607 1048062 1949541 3543799 6290366 10903923
|
||||||
|
-1 -5 1 46 183 499 1125 2246 4111 7043 11449 17830 26791 39051 55453 76974 104735 140011 184241 239038 306199
|
||||||
|
0 -4 -3 13 54 130 251 427 668 984 1385 1881 2482 3198 4039 5015 6136 7412 8853 10469 12270
|
||||||
|
8 8 5 2 2 21 115 427 1279 3370 8211 19065 42931 94647 205221 438421 923123 1915127 3913509 7878244 15639079
|
||||||
|
20 43 83 149 254 415 653 993 1464 2099 2935 4013 5378 7079 9169 11705 14748 18363 22619 27589 33350
|
||||||
|
23 32 45 70 132 286 641 1408 2999 6228 12708 25632 51343 102577 205257 412677 834650 1696151 3452770 7013569 14163981
|
||||||
|
6 14 45 126 303 647 1260 2281 3892 6324 9863 14856 21717 30933 43070 58779 78802 103978 135249 173666 220395
|
||||||
|
7 11 30 72 145 257 416 630 907 1255 1682 2196 2805 3517 4340 5282 6351 7555 8902 10400 12057
|
||||||
|
16 38 86 168 300 518 903 1636 3117 6208 12696 26133 53346 107240 212277 415620 810058 1580506 3095602 6081802 11942260
|
||||||
|
9 27 52 84 123 169 222 282 349 423 504 592 687 789 898 1014 1137 1267 1404 1548 1699
|
||||||
|
28 50 82 121 155 159 95 -81 -402 -860 -1360 -1655 -1259 665 5445 15071 32400 61398 107422 177545 280927
|
||||||
|
4 4 9 28 84 242 656 1640 3768 8008 15895 29748 52936 90198 148022 235088 362780 545772 802693 1156876 1637196
|
||||||
|
-1 -5 2 32 97 224 489 1070 2329 4971 10421 21749 45813 97850 210608 451375 952035 1959691 3918580 7598118 14287121
|
||||||
|
17 21 33 56 87 114 114 55 -95 -349 -669 -918 -793 264 3180 9393 21025 41089 73733 124524 200775
|
||||||
|
18 41 89 169 280 407 509 506 278 -297 -1201 -1869 -149 10140 44562 139197 372917 910795 2087293 4564350 9631559
|
||||||
|
19 39 84 161 281 479 844 1552 2890 5254 9099 14814 22490 31544 40157 44479 37549 7873 -62402 -199785 -442281
|
||||||
|
5 11 14 21 61 199 567 1436 3362 7442 15714 31743 61499 114861 208702 373983 672487 1235361 2348306 4631749 9406189
|
||||||
|
5 25 69 156 311 558 916 1405 2070 3032 4576 7287 12246 21299 37413 65134 111163 185067 300143 474454 732057
|
||||||
|
20 39 65 91 107 99 48 -71 -290 -649 -1197 -1993 -3107 -4621 -6630 -9243 -12584 -16793 -22027 -28461 -36289
|
||||||
|
3 -4 -13 -18 -7 56 268 860 2340 5760 13184 28457 58388 114442 214951 387647 671913 1119436 1790793 2743736 4006355
|
||||||
|
7 16 37 89 206 438 846 1499 2487 3965 6239 9896 15966 26085 42604 68560 107391 162238 234633 322323 415926
|
||||||
|
11 33 63 116 217 405 761 1479 3008 6307 13274 27434 55000 106455 198842 358993 627977 1067101 1765857 2852272 4506187
|
||||||
|
10 24 42 70 132 289 684 1642 3880 8917 19816 42437 87430 173248 330510 608091 1081358 1863006 3116974 5075936 8062864
|
||||||
|
4 23 63 133 242 399 613 893 1248 1687 2219 2853 3598 4463 5457 6589 7868 9303 10903 12677 14634
|
||||||
|
2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62
|
||||||
|
4 6 15 38 91 225 572 1422 3345 7377 15301 30079 56530 102394 179955 308387 516882 848304 1362335 2135300 3250013
|
||||||
|
23 45 74 112 168 269 484 964 2001 4109 8130 15368 27754 48045 80060 128956 201547 306669 455594 662496 944972
|
||||||
|
3 20 46 77 107 128 130 101 27 -108 -322 -635 -1069 -1648 -2398 -3347 -4525 -5964 -7698 -9763 -12197
|
||||||
|
9 13 27 56 105 179 283 422 601 825 1099 1428 1817 2271 2795 3394 4073 4837 5691 6640 7689
|
||||||
|
6 13 33 74 138 231 383 688 1385 3011 6666 14438 30043 59741 113594 207136 363528 616273 1012567 1617362 2518216
|
10
res/10/example
Normal file
10
res/10/example
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
FF7FSF7F7F7F7F7F---7
|
||||||
|
L|LJ||||||||||||F--J
|
||||||
|
FL-7LJLJ||||||LJL-77
|
||||||
|
F--JF--7||LJLJ7F7FJ-
|
||||||
|
L---JF-JLJ.||-FJLJJ7
|
||||||
|
|F|F-JF---7F7-L7L|7|
|
||||||
|
|FFJF7L7F-JF7|JL---7
|
||||||
|
7-L-JL7||F7|L7F-7F7|
|
||||||
|
L.L7LFJ|||||FJL7||LJ
|
||||||
|
L7JLJL-JLJLJL--JLJ.L
|
140
res/10/input
Normal file
140
res/10/input
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
-7-|-J-F7F--7.|77.77FFJ7F77..7FJ-77-FF7FF-777F-77--L7FFJJF77FF|7F7F--FJ7-7-77-7-7.F-7--F7.F7F---7F7FF7FL|7-7-F--F7-FF7-|.|77LL-FFL7J7F-F-F7.
|
||||||
|
|..FJ7F.LL|7L-J-LJ77F-J77.--F|FL7|LFLF|LL7||FJFJJ..L|FJ7.L777|L-JF7.LLJ7|L-JF7|-F|J7J7.||FJ|L--7L7---77..J7.7J7F-J-7J7J.L|-7||F7-L.LFLFJ7LJ7
|
||||||
|
FF7|FFJF|F77J-||LL7-7-L|-7JJJ|7FF-7..|L-FJL7L7|JFF77|L--7FJL-7J.F|L-7L-F77|F|L777|L7-F-JLJFJ.F7|FJJLJJLL|7|.L|JLJ|.JJ|77.|LL-|-JLLJ7J.||7FLJ
|
||||||
|
FJL7F-L-J7L-7.-JFJJ|JF|.|.|.-F7FL|.-.|..L-7|FJ|.JL77F|J-77||-F7FFJF-JF|||77|J.L|7--F-|F--7|F7||||F7|--7.-JF-7-.7J7F|.JJ--7FJF|.L.LLJ7FL---7|
|
||||||
|
L7FJ||.|L77-|7LF|J.7|-J7|.FF.LJ.F|FF7|...|||L7L77J||7J.FJF7F7|L7|FJ7F--JL7L7LFF|J.F-7LJF7|||LJLJLJ|7-FJFJ|LJJLJ7J|-J7|.F7JF|L7-.F.|-LJ|F7||7
|
||||||
|
|LL.|7FL-JL-LJF7JF7L7.LJJ--F.LF--F-J|F77FFJL-JFJF7|L---F7|||||FJ||F-JF-7FJF7-F-7FFJFJ-FJLJ|L-7F---JF-7JJ.F....LJ-L7J|77|.7|7|.L7LFJFJ.L-7JJ.
|
||||||
|
-.|FL|.J--7LL.LF7-L-L-||.LFL-FJJ.|.F||F-7L---7L7|L7-|FL|LJ|||||FJLJF-J7LJJ||JL7L7|FJJ.L7F7L7FJL--7L|FJ7F||FJ7|-7J-LFJFJ|FF|LF-|JL-|7J|J..LLF
|
||||||
|
L|LF7|FJF--7F7.LJ|7-7LLL|.|L|JF-77L-7F|FJF---JFJ|FJF77JL-7||LJ||F7FJFF-7F-JL7-L7||L--7FLJL7LJF--7L-JL7F-7JJ.LJ7LFJ|JF---7J|.F-7----JJJ-F7-J.
|
||||||
|
|.-FJL7LFJ.JFF-|JLJ-F-|-|FJFJFJ.FL7F-7|L7L---7L-JL-J|F7F7||L7FJ||LJF7L7|L7F-J7FJLJF7FJF7F7L-7L7LL----J|FJLLF|..-J-7FJ|.F-J|7|F|.||LF|L---.|7
|
||||||
|
F|F|F||F|F7.FJ||-7JJ|FFJ|F7|-L--LJFL7LJFJF7F-JF-7F--J|||LJL-JL7|L7L||FJ|L||LF-JF--JLJFJLJL-7|FJF77F7F-JL7-7FFL-|7|L-|-7FL-J|F7LF-L---7|7L.FF
|
||||||
|
FJ|7-L|-.||F7|L|.J|||LLFJ|FF..FJLF7FJF7L-JLJF7L7LJF7.||L-----7LJFJFJ||FJFJL7L-7|F7JJFL7F7F7LJL-JL-JLJF7FJJLJ|J-JJ77|F-FJJ7FL-L.||.F-J-FJ|F7.
|
||||||
|
LFLF.L|FJL-.L7L|7.|FL77LLJ.F-7F7-|||FJL---7FJL7L--J|FJL7FF-7JL-7L7|FJ||LL7FJF-JLJL7F7FJ|LJL----7F----J||77-FJJ.J-77J|J|7FJ-LFJF|-7L-7-||FJ|.
|
||||||
|
-J||7--7--7FJ|-L-FF7LLF.|FFL7|||FJ|LJF77F7LJF-JF--7|L-7L7|FJF-7L7||L-JL-7||LL-7F--J||L-JJF--7F7||F7F7JLJF77|LLF7F||7L7||7|-LL.-JFF-7J-|J--7.
|
||||||
|
LF-LJJ-JF|7FL777F-||7|LF7-F7|||LJFJF-JL7||-FJF7L-7LJF7|FJ||7|FJFJ||F----J|L7F7|L-7FJL7F-7L-7LJLJLJLJL---J|F7LFF7LL|J7.||77J|LFJL|J-J7.-7L|||
|
||||||
|
F7J|..|-J-FJF77-F-||-F7||FJLJLJF-J-L--7LJ|FJFJL--JF-JLJL7||FJL7L7LJL--7F7L7LJLJF-J|F-JL7|F-JF---7F-------J||--|F7.||L--J.|F7-F7.||FJL-|7F7J7
|
||||||
|
JL7-7F7.LJJFFF||JF||L|LJ|L--7F-JLF7|F7L-7|L7|F7F7LL-7F-7LJ||F7L7|F----J|L7|F--7L-7|L7F7||L--JF7J||F7LF-7F7||7LF7L|LJJ|..FJ--7L|-JLL-7.|LL|L-
|
||||||
|
.FJJ|-|F-7L7.JJ-7J|L7L-7|F7FJL--7||FJ|F-JL-JLJ||L-7JLJ-L-7|LJL7LJ|F-7F-JFJLJF7L7FJL7||||L7F--JL7|||L7|FJ||||7-LF-F7J7|-|77-L77F.F--FJLL7LL-L
|
||||||
|
FF7-||||.J7F-J7.LJL7L--JLJLJF7F-J||L7|L---7F-7LJF-JF7F7F7||JF7L-7LJFJL-7|F7FJ|-|L7FS||LJFJL--7FJ|||FJ||FJLJ|FF7F7.7J||.LF77.|||7F7.|7.FJ||L|
|
||||||
|
J||..F777LJLJ.|7||FL-----7F-J||F7||FJ|F7F7LJFJF-JF-JLJLJ||L7||F7|F-JF7FJ|||L7|FJFJL7LJF-J|F-7||FJ||L7|||F--JFJLJL7-F-77-|L7-|J|FF77J7.|7LJ.J
|
||||||
|
L77F.L-L-7F7|-|LF-FF7F-77LJF7|LJLJ|L7|||||F7L7L-7L-7F-7FJ|FJ|LJLJL--J|L7LJL7|||FJ7FJF7L7F7L7|||L7|L7LJLJL7F7|F---JJL7L7FJFJ-|F7FJ|J7F|L7.7-|
|
||||||
|
|.JL-J|L-.LJ--|7LF7||L7|F7FJLJF7F-JFJ||||||L7|F-JF7LJFJL-JL7L---7F---JFJF--J||||F-JFJL-J|L-J|||FJ|FJF----J|||L7F7|F|L7LJFJLF-J||FJ--LL-F77-J
|
||||||
|
|F|7J|LFJ7FJJJL-L|LJ|7||||L-7FJ||F7L7||||||FJ||F7||F7L--7F-JF7-FJL---7L7|F-7|||LJF-JJFF7L--7||||FJL7|7F7F7|||FJ|L77F7L7FJJ-L-7||||7||7.LF|7.
|
||||||
|
L-LF-LJL|LLJ|-|.LL-7L7||||F7LJFJ|||FJLJ||||L-JLJLJLJL7F7|L7FJL7L7F---JFJLJFJ|||F-JF-7FJ|F7FJLJLJ|F-JL-JLJLJLJL-JFJFJL-J|F7F--J||L7F7-F-.L|J.
|
||||||
|
F.||.L.L|7JFJF|7LF7L7||||||L-7L7|||L--7||LJF--7F-----J||L7|L-7L7||F7F7L--7L7|||L-7L7|L7|||L--7F-J|F7F7F7F7F7F7F-JJL7F-7LJ|L--7||FJ|L7J|.FJ-|
|
||||||
|
L77|F.LJL7FJ-F|7F|L-JLJ|||L-7L-J|||F--JLJF-JF7LJFF----JL-J|F7L7LJLJLJ|F--JFJ|LJF-JFJ|FJ||L7F-JL--J|||||LJLJLJLJF--7||FJF-JF7FJLJL-JFJFJ77J.F
|
||||||
|
.L-LJFJ-||JL-F--LL7F7F7LJL7FL--7|||L----7|F7|L7F7L--7F---7LJL7L-7F---JL--7L-JF7|F7L7|L7LJFJL--7F-7|LJ|L-7F-7F7L|F-JLJL7L7J|||F-----JJF..F7F|
|
||||||
|
|J-L-J-FFLFF.|J.|LLJLJL-7FJF7F-J|||F7F7FJLJ||FJ||F7LLJF7FJF7FJF-JL-7F7JF7L7F7||||L-JL7L-7L7F--J|JLJF7|F-J|FJ|L7||F7LF7L7L7|LJL-------7---7-F
|
||||||
|
F77L--FJFJ|L-J.F|J.F----JL7||L-7LJ||LJ|L7F-J|L7||||F7FJ|L-J||LL-7F-J||FJL7||LJLJL-7F-JF-JFJL--7L7F-J|LJF7|L7L7LJLJL7|L7|FJ|F---------J7L-LJ.
|
||||||
|
LLJ7F7LF-7L--F--F--JF7F7F7LJL7F|F-JL-7L7|L77L7||||||||FJF--JL7F7||JFJ|L7FJ|L-7-F7J|L-7L-7L-7LFJFJL7FJF7|||FJFJF7F-7|L7LJL7|L7F7F7F----7-|JL-
|
||||||
|
F|F-J77LFJ7-7JFLL---JLJLJL-7FJFJL7|F7L7|L7L7FJLJLJ||LJL7L--7FJ|LJL-JFJFJL-JF-JFJ|FJF-JF7L-7L7L7|F7|L7||||||J|FJLJFJ|J|F7FJ|FJ|||LJF---J7..-J
|
||||||
|
L--7F||L|F7L|.|F|LF--7F----JL7L-7|FJ|FJL7L7LJF----JL7F-JF--J|LL7F--7L7L7F--JF-JFJL7L--J|F7L7|F||||L7||LJLJL7||F7JL-JFJ|LJFJ|7|LJF-JF77L|7J|.
|
||||||
|
LLL|7|F.|JJ.FF.J--L-7|L---7F7L7J||L7||F7|FJF-JF--7F7|L-7|F-7|F7|L7JL-J-|L7F7L-7L7FJF---J|L7|L-J||L7||L--7F7LJ||L7FF7L7L--JFJFJF-JF7|L-7||.LL
|
||||||
|
-.-.|7LFJJ.F||F|.LFFJL---7LJ|FJFJL7||||LJL7|F7|F-J|LJF-JLJ-|||||FJF7F7FJFJ||F7L7||FJF-7|L7|L--7|L7|||F--J||F-JL7L7||L|F---JFL7|F7|||F-J7-F7.
|
||||||
|
|-|-L|777--|-LFJ-F7L----7L--JL7|F7LJLJL7F7|||||L7FJF-JF-7F-JLJLJL7||||L7L-J||L7|LJ|FJFJF7||F--JL7|LJ|L--7|LJF-7|FJ||FJL7F7F7L|LJLJLJL--7-J7J
|
||||||
|
|.|.LF7L7JFLF.|..|L----7L--7F7||||F-7F-J||||||L7||FJF7L7|L---7F--J||||F|F--JL7|L7FJ|FJ|||||L--7FJ|F-JFF7|L--JFJ||||LJF-J||||FJF----7F--J|.-7
|
||||||
|
|-F7-J7JL777F|LF7L7F7F7L---J|LJLJLJFJ|F7|||||L7||||FJL7|L7F-7|L7F7||||FJL7F7FJ|FJ|FJ|F7||||F7FJ|FJ|F-7|LJF---JFJ|FJF-JF-JLJLJFJF--7|L-7JF7FF
|
||||||
|
|LLJJ-LF-F77FF7|L7LJLJL----7|F-7F7FJJ||LJ||||F||||||F-JL7||7LJFJ||||||L-7||||.||FJ|FJ|||||LJ|L7|L7|L7||F7L-7F7L7||FJFFJF----7L-JF7||F7|-7|FJ
|
||||||
|
|.FJ7-FL7|L7FJLJFJ.F7F7F---J||FJ||L-7LJF-J||L7LJ||||L7F-J|L--7|FJ||LJ|F-J||||FJ|L7|L-J|||L77|FJL-J|FJ|||L--J||FJLJL-7L7|-F7|L-7FJLJLJLJJ||77
|
||||||
|
7-7F7.7LFL7|L--7|F7|||LJF7F7LJL-JL--JF7L-7|L-JF-J|||FJL7J|F-7|||FJ|F-JL7FJ|||L7L7||-F-J|L-JFJL--7FJ|FJ|L---7|||F----JFJL7|L--7|L-7LLLF-7-FF7
|
||||||
|
JJFL--FFF-JL---JLJLJ|L--JLJL-7F------J|F7|L7JFJF7|||L7FJFJL7|||||FJ|F7FJL7|||FJFJ|L7L-7L-7|L7F--JL7|L7|F--7||LJ|F7LF7L7FJ|F--JL-7L7J-L7L--J|
|
||||||
|
LF7|7-7JL7F--7F-7F-7L7F7F---7LJF-----7LJ|L7L7|FJ||||FJL7L7FJ|||||L7LJ|L7FJ|||L7|FJFJF-JF7|F-JL7F--JL7LJ|F7LJ|F-J||FJL-JL-JL7F-7FJFJ-F-JF7F-J
|
||||||
|
7-L|7L|L|LJFFJ|||L7L7LJLJF-7L--JF---7|F7|FJFJ|L7||||L7FJ-|L7LJ|||FJF-JFJL7|||FJ|L7L7L-7|||L-7FJL--7FJF-J||F-JL--JLJF7F7F7F7LJFJL-JF7|F-JLJ7|
|
||||||
|
||7|J.J-F7F7L7|FJFJLL--7FJLL7F-7|F--JLJ||L7L7L7|LJ||FJL-7|FJF-J||L7L-7L-7||LJL7L7L7L-7LJ|L7FJL-7F-JL7L7FJLJF-7F7F--JLJLJLJL7FJF7F7|LJL---7--
|
||||||
|
JJFJL7JFJLJ|FLJL-J|F7F7LJF--J|-LJL-7F77LJ7|FJFJL-7||L7F7||L7|F7||FJF-JF7|||F--JFJFJF-J7FJFJL7F-JL-7FJFJ|F-7L7LJ|L---------7LJ-|LJLJF7F7F-J|7
|
||||||
|
.||J||LL--7|F-7F--7|LJL-7|F--JF----J|L7F-7|L7L7F7|LJFJ|||L7|LJ|||L7L-7|||||L--7|7L7L--7L-J|FJL---7LJ7L-JL7L-JF7|F-7F7F7F--JF--JF-7FJ|||L7.L7
|
||||||
|
-LL-J.-LF7||L7LJF7|L---7|LJF7.L--7F7|FJ|FJL-J7LJ|L7JL7||L7||F7|||FJF-J|||||FF7|L7FJF--JF---JF7F7FJJF77F-7|7F7|||L7|||||L---JF-7L7LJ|LJL-J-.|
|
||||||
|
L|FJ7.LFJLJL7L--J||F7F-J|F7||F7F7LJLJ|7||7.F7F-7L7|F7||L7||LJ|LJLJFJF7||||L7|LJFJL7L-7LL7F7FJ||||F-JL-JFJL-JLJ||FJ|||||F7F-7L7|FJF7JJFJ.|FL7
|
||||||
|
.F7LF-FL-7F7L----JLJLJF7LJLJLJLJL----JFJL7FJLJFJJLJ|LJ|-|||F7L-7F7L7||||||FJL-7L7L|F-JF-J|||FJ|||L----7L------JLJ|LJLJLJLJ||FJ|L-J|JJ7.|F|FF
|
||||||
|
FLJ-|-F--J||F7F7F7F-7FJL--7F----------JF7LJF7FJF--7|F7|FJ||||F7LJ|FJ|LJ||LJ7F-JFJFJ|F-JF7|LJL7|||F7-F7L--------7F---------7|L7|F7FJ.LL.|||F|
|
||||||
|
L..--7L-7FJLJLJLJLJ.LJF--7LJF---------7|L7FJ|L-JF-JLJ||L7||||||F7||FJF-JL--7L7FJ7L7||F7||||F-J|LJ||FJL--------7LJF-7F-----JL-J|||L77F-7-LFFJ
|
||||||
|
JFJ|L||||L7LF---------JF7L--JF-------7|L7||||F-7L---7||FJ|LJ|||||||L7|F--7FJFJL-7-LJ||LJ|L7L-7L7FJLJF-7F-----7L--JFJL----7F-7JLJ|FJFL7|||LJJ
|
||||||
|
.|-|-F-FL-JJ|F---------J|F7F-JF7F----JL7||L7|||L7F--J||L7L7FJ|||||L7|||F-JL7L7F7L7F-J|FFJFJF-JFJL--7|FJ|7F7F7L---7L------J|FJF-7LJF77|L-|.F-
|
||||||
|
.LF|-||F---7LJF77F7FF---J|||F-J|L----7L|||FJ|L7FJL--7|L7L7||FJLJ||FJ||||F7FJJ||L7||F7|FJFJFL7FJF---J|L7|FJLJL----JF-------JL-JFJ7|||J7JLLL|J
|
||||||
|
F-F-.FFJF-7|.FJL-JL-JF---JLJL-7L----7L7LJLJJL7|L7F--J|FJFJ||L--7|||FJLJLJ||F7|L7||LJLJL7|F--JL7L--7FJ7LJL--7F-----JF-------7F7L7F-JL-7L7LLF.
|
||||||
|
L77-J|L-JFJL-JF7F7F--JF---7F-7L----7L7L-7F--7||.LJF77LJ7L7|L-7FJ|||L7F---J|||L-JLJF----J||F7F-JF7FJ|F-7F7F7LJF7F---JF7-F7F7LJ|FJL-7F-J||F7L7
|
||||||
|
LJ||LJ-|JL----JLJ||F7JL--7LJFJF----J|L--J|F-JLJF--JL----7LJ7FJL7||L-JL---7LJL--7F-JF7F7FJLJLJF7||L-JL7LJLJL7FJ|L-7F-JL-JLJL7|||F7-||JFFL|7||
|
||||||
|
L-F7FL7|LF-7F---7LJ||F---JF7L-JF---------J|F7F7|F-------JFF-JF-J|L7JLLF--JF7F--J|F-JLJ|L7F-77|LJL----JF7F7-LJ7|F7LJF---7F-7L7LJ|L-J|F77JLL.|
|
||||||
|
.L|L777-FJFJL--7|F7||L----JL---JF-7F-----7LJLJ||L--------7|F7||7|FJ.F-L-7FJ|L7F7LJF---JFJL7L-JF-7F7F-7||||F7F7LJ|F7L--7||7L-JF7|F--J|L7777.7
|
||||||
|
FF|FJF7FL7|F7F7||||||F7F-7F---7FL7LJF7F7|L7F-7LJF-7F-----J||LJ7-||J7FL|J||JL7LJL77L---7|F-JF-7|FJ|||FLJLJLJLJ|F7LJL7F-JLJF---JLJL7F7|FJF7--|
|
||||||
|
F-J|-||-FJLJ||LJLJ||||||FJL--7|F7L-7|LJL-7LJF|F-JFJL7F---7||JLL-LJ7FF.|FLJJJ|F--JFF7JFJ|L--JF||L-J||F-----7F7LJL--7|L7F7FJF-7F7F7LJLJ|||L7-J
|
||||||
|
L-7L-JL-JF-7LJF7F7LJLJLJL--7FJLJ|F7LJF--7L--7||F7L--J|F--JLJ777|LJ77|7LLL-FFJ|F-7FJL7L-JF----JL-7JLJL----7||L-----JL-J||L7|FLJLJ|F7F7L-JFJ7J
|
||||||
|
LFJF7F7F7|FJF7|LJL7F--7F--7|L--7|||F7L-7|F--J|LJ|F---JL-7F|.|JF|-|.LF-.|.LFL7LJFJ|F7L7F-JF7F-7F7|F7F-----J|L---7F-----JL-JL---7.LJ||L7F7L-7|
|
||||||
|
.L7|LJLJLJL7|LJ|F7LJF7LJF-JL-7FJLJ||L--JLJF-7|F7LJF7F7F-JJ-||-7|F----JF|-FF-JF7L7LJL7LJF-J||FJ|LJ|LJF7F--7L-7F7LJF7F-7F7F7F7F7L--7LJLLJL7FJ-
|
||||||
|
-7LJF----7-LJF7FJL--JL-7L7F-7LJF-7|L------JFJ||L7FJLJLJF7-F777|F|.L7FLF|--L-7||FJJ|-L--JLFJ|L7|F-JF7|||F-JF7LJ|F7||L7LJLJ||LJL---JJ7|FJ|LJF|
|
||||||
|
LL7|L-7F7L---JLJF7F-7F7L-J|7|F-J7|L---7F-7FJJLJFJL-----JL-JL-7LL|F||F.FJ7FJ-LJLJJLFF7F---JFJLLJL--JLJLJL--JL-7||LJL7L---7|L--7F--7JFJ7--L7--
|
||||||
|
.|L-JF|||F--7F7FJ||7LJL7F-JFJ|F--JF7F7LJFJL-7F7L7F7F-----7F--J.LLL-|J-F7LFJ-L..L7.FJ|L--7FJ.F----7F-7F--7F---JLJF--JF---JL7F7LJF-JFF-J7LLL-J
|
||||||
|
-L-7LFJ|LJF7LJ||FJ|F---J|F-JFJL---JLJL7-L--7LJ|-|||L--7F-JL--77LLL.7--J7-||7|7-||FL7|F7JLJF7L---7|L7|L-7|L---7F7L--7L7F7JFLJ|F-J7-LJ-JF7J|F.
|
||||||
|
||7LLL-J|FJL--J|L7|L7F--JL--JF----7F-7L---7|F7L7LJ|F7FJL7F--7|7F7|7L-77L-777J|F--LJ|LJL--7||F7F-JL-JL-7||F-7FJ|L--7L7LJL7F-7|L7J7.|L|.7J.LFJ
|
||||||
|
FJ77|LJJLL-7F7FJ7||FJ|F---7F-JF7F7LJ||F-7FJLJL7L-7||||-|||.LLJJFL--.FLJ-JJJ|JFL7L|.L--7F7LJLJLJF-7F--7LJLJ|LJFJF7FJ.L---J|FJL-JFJ-J--7L7-|J.
|
||||||
|
F.F7-7F7LF7LJLJF7LJL-JL--7LJF7|LJL--7|L7LJF--7L--JLJ|L-7LJ-7F|-L.-77.J-F|.LLF|LFF7F7F7LJL-7F---JLLJF7L-----7FJFJLJF-7F7F7||F---7|.|L|7LF-F-7
|
||||||
|
F7||7F||FJL---7||JF7-F7F7|F7|||F----JL-JF-JF7L-7F7F7L--J7|-LFJLJ-LFFJJ.F|..FJ|FF|LJLJL7F--J|F--7F--JL------J|FJF7.L7||||LJLJF-7L77|.F|7.||L-
|
||||||
|
LFJL7FJ|L-7F-7LJL-JL7||||LJ||||L---7F7F7L7FJL--J|LJ|F7F7F77|.7-|7F7|7|F7LF-7L77LL--7F7LJF7FJL-7|L------7F--7|L-JL7FJLJLJF--7L7L7|7J--.|77|L|
|
||||||
|
|L-7|L7|F7LJFJF----7||LJL-7LJLJF7F7LJLJL7||F7F--JF-J|LJLJL77.-7JL-L7-7JJ.-.F-|F-|LL||L7FJ||F--JL----7F7LJF-J|F---J|F----JF7L7L7LJ|7||F|LJ7L-
|
||||||
|
LF-JL-JLJL7LL-JF7F-J||F--7L-7F7|LJ|F7F-7LJLJ||F7FJLFJF-7F-JL||.7F7.|L|JLLJ7F-||L-J7LJFJ||LJL---7F--7LJL--JF7|L----JL--7F7|L7L-JFF7F7--77-|77
|
||||||
|
.L7F-7F7F7L----JLJF7LJL7FL-7LJ|L-7LJ|L7L7F7FJ||LJF7|FJJLJF|---7|7.J7-|7.L|FJ|LLJL-JJ.L7L7F-----J|F-JF7F7F7|||F-7F7F7F-J|||FJLF77|||||.|LJ|J-
|
||||||
|
F.||FJ|LJ|F7F--7F7||F-7|F-7L-7|F7L-7L7|JLJ|L7|L--JLJL-7FF-7J.LFL77F---J---J.7J7.|F77FLL-J|F-----JL-7|LJLJLJLJL7LJLJLJF-JLJL--JL-JLJL77J77LJJ
|
||||||
|
--LJL7|-FJ||L7FJ|LJ||.LJL7L-7||||F7L7|L-7-L-J|F----7F-J7L7L-7--7|-|.F7.L7F|-7||-FF-7-F7F7LJF-------J|F----7F-7L--7F7.|F----7F7F7F7F7L7-L7JFF
|
||||||
|
LFLLFJL7L7|L7|L-JF7LJF---JF7LJLJLJL-JL-7|F-7FJL---7||JJFFL7FJ7F|J.|-LF--J-7FJJJ-LL7L-JLJL--JF7F7F7F7||F--7LJ||F--J||FJL---7LJLJLJ||L-J7.|FL.
|
||||||
|
.JJ-|F-J-LJ.LJJF7|L7-L----JL-------7F77LJL7||F----JLJ-F-7FJ|.F77|.|7|FJFLLFL7L.FF7|F--------J||LJLJLJLJF7L--7LJF--JLJF7F-7L7F-77JLJLLL|FFFL7
|
||||||
|
JJ.FLJF7|F7F7F7|LJFJF7F7F7F7F----77LJL7F7FJLJL--7F-7F7L7LJFJFJ|F7.||F7F77F777FF7||LJ7F--7|F77LJF-7|F7F-JL--7L7F|F----JLJJL7||FJ-7L|||..L7-..
|
||||||
|
.7-|J.|L-JLJLJ|L-7L-JLJLJLJLJF--7L----J|||F--7F7LJFJ||J|F-J|L7LJ|7-F|LJL7|L7-FF7||F-7|F7|FJ|F7.L7|FJLJF7F7LL7L-JL--7F7F--7|LJL77|FFJ-JFF|L77
|
||||||
|
FLFJ|-L------7L--JF7F7F--7F7FJF-JF-----JLJL-7LJ|F7L7|L7|L--7J|F-J77LL--7LJFJ-F|LJ|L7|LJ||L7|||F7||L--7|LJL7-L-7F---J||L7FJL--7L7F-7J.|FJJ7.7
|
||||||
|
||L-J7LJ-F---JF7F7|||LJF-J||||L--JF-----7F-7L-7LJL-J|FJ|F--JFJL--7F7FF7|F7L7FFL-7L7|L7L||FJ||LJLJL7JFJ|F--JF7-|L----JL-JL7|F7L7LJFJLF-F-7--J
|
||||||
|
F|L|-LJ.FJF7F-J||||LJF-JF7||L7F--7L----7|L7|F7L--7F7|L7|L7|FJF---J||FJLJ|L-JF7F7L7LJFJFJ|L7|L7F--7|FJFJL---JL7L-7F7F--7F7L-JL7|F7L--77F7J|.7
|
||||||
|
7.FF7LLF|FJLJF-J|LJF7L7FJ||L-JL-7L---7FJ|FJLJ|F--J|LJFJL7|FJFJ-F-7||L--7L7F7|LJL7L-7L7L7L7||FJ|F-J|L-J|F7F7F7L-7|||L7FJ|L7F7FJ|||F--JJJ|LF-7
|
||||||
|
L-LJL-|FLJF7FJF7|F-JL-JL7||F-7F-JF-7JLJF|L--7|L-7-|F-J|FJ|L7|F7|FJ||F7FJFJ||L--7L7J|FJ-L7LJ|L-JL-7L-77FJLJLJL7FJ|||FJL7L7||LJ7LJ|L-7F|LJ7F|-
|
||||||
|
F-F-.-F-7FJLJFJLJ|F7F---JLJL7LJF-JFL---7|F--JL--JFJL--7L7L-JLJLJ|FJ|||L7|FJ|F7-L7|FJ|F7LL-7|F7|F7|F-JFJF--7F7LJJLJLJ-FJFJ|L---7|L--J-|.L7LLJ
|
||||||
|
--7J-LL7LJF7FJF-7||LJF7F7F-7L--JF-----7||L-7F7F7FJF---JFJF------JL7LJ|FJ||FJ||F-J|L7||L---JLJL-J||L7.L7|F-J|L-------7L-JFL----JF7F7F7L|||LLJ
|
||||||
|
L|FJFFLL--JLJFL7|LJF7||||L7L--7LL----7||L--J|LJ|L7L--7FJFJF7F-7FF7L-7|L7||L7||L-7|7||L---------7LJFJF7LJL--JF-------JF---7F7-F7|||LJ|-LJ7--F
|
||||||
|
L-J-77.||J7LF--JL--JLJLJL7L--7|F7F---JLJF7F7L7FJ.|F--J|FJFJ||FJFJ|F7|L-J||FJ||F-J|FJ|F--7F-----JF7L-JL-7F---JLF-----7|F--J|L-J||LJF-J-7LF-7J
|
||||||
|
FJ--|.-FJ.-JL7F-----7F7F7L---J|||L---7F7||||FJL7FJL7F7||FJFJ|L7|FJ||L--7||L-J||F7LJFJ|F-JL-7F7F7||F-7F7|L--7F7|F---7||L-7FJF--J|F-JJ.L7.|--7
|
||||||
|
|FJ|.FJL--7F|LJ.F---J||||F---7LJL----J|||||||F-JL-7||LJ|L7L7|FJ|L7||LF7|||F--JLJL-7|FJL7F7F||LJLJ||-|||L--7LJLJL--7LJ|F-J|FJF7L||F7-F|7-J.|7
|
||||||
|
L|-F||7.F7F-77F7L--7FJLJ||F--JF-------JLJLJLJL-7F-JLJF-JFJFJ|L7|FJ||FJ||LJL-7F7F--J|L7FJ|L-J|F---JL7LJL7F7L-------JF7||F-JL-JL-JLJL77L77L|L7
|
||||||
|
L|FFLF77|FL7L-JL---J|F--J|L-7FJF-------7F7F7F7FJL---7|F7|FJ-L7LJ|FJ|L7|L7F--J|||F-7L-JL7L7F-JL7F7F7|F-7LJL-7F7JF7F7|||||F7F7F7F---7L77LL-77|
|
||||||
|
-JFL||L7F7.L---7F7F7|L---JF7LJ7L---7FF7LJLJ||LJF7F7FJ||LJL7F7|F-JL7L7||FJ||F7||||FJF---J7LJF--J|LJLJL7L---7LJL-JLJLJLJ|||LJLJ|L--7L7L77J.|-F
|
||||||
|
|.-FFL7LJL----7LJLJ||F----JL-------JFJL--7FJ|F-JLJ|L7LJF7FJ|||L7JFJFJ||L7|FJLJ|||L7|F--7F7.|F-7|F----JF7F7L-7F7F------J|L---7|F7FJ-L7L7----7
|
||||||
|
7..7LLL---7F-7L7JF7LJL--7F7F7F7F---7|F---JL7|L---7L7|F-JLJ||||FJFJFJ||L7|LJF--JLJFJLJF-J|L7LJFJ|L7F7F7|LJL-7|||L7F7F7LFJF7F7|LJ|L7F7L-JFF7.|
|
||||||
|
L7.J-|-JJ7||-L7L-JL-7F7FLJLJ||||F-7LJL----7LJF-7JL7||L7F-7FJLJ|.|FJF7L7||F-JF-77FJF7FJF7|FJF7|FJ7LJ||LJF7F7|LJL7LJLJL-JFJLJLJF7L7LJL-7F-7JF-
|
||||||
|
FFF7.-7JLFLJF7L----7|||F7F7LLJLJL7|F-7F---JF7L7|F-J|L7||FJL--7L7|L7|L7||||F7L7|FJFJLJFJLJ|FJ|LJF7F7LJF-JLJ|L-7FJF-7F7F7L-7FF-JL7L----JL7L-77
|
||||||
|
|7.-7.|.FL.FJL7F---JLJLJLJL7F7F7FJLJFJL---7|L7||L-7L-JLJL7F7.|FJ|FJL7LJ||LJ|FJ||FJF7.L-7FJL7L77|||L7.L---7|F-J|FJFJ|LJ|F7L7|F--JF--77F-JF-J-
|
||||||
|
.L7|.L-7.|FJF7LJF-7F--7F7F-J|LJ|L--7L-----J|FJ||F7L--7F--J||FJL7||F7L-7||F-JL7|||||L7JFJ|F7|FJFJ||FJF7F7FJLJF7|L7L7L7FJ|L-J||LF7L7FJFL-7||.L
|
||||||
|
.|||..FF--L-JL-7|FJ|F7LJ||F7L-7|F-7L7F7F-7-|L-J|||F--JL7F-J|L-7LJLJL7J||||LF7|LJL7L7|FJFJ|||L7L7||L7|LJ|L7FFJ|L-JFJFJL7L--7|L-JL-J|F-7FJL777
|
||||||
|
-JLF.J-|FF7JF-7LJL-J|L--JLJ|F7||L7L-J|||FJFJF--J||L--7FJL-7||FJF7F--JFJLJL7|||F--JL||L7|FJLJFJL|||FJL-7|FL7L7L--7L-JF7L7F-J|F-----J|FJ|F-JL|
|
||||||
|
|7JFF7F--JL7L7|LF--7L----7FJ||||FL-7FJ||L7|FJLF7||F7FJ|F7FJ|FJFJLJF-7L-7F-J||||F-7FJ|FJ||F7FJ|FJ||L7F-J|F-JFJF--JF7FJL7|L--JL-7-F7FJL7||F7F|
|
||||||
|
-L7.L-L---7L-JL7L-7|F----JL-JLJL---J|FJL7|||F7|||||||FJ||L7||FJF7-|FJF7||F7|||||FJL7|L7|||LJF7L7|L7|L7FJL--JFJF7F|LJF7|L7F-7F-JFJLJF7LJLJ|77
|
||||||
|
|.L|.FLJ.L|F7F7L-7||L-7F--7F7F7F---7|L7FJ||LJ|||||||||FJ|FJ||L7|L7||FJLJ||||LJ||L7FJL7|||L7FJ|FJL7||FJ|F7F-7L-JL-JF-J||FJ|FJL--JF--J|F7F7L-7
|
||||||
|
FJJ|-|L|-7LJLJL-7||L-7LJF7LJLJLJF--JL7||L||F-J|LJ||||LJFJL7LJFJ|.LJ|L7F-J||L7J|L7LJF-J||L7||FJ|F7||LJFJ|||FJF--7F-JF-J|L7|L-7F-7|F-7|||||F7|
|
||||||
|
L|FL-|-|JFJF----JLJF7L-7||F-77F7L7F-7||L7||L-7L-7||||F-JF7|F7L-JF--JFJ|F7|L7L7L-JF-JF7|L7|LJL-J|LJL7LL7|LJL7L7FJL-7L-7L7||F-JL7|LJFJ||||||LJ
|
||||||
|
LF-J7|L||.|L-----7FJ|F7|||L7L-JL-J|FJ||FJ|L-7L7FJLJ|||F7||LJL--7L7F7|||||L7L7L--7L-7|||.|L-7F--JF7FJF-JL--7L7|L7F-JF7L-J||L-7FJ|F7|-LJ||||||
|
||||||
|
.7JF-7-J-FF7F7F--J|FJ||LJL-JF---7FJL-J|L7L7FJFJL-7.|||||||F7F-7L7|||L7|||FJFJF7FJF-J|||FJF-J|F-7|||7L-7F-7L7||FJL--JL--7|L-7|L7LJ||FJ-LJLJ-7
|
||||||
|
F7.FF-FJLFJLJLJF7FJL-JL-7F-7|F--JL7F--JFJ.|L7L7F7L7LJLJLJ||LJFJFJLJ|FJ||LJF|FJ|L7L7FJ||L7L7FJ|FJ||L-7FJL7|FJLJL7F7F---7||F7|L7L-7LJ----||LL|
|
||||||
|
LJF-LJJ.FL--7F-JLJF7F-7FJ|FJ||F7F7|L--7L-7|FJFJ|L7L--7FF-JL-7L-JF--J|FJL7F-J|||FJFJ|FJL7L7|L7|L7||F7|L7FJLJ.F7FJ||L-7FJ|||||FJF-J.|.|.F-|7.L
|
||||||
|
.L-7|-FF-F--J|F--7||L7LJFJL7|LJ|||L7F-JF-JLJ|L7L7|F-7L7|F7F7L-77L7F7|L7FJ|F7L7||FJFJL--JJ||7LJFLJ||||FJL----J||FJ|F7||FJ||LJL7L7J-7.L|JF|77|
|
||||||
|
7.L-JF.L-L7F7||F7LJL7L-7L-7||F-J||FJ|F7L-----7L7|||L|FJLJ|||F7L77LJ|L7||FJ||FJ|||FJF7F---JL--7F--J|LJ|F7F7F-7|||-LJ||LJF|L77F|FJ|LF7|L.|7FL-
|
||||||
|
LJ7FFJ7J|.||LJLJL--7|FFJF-JLJL-7||L7LJL7F--7FJ7LJ|L7LJF--J||||FJF77L-JLJL7|||-||||.|||F--7F7FJL--7L7FJ|||||FJ||L-7FJL--7L7L7FJL--7||J.L|LFFJ
|
||||||
|
L|FFF.L7L-LJF------JL-JFJJF7F7FJ|L7L7FFJL77|L7F--JFJF-JF-7||||L-JL---7F--J||L7||||FJ||L7FJ||L-7F7|FJ|FJ||LJL7||F7|L-7F7|7L7|L7F--J||77F|7JLJ
|
||||||
|
.F|FJ-LLJL|.L---7F7F-7FJF-JLJLJFJ||FJFJF7L7L-JL--7L7|F7|F|||||F7F--7FJL--7||FJLJLJL7LJFJL7|L-7||LJL7||FJ|F7FJ|LJ|L-7|||L-7|L7||7F7||F7-F7L|J
|
||||||
|
F7J||-|F-JL7FLF7||||FJ|-L7F-7F7L-7||LL-JL7L---7F-JFJLJ||FJ|LJ|||L-7|L7F--J||L7F7JF7L-7L-7LJF7|||F-7|||L7LJ||FJF-JF-J||L7FJ|FJ|L-JLJLJL-JL7LF
|
||||||
|
|LFL7F-7-7LLF-JLJ|LJL7|F-JL7LJL7FJLJF----JF7F-J|F7L-7FJ|L7L7.|||F-JL7||F7FJL7LJ|FJL--JF7L7FJLJ|LJFJ|LJ-L7FJLJ7|F7L-7||.|L7||FJF7F-7F----7|.|
|
||||||
|
J-JLF7F-.-7-L7F7FJJF7LJL-7FJ-F-JL-7.L-7F7FJ|L-7LJL7FJL7|FJFJFJ||L-7-||LJ|L-7|F7|L--7F-JL7|L--7L7-L7|7F7FJL--7FJ||F-JLJFJFJ|||FJ|L7LJJ.L|LJ7-
|
||||||
|
|L-7J.|.F|J|LLJLJFFJ|F---J|F7|F7F7|F--J||L7L--J-F-JL-7||L7||L7||F7|FJL-7L-7|||LJF--JL--7||F--JFJF-JL-J|L7F7FJL7||L--7L|FJFJ||||L7L7.LLL7JF||
|
||||||
|
|..|||-.||-7J-F--7L7|L-7F7LJ|||||||L--7|L7L----7|F7F7|||FJ|F-J|||||L7F7|F-J||L7JL-7F7F7|LJL--7|LL7F7F7L7||||F7|||F7FJFJL7L-JLJ-JL-J7F7F|||77
|
||||||
|
J.7.LFJ7LLF-7-L-7|L|L--J||F-JLJ||||F--JL7|F----JLJ||LJLJL7|L7FJLJLJFJ||||F7|L-JF--J||||L7-F--JL7FJ||||FJLJ|LJ|LJ||LJ-|F-J|LJLJ.L|L.|LJ-L7|L|
|
||||||
|
FFF-.L.FJ-LJF---JL7L7F7FJ|L---7||||L-7F7||L-7F7F--JL---7FJ|FJL--7F7L-J|||||L7FFL--7|LJ|FJFJF-7FJ|FJLJ|L-7FJF-JF-JL-7LLJ7FF.L|LF-|-7|F||7LJF|
|
||||||
|
---.7.F|JL|FL----7L-J|||7L7F7FJ|||L7FJ||||F7LJ|L--7F-7FJL7|L7F-7LJL7F-J|||L7L7F---JL-7|L7L7|FJL7|L7F-JF7|L7L7LL-7F7L7JJF777FJ-J|L7L77F7-7LLL
|
||||||
|
||.FL.-|-77|F----JF-7||L7-LJ||-LJL7||FJ|||||F7|F--JL7|L7LLJ-LJ-L7F-J|F7|||FJFJ|F7F7F-JL7L7||L7FJ|FJL-7||L7|FJ77FJ|L7L7-FF7FLJ7J|JJ..F-7.J|JJ
|
||||||
|
.7F7J7J.|JF-L--7F7|FJ||FJF--JL-7F-J|LJFJ|||||||L7F7FJ|FJJ.LF----JL7FJ|||LJL7|FJ||||L--7L7|LJ7||L|L7-FJ|L7|||L|F|FJJL-J..J77--F.7LF-J|LJ-LL--
|
||||||
|
FJF|-|FFFJLF---J|||L7|||FJF-7F-J|F7L7F|FJ||||LJFJ||L7LJJ7F|L--7F7FJL7||L7JLLJ|FJLJL7F-JFLJ-F-JL7|FJFJFJFJ|LJ-F-J|J7|-J-|.|-.LF-LF7JFJ..F||..
|
||||||
|
J.LF.LL-|.LL-7F7|LJL|||||FJFJ|F-J||FJFJL7LJLJF-JFJ|FJJ|7F--F--J||L-7LJL7|JJL-||F7F-JL--7LJ.L-7FJ|L7L7L7L7L-7-L7FJ.|-.L-|F|.|J|L|||FJ777-LL77
|
||||||
|
LF7L||-FFF.LLLJ||FF7||||LJJL7|L7FJ|L7L7FJJL|JL7FJFJL7.77L.FL-7FJ|F7|LJFLJ7..FLJ|LJF7F--J-7-F-J|L|FJFJFJFJF7|JJLJF7..F----L-7FL7-|7L|LF-.LLJ7
|
||||||
|
.F|L|7-L-7J7J..LJ-|LJ|||7.LFJL7LJFJFJFJL77F|7LLJLL7FJ-L7FLJ.L||J||LJLF|7||7F-.L|F7||L-7JJF-L--J.LJLL-JJL-JLJ.F-L7LJ.|.|.||LJ7JJFL7F||JJFLLF|
|
||||||
|
F|7.J|7...|F7F-JLF|F7|LJ-J7L-7|J7|FJFJF-J7JFJ|L|JLLJF|.L-|LJ|||FJL7|-L-|-LFL-7-LJLJ|F-JJ.J-JLJ-FJ.L|-L-7L.J--7|J.|.L7-7-LLJF|7F77.-L|-FF-F7J
|
||||||
|
.||FL-J-77L-L|7.LF||||||7L7|-LJJ-|L7L7|J---JFL--.J||---..-|7LLJ|F7L-7JJ|7|||FFF7L|L|L7F--L7JLJ.F|7|LF7F-7L7F7LJ7F--|J.L.L|-LJ-J777LFL--JF-7.
|
||||||
|
7.L7J7FFJFLL7L-FLFJ||L7-F7FJ7-|L|L7|-LJJ7LJL|JJ.|J|JF.LF.|L7LJLLJL--JL7J77.LJ||F-7JL7|J.7J|.|.F|FF-FJJ|F|.JLJ|.F-FF|.7.-|L-JF--JFJFJJ|J-FJL-
|
||||||
|
J.|7-F7.LLJL|.77LL-JL-J7F-JLL7|.F7LJ7FL-J.FL|.|-.7.F|F-7.-7JJ|FL||-||.|7|-7-JJ|LLLJ|LJ7FJ.JFFL7JL--J-F77J-F77F-|-F.77.L.LF77FJ|LF-7.FJL-LJ|.
|
||||||
|
|.7L-|JL.LF777F|.|J|.JJ-|.-.|L.FFJJ||-L-|7L7JF7.7JFJLF.|J|||LF--JJ7.7.J-L||.|FL7||-L7L--7FLL-7|77F7J-|.J7.L7JLFL.LF7FF|.F7F|.FFJ|FJF||.7J7.J
|
||||||
|
|7|.FJ.J-.L|JF-JFJ.|.|LFJ-|FJFF7JJ.||LL7--J|FLJ7.LF-J|7L7L7J.LJF|7L-7-|JJ.FF-FL7-L7L|JLFL7.|F7JF-J-7FL7L7-|J77|LFF-|--J-F77JFL|.|J7.L7-JLJ7|
|
||||||
|
-F7-||7JFFL|L|.|F-7L7J7JFFF---L7JJ.7-.FFJ7F.|LFJ--J.F7JFJJ.F-7--77.F|J|FF7LJF--7J|L7.|.FJLF-7LFJ|-|F-77.LF----7LLJL||.LLJLJFF7J7|-77.-.LJF-J
|
||||||
|
LJ--|J7.LJFJ7|7FJ---L77LLF7J7.FJ7F7L77.J.FLF-FJJ.FL.F--FJ.F-FF7J|7FFJFF|-7|JLL--7J-J7|7LF7LLF---7F7--F7F-JL-.|7LF|7F|--.FJ.FJ|7F|-L77|L7FL-J
|
||||||
|
|JL-JJ-|.FJ-LL7LF7-F-JL--LJL|---|JLJJJ.|-JLLJ|J.FJ.FLLJJLJ-J|L-.LF-J-LJLLJ-7.L--L..LLJ-.LJJFJ---JL7J.LFJLF-J7.|-JJLJ.|J-JJ|L7J|.|.LL-7.|J.-J
|
10
res/11/example
Normal file
10
res/11/example
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
...#......
|
||||||
|
.......#..
|
||||||
|
#.........
|
||||||
|
..........
|
||||||
|
......#...
|
||||||
|
.#........
|
||||||
|
.........#
|
||||||
|
..........
|
||||||
|
.......#..
|
||||||
|
#...#.....
|
140
res/11/input
Normal file
140
res/11/input
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
................................................#.........#............................................#....................................
|
||||||
|
..#.............#......#.............................................#...........................................................#..........
|
||||||
|
..............................................................#..............................#..............................................
|
||||||
|
.................................................................................................................#..........................
|
||||||
|
...........#...........................#...............................................#..................................#.............#...
|
||||||
|
............................#..................#.....#..........................#...........................................................
|
||||||
|
..................................#................................#........................................................................
|
||||||
|
...........................................................................#................................................................
|
||||||
|
.....#...................................#......................................................#.......................#...........#.....#.
|
||||||
|
.....................#........#....................#....................................................#...................................
|
||||||
|
......................................................................#.....................................................................
|
||||||
|
...........................................................#.................................#..............................................
|
||||||
|
........#..................#....................#....................................................#......................................
|
||||||
|
#.............#....................................................#..............#.............................#...........................
|
||||||
|
...................#.............#...................................................................................#...............#......
|
||||||
|
.............................................................................#.............................................................#
|
||||||
|
.........................................................................................................#..................................
|
||||||
|
....#...........................................................................................#...........................#.....#.........
|
||||||
|
.....................#.......................#.........#....................................................................................
|
||||||
|
#............#.........................................................................#....................#...............................
|
||||||
|
................................#..................#...........#......#............................#...................#.......#............
|
||||||
|
.......................................................................................................................................#....
|
||||||
|
...................................................................................#........................................................
|
||||||
|
.........................#.............#...................................................................................#................
|
||||||
|
............................................................................................................................................
|
||||||
|
..........#..............................................................#......#.........#..........#......................................
|
||||||
|
............................................................................................................................................
|
||||||
|
.................................................................................................#............................#.............
|
||||||
|
................#...............................#............#.....................#........................................................
|
||||||
|
.#........................#..........................#......................................................#.......................#.......
|
||||||
|
.......#....................................#................................#..............................................................
|
||||||
|
.................................#.....................................#..................................................................#.
|
||||||
|
........................................................#.............................#...............................#........#............
|
||||||
|
.....................#...................#.....#...............#............................................................................
|
||||||
|
.............#...................................................................................................#..........................
|
||||||
|
................................................................................................#.....#...............................#.....
|
||||||
|
.................#................#................#........................................................................................
|
||||||
|
.#..........................#.............................#.......#.......#................................................................#
|
||||||
|
.............................................#.............................................................#................................
|
||||||
|
...........#.................................................................................#...............................#..............
|
||||||
|
.....................#.................................#.......#..................................................................#.....#...
|
||||||
|
.......#..............................#..............................................................#......................................
|
||||||
|
#...............................#.....................................#...............#........................#.......#....................
|
||||||
|
...........................................................................#.....#.........................................................#
|
||||||
|
...........................................................................................#................................................
|
||||||
|
........................................................#................................................#.......................#..........
|
||||||
|
.........#............#............................................#.................................................#.....#................
|
||||||
|
............................................................................................................................................
|
||||||
|
......................................#......#........................................................#.........#...........................
|
||||||
|
.............#.....#......#..........................#......................................................................................
|
||||||
|
......#................................................................................................................................#....
|
||||||
|
.............................................................................................................#..............................
|
||||||
|
..#.......#.............................#.....................#..................#........#.................................................
|
||||||
|
............................................................................................................................................
|
||||||
|
......................................................................................#...............................#.....................
|
||||||
|
..................#...........................#...........................#.........................#.........................#.............
|
||||||
|
............................................................................................................................................
|
||||||
|
......................................#..................................................#.........................................#........
|
||||||
|
.......................#.....#................................................................#.............#............#..................
|
||||||
|
.....#.............................................#.............#..........................................................................
|
||||||
|
.............#...........................................................#.......#..................................#...........#...........
|
||||||
|
.................................#..........................................................................................................
|
||||||
|
.............................................#...........#..................................................................................
|
||||||
|
.......#......................................................#............................#.........#........#.............................
|
||||||
|
.....................#................................................#...........................................................#.........
|
||||||
|
...............#...................#...............#.......................................................................#................
|
||||||
|
#..........................#......................................................................#.........................................
|
||||||
|
.............................................................................#..............................................................
|
||||||
|
...............................#......#.................#..............................................#..........#.........................
|
||||||
|
...........................................................................................................................................#
|
||||||
|
.................#......#.......................#....................................#.....#..............................#.................
|
||||||
|
.........#.............................................................#..................................#.................................
|
||||||
|
....................................................#............#............#.........................................................#...
|
||||||
|
..#.........................................................#........................................................#..........#...........
|
||||||
|
............................................................................................................................................
|
||||||
|
............................................................................................................................................
|
||||||
|
.......#...........................#..............................................................#.........................................
|
||||||
|
....................#...................................#................................................................#..................
|
||||||
|
..............................#.............................................................................................................
|
||||||
|
..#......................#.............................................#........#..........#................................................
|
||||||
|
..........#.............................#......................#................................................................#...........
|
||||||
|
.....................................................................................................#......................................
|
||||||
|
......................#.............................................................................................#......................#
|
||||||
|
#................#..................................#........................................#.................#............................
|
||||||
|
...................................#......#.......................#...........#..........................................#.............#....
|
||||||
|
............................................................................................................................................
|
||||||
|
..........#..............................................#..................................................................................
|
||||||
|
............................................................................................................................................
|
||||||
|
....................#......#..........#.......................#......#....................#..........#.......#..................#...........
|
||||||
|
...#.........................................................................#..............................................................
|
||||||
|
..................................................................................#..............#..........................................
|
||||||
|
........#.......................#..........#................................................................................................
|
||||||
|
..............#...........................................................................................#.................................
|
||||||
|
................................................................#.......................................................................#...
|
||||||
|
.......................#................#.....................................................................#.............................
|
||||||
|
....#............#............#.................................................................#.....#.....................................
|
||||||
|
...................................................................................................................#........................
|
||||||
|
...........................................#..............................................................................#.................
|
||||||
|
.......#.........................................#.......#.......#.....#...............................................................#....
|
||||||
|
................................................................................#...........#.....................................#.........
|
||||||
|
...........#.....................................................................................#..........................................
|
||||||
|
..............................................................#.............................................................................
|
||||||
|
...............#.........#..........#........................................................................#..............................
|
||||||
|
...........................................#......................................................................#......#..................
|
||||||
|
....#...............#.......................................................................................................................
|
||||||
|
......................................................................................#..............................................#......
|
||||||
|
...............................................#...............#..............#.................#...........................................
|
||||||
|
.#.........................................................................................#.........................#......................
|
||||||
|
................#......#................#................................#..........................#...........#...........................
|
||||||
|
......#......................#.....................#.......#................................................................................
|
||||||
|
.............................................#...........................................................#...............#.....#........#...
|
||||||
|
...........#.........................................................................#......................................................
|
||||||
|
............................................................................#...............................................................
|
||||||
|
.........................................................................................#............................#.....................
|
||||||
|
...................#...................#.....................#....................................#.............#...........................
|
||||||
|
.................................#..........................................................................................................
|
||||||
|
.......#......#...........#..................................................................................................#.....#........
|
||||||
|
.......................................................................#..............#........#.............#..............................
|
||||||
|
......................#..................#......#..............#..............#.....................................#..................#....
|
||||||
|
..........................................................................................#.............#...................................
|
||||||
|
.........#..........................................#..............#.......................................................#................
|
||||||
|
.............................#..............................................................................................................
|
||||||
|
.............................................#...................................#..........................................................
|
||||||
|
................#..................#........................................#......................................#........................
|
||||||
|
....#.................#.................#.............................................#.................................#..................#
|
||||||
|
............................................................#.........#..................................#..................................
|
||||||
|
......................................................#...................................#.................................................
|
||||||
|
.................................#..................................................................#.......................................
|
||||||
|
.................................................#...................................................................................#......
|
||||||
|
............................................................................................................................................
|
||||||
|
..................#.............................................#.............#.........................#................#..................
|
||||||
|
.........#.................................................#...........#.............#........#..............#............................#.
|
||||||
|
...................................#.........................................................................................#..............
|
||||||
|
............................................................................................................................................
|
||||||
|
#.....................#...................................................#.......#...............................#.........................
|
||||||
|
..............................#.................#........#..........................................................................#.......
|
||||||
|
..............#........................................................................#....................................................
|
||||||
|
...........................................#.............................................................#..............................#...
|
||||||
|
.................................#...................................................................................#...........#..........
|
||||||
|
...........#.......#.......#...........................#.....#................#......................#........#.............................
|
6
res/12/example
Normal file
6
res/12/example
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
???.### 1,1,3
|
||||||
|
.??..??...?##. 1,1,3
|
||||||
|
?#?#?#?#?#?#?#? 1,3,1,6
|
||||||
|
????.#...#... 4,1,1
|
||||||
|
????.######..#####. 1,6,5
|
||||||
|
?###???????? 3,2,1
|
1000
res/12/input
Normal file
1000
res/12/input
Normal file
File diff suppressed because it is too large
Load diff
15
res/13/example
Normal file
15
res/13/example
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#.##..##.
|
||||||
|
..#.##.#.
|
||||||
|
##......#
|
||||||
|
##......#
|
||||||
|
..#.##.#.
|
||||||
|
..##..##.
|
||||||
|
#.#.##.#.
|
||||||
|
|
||||||
|
#...##..#
|
||||||
|
#....#..#
|
||||||
|
..##..###
|
||||||
|
#####.##.
|
||||||
|
#####.##.
|
||||||
|
..##..###
|
||||||
|
#....#..#
|
1349
res/13/input
Normal file
1349
res/13/input
Normal file
File diff suppressed because it is too large
Load diff
10
res/14/example
Normal file
10
res/14/example
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
O....#....
|
||||||
|
O.OO#....#
|
||||||
|
.....##...
|
||||||
|
OO.#O....O
|
||||||
|
.O.....O#.
|
||||||
|
O.#..O.#.#
|
||||||
|
..O..#O..O
|
||||||
|
.......O..
|
||||||
|
#....###..
|
||||||
|
#OO..#....
|
100
res/14/input
Normal file
100
res/14/input
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
#..O...O...O....##O#O#O..O.#...O..O..#O.#O.#.O....##.OOOO....O.O.OO..O##..O..O....#O#....#..O.#.#.O.
|
||||||
|
OO.....O.O...##..#.#.......#...#.O.#.#..#...#...#....##O......#O#........#...O......O.#......#O.O...
|
||||||
|
.O..##.OO.OO#OO.......O..O.#...#O.O...O.O.#..OO.#...O.OO.#.O.#....O.O..O.O#O...O...#.O..O...#......O
|
||||||
|
...........#...#.O..O.#.O.#..O#.O.OO.....##O..##..OO..O..#OO..O...#.#..............OOO.......#...O..
|
||||||
|
..##.O#.....OO.O#O.#.##.....O...#...#..O#O#.....#..O..O................OO..........#....#..O#....#..
|
||||||
|
..OO.....O..#.....O...#O.O.O...#....##...#....O.OO#.#..#O..O.....O.O...#.O...OO..O.O#O.O#OO#..O..#..
|
||||||
|
O...O....#.##O........................O....#...#....#.O#..O.....O..O.##O#...O.#..O..OO...O#O.#....O.
|
||||||
|
O...O.O...O.O................O.....O.....#.#..OO...O.....#...O.#..........O...O..O..O.....#.#....O.O
|
||||||
|
#O......O.#OO...#..O#.....#.#.O.#...O...O...#....#.#O.#...#...O.O....O..O##O.#..........#.....#O..#.
|
||||||
|
.#.......O.##O..#..O.......O...O.O#..........O#..O......O.....O......O...O....O.#.....##..#O..#.....
|
||||||
|
...O#..#.O..#O..#O##.....#....O..#O...O.....#....O....OO#..OO.OOO......#..#...O#O...#..O#.#.#...O...
|
||||||
|
#....O.#.....#O...#...........O.......O.#...O.....O#.....#.....OO#O......O.O..O.......#OO..O...OO.O.
|
||||||
|
......OOOO.#...O..#.#.......OO.....O........#O...O.O.....#...#.#O.O.#.#O..O..........#.O...O..O.....
|
||||||
|
......O.OO.....O.O.OO.O..#.O.#.##.....O.#......O......#.O....................OO.#O.........#.......O
|
||||||
|
O#O...#O#....O.#..##.#.#O.O#O#.........O#OO..O....O#..OOOO.O#.#####O#.#O#..O##.OO...##..O#O..###OO..
|
||||||
|
.O#O#O#O.O.O.....OOO..OO.O#...#..#O....#..O#OO.O..#..O.OOO..#OO.OO....O#.....O.#......#.OO..O.###.O#
|
||||||
|
O#..O.#.#..#O..#.#.O#..OO.....O..OO...O.#O.#..OO#O..OO..#..O.O.#....O.OO.##O.....O.#.O.#...O...#...#
|
||||||
|
#..O#..O...#......O..O#O.....##.OOO..#.O.#..#.##..O..O#O##........#..O.....#.....O..O...#.#...#.#...
|
||||||
|
..#.O.#........O.....OO..O#.#....O..O.OO##O#####.O..##...#..O.O....O.#OO#.......O....O.O..........OO
|
||||||
|
O.#.###...O#.....#.#....#.......OO.#.#......#...O..#.......#.#OO..O....O.O###.OO..#...##.........O..
|
||||||
|
..O.#O...O...#..#...O..O..#...#O..#.O....O..#O...#...O..#...O....O......#...OO..#.O##O.O....OOO#O...
|
||||||
|
.OO.#O..#.O#...O...O.O...#..#OOO....#.OO..#.O.....O.#O....O......#..O#..OO#.#...#.....O..#..O..OO.#O
|
||||||
|
.....O.#.O...O.......##...O.OOO.O...O.OOOO........O.#..O.OOO#.#....##....O..####O.......#.O.#O.#OOO.
|
||||||
|
####.##..O...O..#O..O.##.O..#.#.O......O#....#..OO.#.##O#O....O..#.##.#.O.#O.O#..O..##OO....O..#.O.O
|
||||||
|
.#.O..#..##......O....O..#...O..O.OO......O#........#..O.###.OO##.....##.#..O#.O..#OO.##.#O..O....O.
|
||||||
|
....O#.O#....O#O....##.....#...#..O.OO.OO....#.#...OOO#.#...O..O.OO...O....OOO.O.....O.OOOO...#..O.#
|
||||||
|
...#O..O#.OOO..O..O.....#.#...O.#O.....O#....O#..O#..#....#OO..O..O.O#.##......#O...#..O......#.#O.#
|
||||||
|
...OO.O.......O..........##.....##....OO....#.O.O.O#......#......#.#......O.OOO....O.O.#.O..#...##.O
|
||||||
|
.O..O.#....OO..OOO.......#......O....O...O.......OO..OO....O....O.O.OO..O.#...#OO.O#.O.#.....#......
|
||||||
|
.O.O.##....###O.##.O..#.OOO...........O...O..#.O#.O#O.O.##.O#..O#............O......##...OO.O..O...#
|
||||||
|
..O.....OO.OO.O#.O......O..O#..O.O#.....O..O.........O...O#.O.##.#O#.....#.#.O.#.O...#.....OOO.#...#
|
||||||
|
OOO..O.#....O.O...O.O.O...#.O.O...#.......#....#..##...##..##OO....##..#OO.#..#OO.#OO.O.#O.#....O...
|
||||||
|
..O#.....O....O.O..O.#O#...OO#.OOO##...O#.....#..O#O.OO#.##.O..O.....O...O...O.....#......OO...O.##.
|
||||||
|
O#.......O#.....#....#.#.....O.O.#..#O..O.....#....O.#.#..O...##...O..#O.O.....O.OO....O....#.#..#.#
|
||||||
|
#OO.....OO.#.O.O..........#..#O.##O.#.#.#..O...#.#....#.OO...OO#.O..#.........OO.#..O.#O.OO....#O##.
|
||||||
|
O.##...#...O.#O.O#..#O....OOO....O.#...#O#..O.O.#..O.##....O#..OOO....##..O.....##......O.O.#...#...
|
||||||
|
..O.#..O.#.###O.#O.O..O.#.O....#.OOO...OO...O.OOO..OOO..O.O.#.O#.O.#O...O...#..#.O###..#.#...OO.OOO.
|
||||||
|
...#..#.#.......OO#O..O##.#.O..#.O....O##..O..O..#..OO..OO..O.O.OO#O...#.O..#OO...O...#...#..#.##.#.
|
||||||
|
..O....O.......O....O#O....#....#.####...O..O.#......O..#....O..#...#..O..#.O.O..O#.OO#.OO.O...O.O.O
|
||||||
|
......#.O...O........#O.O.#..O..O.O.O....OO..##..O#..O#.#...O........O...#.O....#...##.OO#OO...O....
|
||||||
|
O.O.#.O...O....#........#.O..#O...O#.#.O.#.O.O.........#.O#O......O..O...#...#......O.....#O.#.O....
|
||||||
|
....#...O.#.#..O.O......#OO.......O.#.O....#..#.#.......O.#...O...O..#OO.#O#.....#.O.#O.O#OOOO.#....
|
||||||
|
.OO......O.O.OO.O#O...O...O#....#..#.#.##O..O.#.##.OO#...#..O.....OOO#..#............#....#..#..O.##
|
||||||
|
O........O.O#..O..O....#......#..O..O..O.#O..#.#.O.####..O..O.O...O##...O......O.O...OO#O.OO#..O....
|
||||||
|
..O#.O...#.O##.#..#....O..O...O...........#O........O......O.....#O....#..OOO#...O.O#..OO##O.#.O#OOO
|
||||||
|
.#..#...O###..OO.....O.#..O.O..###..O..#O.#.........#O..OO......O....O.#O.#...OO....#O...#.OO....#OO
|
||||||
|
.......#.O...OOOO..#O.#..#O..O.##O..#.O#....O.#O#.#.......#O##.O..OOO..#....O.O###.O#..O..#.O.......
|
||||||
|
OO...#......#O#..O.#O#....##.....O....O...OO.#..OO.O.....#..#......O..O....#....#.....#..#....O.O.O.
|
||||||
|
........#.OO.#.O...O#.##...#...#.#.#....O.O...OOO.O..#..O..O.O.OO.#O....O.#....#...O..#O...O##......
|
||||||
|
O.......#....O.O...#.O.O.O.O...O....O....#..O.#.O.....OO....O#..OO#.O......O...#...#O.#...##..O.....
|
||||||
|
.O.#O....#O.OO.O.......O...#OO..#.#OO.......#.O.#...O..#OO...#.......O...#.O...OO.............O..O..
|
||||||
|
.O......O.....O..O.OO..O.#.O###.......O..O......#.O.....OO........O.#.......#..#O..O.OO.#.....#.OO#.
|
||||||
|
.#........OO.O.#.#O.#.....#...#...O...#..O.....#...O.#..#O....O..#..O#........#.O....OO.#.....O.#..O
|
||||||
|
#.#.........O..##.O#..###.O..#.....O#O#.#..#O.#.....#O#.#.....#.#.O...O#.##.........#..O#.........O.
|
||||||
|
......#..OOO#..#.....O.#..OO.OO.###.#.O..........O..OO..#......#...O.#.....O.O........O..O#O..#.#...
|
||||||
|
O.........O...#..O...#..O.#...OO....#..##OO...#..........O.OOO.....O..O#O....#..#.OOO.#......O......
|
||||||
|
.O#..O..#O.O.O.#O#..O.O..OO#..O...#....O..O.....O....#...#..#OO.OO.O..#...#O#.OO.#...#........O.....
|
||||||
|
.O.#O...O...#...........O....O....##..OO...O.#..O..O#..OO#.O.#...#O...##O#.#......O........#.#.....O
|
||||||
|
O..#OO.O.OO..O.....O..#O..O........#O.O............#.O.....O..#.##.....##........OO.O..O..O.#.O.....
|
||||||
|
..O.#....O...#...#OO.##.O....#O.O#...O..O...#O#O.O.OO..O...........###......#....#.O..O.#O.O...O..#O
|
||||||
|
.O.......#...OO....OO..OO.#O.....O.#........O.....O#O.#..O...#..........##O..O.O.....#....#O.##OO..O
|
||||||
|
#.#..#..OO#..#...O.....#OO#..O.#.O.O#.....OOO.OO.#O.O..OO.O.OO.O#O.O..#..O.##...#.#.O.........#.....
|
||||||
|
.#O.#OO.O.#O.#.###....O...#.#.OO.#OO....#..##OO#...#..O#...#....#..OO..#..##...OO.......O....O.#...O
|
||||||
|
....O#.....O.O#.......O..O.OOO#.#.......OO..#.......O...#O..#..#.OOO.OO...O##..........O.....O.O#OO.
|
||||||
|
...#.O...O.#.OO.O.#........O.##OO....##O..#O.#....O..#.##......#O.O.OO...OO.....O.##........O.....##
|
||||||
|
#.OO#..#...O....O.......O#.#.#..#OOO#.O........##..O..O.......O...O..O..#...O#..#..#...OO.#..##.#O.O
|
||||||
|
....O...O#.......###O...#OO..O#..OO#O.....O........O.O.O#OO...O...O#......##.O.##O...O..O##.#O..O..O
|
||||||
|
..OO..OOO.#.O....#......O...#O....O....OOO#..#....O#.O.#.#.#...O.#......#.##..#O...O...#..#.O.#.#.#O
|
||||||
|
.#OO.#..O###OO.#.O..O.....#.#...O..O#..###...#.O..O....#........O.....OO..#O.OO...O.O.......#.......
|
||||||
|
#......O.......O...#OO....O.....O.O##O##.#....#..OO.......O..#O........O......#.#..O..#....O....#.O#
|
||||||
|
...O..#..........#...O....#..O#..#..O#...##.....O..O...O..O......#....O.O.........#.OO#OO.#.......O.
|
||||||
|
..O#OO..OO.....O.#..O.#O........#OO#..OO.O...O..O.##O...O.O#..O#...O.OO.#.O...O....#..OO.....O.OO...
|
||||||
|
........#OO.........O##..O.OO...O#....O#O.O.O..O..O...#O.O.#..O.O......O.O#.........#.O.O.#....OO..O
|
||||||
|
.#.O....#..O.O..O##.#....O.......#.O.#......#.....##.O.......OOO#..#..###......O###.O#...#..OO.O...#
|
||||||
|
#.O#......OO#....O.#O...#..O....O..#O#OO.....O.....#.#.O##...O.O#...OOOO#.O.#.#....O.#O..#.#O#...O..
|
||||||
|
OO..OO#..O.O.#......#..O....#....#.......#O.#O#O#.O........#....#.O.OO.#..#.O.O.#O#..O.O.O.#.O.O.#..
|
||||||
|
......O....#O.O..#.#.....#.O.O.O#..O.O.#....#.....#O..#..O#..OO....O..OO#...O..O............#O..OO.O
|
||||||
|
....#......O...#.O...#O...OO...O###......O.O.O.#....#.....OO......O.##.OO....O....O.O##.....#.#.O.#O
|
||||||
|
O.....#.O#.......O.#...O.O.#..#.#.O....#..#.........OO.O.#O.##.........O#.#.#....O...O..#..#.#..O...
|
||||||
|
..O#......#.O...#O...O#...OO......O...O.O#......O...OO#O.O.O...#O..OO....O.OO.#....O.O.#..##.#..#O..
|
||||||
|
....O...#.#.OO#..O.O..O.OO.....#O...O..#......O......#....O.....OO.O#......#O.#.#..O......#...##O.O.
|
||||||
|
..O.OO...#O#...#O....OOO.#.O.##..O..O..O#..O..O.#...OO...O.....O.O....O...O....#.O.....O.#O#O..#O#..
|
||||||
|
##O..#.#.O#.O#...O...O.O...##....#....#..#O...O..........OO.O.#.........##....#O#O#O.#.#.....##O#...
|
||||||
|
O.#..O.##O..O.....#.#.O.O...#.O..O.##..O.OO##...#.#..O.......#...O....#.#.....O.....#O..#......#O.##
|
||||||
|
.O.O.......#O.O...OO..#..#...#..O.....O...##O....#..#..#O..O...O#.........O..#.....O..OOO....O#..##.
|
||||||
|
OOO.OO..O#.....#.O........O..##.....O...O#.O.#....O......#OO.....#.#.........O..#O...##O....#.#..O..
|
||||||
|
..#.#..O...#.OO.O...O..#.#....#.##...#.O..O.#.....#...O.#.#.....#OO.....#.O...O....O....O..#.O.....O
|
||||||
|
...#.......O..O..#.....#.OOO......O......#....#...#.O....#.O....#..#..O.....O.#..#....O..#.........#
|
||||||
|
.O#.##.####.O#.O.##..#.......#.O#....O..#..#OO..O....O#.O..O..O..O.#.#..#O..#O.#.#.O.O....#O...O.#..
|
||||||
|
O###..#....O#...O.#...O#...#OO.##.O#O..OO###...O.#...#O.O..O##OO....#....O...#..O.#O#.#O#O.....##O#.
|
||||||
|
...#..#..OOOO..O#.....#O..................#..O..........#..............O...........O...........O....
|
||||||
|
O....O#O.O..O###....##.OOO.O#O.OO.#.O.O......#.OO.O.....O.O..O.OO..#..#........O..#..O..O.O.#.#O..O.
|
||||||
|
..###..O.#....O....#..##.O....#..OO....OOO.....#..#.#O.O..#...#.#...O#..OOO#O#.......O..O.O.#O.#O.O.
|
||||||
|
.#...O....#...#....##..O....#.#O.O#.O...........OOO.............O....#.#..O....#O.O...O.O..O..##...#
|
||||||
|
....#...O.........#..O...#O.............O...OO..#..O.#OO##.O....O....O....#O..#......OO..OO##O..###.
|
||||||
|
.......O...#O#O...##...O......#....##.#.#.......O#.O...OO..#.##.OOOO..#...O..O...###.#........O..O..
|
||||||
|
.......O......O..#.O.O..O..##OO.............O#...........OOO..OOO.O.#O##..O...#O....O#....O........#
|
||||||
|
O#..O..OO.OO.O....O...#......#..#...O.#OOO....#O.#.O.......##...O....#.#.OO..#...O..O....O#.........
|
||||||
|
#.O##......#.....O..###...O..#.O.....#.#..##.O.#...O.....O..O..O......#..O...O#O.....O....O#.O.O..#O
|
||||||
|
.#O.O.....O..O#.#O.......##..O..OO#..#.......O..OOO..O..OO...O...#OO......#.OO........###O...##.....
|
50
src/days/d09.rs
Normal file
50
src/days/d09.rs
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
pub fn solve() {
|
||||||
|
let path = "res/09/input";
|
||||||
|
|
||||||
|
let contents = fs::read_to_string(path).expect("I/O error, wrong path?");
|
||||||
|
//let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?"));
|
||||||
|
|
||||||
|
let mut sequences: Vec<Vec<i32>> = contents
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
line.split_whitespace()
|
||||||
|
.map(|num| num.parse::<i32>().unwrap())
|
||||||
|
.collect::<Vec<i32>>()
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let mut last_values: Vec<Vec<i32>> =
|
||||||
|
sequences.iter().map(|s| vec![*s.last().unwrap()]).collect();
|
||||||
|
|
||||||
|
let mut first_values: Vec<Vec<i32>> = sequences
|
||||||
|
.iter()
|
||||||
|
.map(|s| vec![*s.first().unwrap()])
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
sequences
|
||||||
|
.iter_mut()
|
||||||
|
.enumerate()
|
||||||
|
.for_each(|(i_sequence, sequence)| {
|
||||||
|
while sequence.iter().any(|num| *num != 0) {
|
||||||
|
for i in 0..sequence.len() - 1 {
|
||||||
|
sequence[i] = sequence[i + 1] - sequence[i]
|
||||||
|
}
|
||||||
|
sequence.pop();
|
||||||
|
last_values[i_sequence].push(*sequence.last().unwrap());
|
||||||
|
first_values[i_sequence].push(*sequence.first().unwrap());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let result: i32 = last_values.iter().map(|seq| seq.iter().sum::<i32>()).sum();
|
||||||
|
|
||||||
|
println!("Result 1: {result}");
|
||||||
|
|
||||||
|
let result: i32 = first_values
|
||||||
|
.iter()
|
||||||
|
.map(|seq| seq.iter().rev().fold(0, |x, y| y - x))
|
||||||
|
.sum();
|
||||||
|
|
||||||
|
println!("Result 2: {}", result);
|
||||||
|
}
|
249
src/days/d10.rs
Normal file
249
src/days/d10.rs
Normal file
|
@ -0,0 +1,249 @@
|
||||||
|
use std::{collections::HashSet, fs};
|
||||||
|
|
||||||
|
pub fn solve() {
|
||||||
|
let path = "res/10/input";
|
||||||
|
|
||||||
|
let contents = fs::read_to_string(path).expect("I/O error, wrong path?");
|
||||||
|
//let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?"));
|
||||||
|
|
||||||
|
let mut pos: (usize, usize) = (0, 0);
|
||||||
|
|
||||||
|
let grid: Vec<Vec<char>> = contents
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.chars().collect::<Vec<char>>())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
grid.iter().enumerate().for_each(|(i_row, row)| {
|
||||||
|
if let Some(col) = row.iter().position(|c| *c == 'S') {
|
||||||
|
pos = (i_row, col)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let mut coords: Vec<(usize, usize)> = vec![pos];
|
||||||
|
|
||||||
|
if pos.0 > 0 {
|
||||||
|
if ['|', '7', 'F'].contains(&grid[pos.0 - 1][pos.1]) {
|
||||||
|
pos = (pos.0 - 1, pos.1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if pos.1 > 0 {
|
||||||
|
if ['-', 'L', 'F'].contains(&grid[pos.0][pos.1 - 1]) {
|
||||||
|
pos = (pos.0, pos.1 - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if pos.0 < grid.len() - 1 {
|
||||||
|
if ['|', 'J', 'L'].contains(&grid[pos.0 + 1][pos.1]) {
|
||||||
|
pos = (pos.0 + 1, pos.1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if pos.1 < grid[0].len() - 1 {
|
||||||
|
if ['-', '7', 'J'].contains(&grid[pos.0][pos.1 + 1]) {
|
||||||
|
pos = (pos.0, pos.1 + 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while grid[pos.0][pos.1] != 'S' {
|
||||||
|
coords.push(pos);
|
||||||
|
pos = match grid[pos.0][pos.1] {
|
||||||
|
'|' => {
|
||||||
|
if *coords.iter().rev().nth(1).unwrap() != (pos.0 - 1, pos.1) {
|
||||||
|
(pos.0 - 1, pos.1)
|
||||||
|
} else {
|
||||||
|
(pos.0 + 1, pos.1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'-' => {
|
||||||
|
if *coords.iter().rev().nth(1).unwrap() != (pos.0, pos.1 - 1) {
|
||||||
|
(pos.0, pos.1 - 1)
|
||||||
|
} else {
|
||||||
|
(pos.0, pos.1 + 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'J' => {
|
||||||
|
if *coords.iter().rev().nth(1).unwrap() != (pos.0 - 1, pos.1) {
|
||||||
|
(pos.0 - 1, pos.1)
|
||||||
|
} else {
|
||||||
|
(pos.0, pos.1 - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'7' => {
|
||||||
|
if *coords.iter().rev().nth(1).unwrap() != (pos.0, pos.1 - 1) {
|
||||||
|
(pos.0, pos.1 - 1)
|
||||||
|
} else {
|
||||||
|
(pos.0 + 1, pos.1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'F' => {
|
||||||
|
if *coords.iter().rev().nth(1).unwrap() != (pos.0, pos.1 + 1) {
|
||||||
|
(pos.0, pos.1 + 1)
|
||||||
|
} else {
|
||||||
|
(pos.0 + 1, pos.1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'L' => {
|
||||||
|
if *coords.iter().rev().nth(1).unwrap() != (pos.0 - 1, pos.1) {
|
||||||
|
(pos.0 - 1, pos.1)
|
||||||
|
} else {
|
||||||
|
(pos.0, pos.1 + 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
panic!();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
let result = coords.len() / 2;
|
||||||
|
|
||||||
|
println!("Result 1: {}", result);
|
||||||
|
|
||||||
|
let set: HashSet<(usize, usize)> = HashSet::from_iter(coords.iter().cloned());
|
||||||
|
let mut corners: Vec<(usize, usize, Vec<u8>, Vec<u8>)> = vec![];
|
||||||
|
|
||||||
|
let mut set1 = HashSet::<(usize, usize)>::new();
|
||||||
|
let mut set2 = HashSet::<(usize, usize)>::new();
|
||||||
|
|
||||||
|
let first_corners = (vec![0], vec![1, 2, 3]); //c_to_corners(grid[coords[0].0][coords[0].1]);
|
||||||
|
|
||||||
|
corners.push((coords[0].0, coords[0].1, first_corners.0, first_corners.1));
|
||||||
|
for c in coords.iter().skip(1) {
|
||||||
|
let c_corners = c_to_corners(grid[c.0][c.1]);
|
||||||
|
let last = corners.last().unwrap();
|
||||||
|
if last.0 < c.0 {
|
||||||
|
// old above
|
||||||
|
if last.2.contains(&2) && c_corners.0.contains(&0)
|
||||||
|
|| last.2.contains(&3) && c_corners.0.contains(&1)
|
||||||
|
{
|
||||||
|
// 0,1,2 3 -> 2,3,0 1 1 0,2,3
|
||||||
|
corners.push((c.0, c.1, c_corners.0, c_corners.1))
|
||||||
|
} else {
|
||||||
|
corners.push((c.0, c.1, c_corners.1, c_corners.0))
|
||||||
|
}
|
||||||
|
} else if last.0 > c.0 {
|
||||||
|
// old below
|
||||||
|
if last.2.contains(&0) && c_corners.0.contains(&2)
|
||||||
|
|| last.2.contains(&1) && c_corners.0.contains(&3)
|
||||||
|
{
|
||||||
|
corners.push((c.0, c.1, c_corners.0, c_corners.1))
|
||||||
|
} else {
|
||||||
|
corners.push((c.0, c.1, c_corners.1, c_corners.0))
|
||||||
|
}
|
||||||
|
} else if last.1 < c.1 {
|
||||||
|
// old left
|
||||||
|
if last.2.contains(&1) && c_corners.0.contains(&0)
|
||||||
|
|| last.2.contains(&3) && c_corners.0.contains(&2)
|
||||||
|
{
|
||||||
|
// 0,2,3 1 -> 1,2,3 0 0,1 2,3
|
||||||
|
corners.push((c.0, c.1, c_corners.0, c_corners.1))
|
||||||
|
} else {
|
||||||
|
corners.push((c.0, c.1, c_corners.1, c_corners.0))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// old right
|
||||||
|
if last.2.contains(&0) && c_corners.0.contains(&1)
|
||||||
|
|| last.2.contains(&2) && c_corners.0.contains(&3)
|
||||||
|
{
|
||||||
|
corners.push((c.0, c.1, c_corners.0, c_corners.1))
|
||||||
|
} else {
|
||||||
|
corners.push((c.0, c.1, c_corners.1, c_corners.0))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for c in corners {
|
||||||
|
adj_pos(
|
||||||
|
(c.0, c.1, c.2),
|
||||||
|
&mut set1,
|
||||||
|
&set,
|
||||||
|
grid.len() - 1,
|
||||||
|
grid[0].len() - 1,
|
||||||
|
);
|
||||||
|
adj_pos(
|
||||||
|
(c.0, c.1, c.3),
|
||||||
|
&mut set2,
|
||||||
|
&set,
|
||||||
|
grid.len() - 1,
|
||||||
|
grid[0].len() - 1,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
for i in 0..grid.len() {
|
||||||
|
for j in 0..grid[0].len() {
|
||||||
|
if set2.contains(&(i,j)) {
|
||||||
|
print!("X")
|
||||||
|
} else if set.contains(&(i,j)) {
|
||||||
|
print!("{}", grid[i][j])
|
||||||
|
} else {
|
||||||
|
print!(".")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print!("\n")
|
||||||
|
}*/
|
||||||
|
let result = set1.len().min(set2.len());
|
||||||
|
|
||||||
|
println!("Result 2: {result}");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn adj_pos(
|
||||||
|
c: (usize, usize, Vec<u8>),
|
||||||
|
set: &mut HashSet<(usize, usize)>,
|
||||||
|
edge: &HashSet<(usize, usize)>,
|
||||||
|
max_row: usize,
|
||||||
|
max_col: usize,
|
||||||
|
) {
|
||||||
|
let mut pos: Vec<(usize, usize)> = vec![];
|
||||||
|
if c.2.contains(&0) && c.2.contains(&1) && c.0 > 0 {
|
||||||
|
pos.push((c.0 - 1, c.1))
|
||||||
|
}
|
||||||
|
if c.2.contains(&2) && c.2.contains(&3) && c.0 < max_row {
|
||||||
|
pos.push((c.0 + 1, c.1))
|
||||||
|
}
|
||||||
|
if c.2.contains(&0) && c.2.contains(&2) && c.1 > 0 {
|
||||||
|
pos.push((c.0, c.1 - 1))
|
||||||
|
}
|
||||||
|
if c.2.contains(&1) && c.2.contains(&3) && c.1 < max_col {
|
||||||
|
pos.push((c.0, c.1 + 1))
|
||||||
|
}
|
||||||
|
while !pos.is_empty() {
|
||||||
|
let curr = pos.pop().unwrap();
|
||||||
|
if set.contains(&curr) || edge.contains(&curr) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let mut q: Vec<(usize, usize)> = vec![curr];
|
||||||
|
while !q.is_empty() {
|
||||||
|
let curr = q.pop().unwrap();
|
||||||
|
if set.contains(&curr) || edge.contains(&curr) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
set.insert(curr);
|
||||||
|
|
||||||
|
if curr.0 > 0 {
|
||||||
|
q.push((curr.0 - 1, curr.1))
|
||||||
|
}
|
||||||
|
if curr.0 < max_row {
|
||||||
|
q.push((curr.0 + 1, curr.1))
|
||||||
|
}
|
||||||
|
if curr.1 > 0 {
|
||||||
|
q.push((curr.0, curr.1 - 1))
|
||||||
|
}
|
||||||
|
if curr.1 < max_col {
|
||||||
|
q.push((curr.0, curr.1 + 1))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn c_to_corners(c: char) -> (Vec<u8>, Vec<u8>) {
|
||||||
|
match c {
|
||||||
|
'|' => (vec![0, 2], vec![1, 3]),
|
||||||
|
'-' => (vec![0, 1], vec![2, 3]),
|
||||||
|
'J' => (vec![1, 2, 3], vec![0]),
|
||||||
|
'7' => (vec![0, 1, 3], vec![2]),
|
||||||
|
'F' => (vec![0, 1, 2], vec![3]),
|
||||||
|
'L' => (vec![0, 2, 3], vec![1]),
|
||||||
|
_ => {
|
||||||
|
panic!("{c}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
68
src/days/d11.rs
Normal file
68
src/days/d11.rs
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
pub fn solve() {
|
||||||
|
let path = "res/11/input";
|
||||||
|
|
||||||
|
let contents = fs::read_to_string(path).expect("I/O error, wrong path?");
|
||||||
|
//let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?"));
|
||||||
|
|
||||||
|
let mut galaxies: Vec<(usize, usize)> = Vec::new();
|
||||||
|
for (i, line) in contents.lines().enumerate() {
|
||||||
|
for (j, c) in line.chars().enumerate() {
|
||||||
|
if c == '#' {
|
||||||
|
galaxies.push((i, j))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut result = 0;
|
||||||
|
for i in 0..galaxies.len() {
|
||||||
|
for j in i + 1..galaxies.len() {
|
||||||
|
let (x1, y1) = galaxies[i];
|
||||||
|
let (x2, y2) = galaxies[j];
|
||||||
|
result += x1.abs_diff(x2) + y1.abs_diff(y2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i, row) in contents.lines().enumerate() {
|
||||||
|
if !row.contains('#') {
|
||||||
|
let top = galaxies.iter().filter(|(x, _)| *x < i).count();
|
||||||
|
let bot = galaxies.len() - top;
|
||||||
|
result += top * bot;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let space: Vec<Vec<char>> = contents
|
||||||
|
.lines()
|
||||||
|
.map(|l| l.chars().collect::<Vec<_>>())
|
||||||
|
.collect();
|
||||||
|
for j in 0..space[0].len() {
|
||||||
|
let col: Vec<char> = (0..space.len()).map(|i| space[i][j]).collect();
|
||||||
|
if !col.contains(&'#') {
|
||||||
|
let left = galaxies.iter().filter(|(_, y)| *y < j).count();
|
||||||
|
let right = galaxies.len() - left;
|
||||||
|
result += right * left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("Result 1: {result}");
|
||||||
|
|
||||||
|
for (i, row) in contents.lines().enumerate() {
|
||||||
|
if !row.contains('#') {
|
||||||
|
let top = galaxies.iter().filter(|(x, _)| *x < i).count();
|
||||||
|
let bot = galaxies.len() - top;
|
||||||
|
result += top * bot * 999998;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for j in 0..space[0].len() {
|
||||||
|
let col: Vec<char> = (0..space.len()).map(|i| space[i][j]).collect();
|
||||||
|
if !col.contains(&'#') {
|
||||||
|
let left = galaxies.iter().filter(|(_, y)| *y < j).count();
|
||||||
|
let right = galaxies.len() - left;
|
||||||
|
result += right * left * 999998;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("Result 2: {result}");
|
||||||
|
}
|
122
src/days/d12.rs
Normal file
122
src/days/d12.rs
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
use std::{collections::HashMap, fs};
|
||||||
|
|
||||||
|
use rayon::prelude::*;
|
||||||
|
|
||||||
|
pub fn solve() {
|
||||||
|
let path = "res/12/input";
|
||||||
|
|
||||||
|
let contents = fs::read_to_string(path).expect("I/O error, wrong path?");
|
||||||
|
//let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?"));
|
||||||
|
|
||||||
|
let result: usize = contents
|
||||||
|
.par_lines()
|
||||||
|
.map(|line| {
|
||||||
|
let (springs_str, nums_str) = line.split_once(" ").unwrap();
|
||||||
|
let nums: Vec<usize> = nums_str
|
||||||
|
.split(",")
|
||||||
|
.map(|n| n.parse::<usize>().unwrap())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let mut springs: Vec<char> = springs_str.chars().collect();
|
||||||
|
springs.push('.');
|
||||||
|
|
||||||
|
let mut cache = HashMap::new();
|
||||||
|
|
||||||
|
count_spring_arrangements(&mut cache, springs_str.as_bytes(), None, &nums)
|
||||||
|
})
|
||||||
|
.sum();
|
||||||
|
|
||||||
|
println!("Result 1: {result}");
|
||||||
|
|
||||||
|
let result: usize = contents
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let (springs_str, nums_str) = line.split_once(" ").unwrap();
|
||||||
|
let nums_tmp: Vec<usize> = nums_str
|
||||||
|
.split(",")
|
||||||
|
.map(|n| n.parse::<usize>().unwrap())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let nums: Vec<usize> = nums_tmp
|
||||||
|
.iter()
|
||||||
|
.cycle()
|
||||||
|
.take(nums_tmp.len() * 5)
|
||||||
|
.map(|i| *i)
|
||||||
|
.collect();
|
||||||
|
let springs: String = std::iter::repeat(String::from(springs_str))
|
||||||
|
.take(5)
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
.join("?");
|
||||||
|
|
||||||
|
let mut cache = HashMap::new();
|
||||||
|
|
||||||
|
count_spring_arrangements(&mut cache, springs.as_bytes(), None, &nums)
|
||||||
|
})
|
||||||
|
.sum();
|
||||||
|
|
||||||
|
println!("Result 2: {result}");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn count_spring_arrangements(
|
||||||
|
cache: &mut HashMap<(usize, usize, usize), usize>,
|
||||||
|
springs: &[u8],
|
||||||
|
in_broken_group: Option<usize>,
|
||||||
|
remaining_broken: &[usize],
|
||||||
|
) -> usize {
|
||||||
|
if springs.is_empty() {
|
||||||
|
return match (in_broken_group, remaining_broken.len()) {
|
||||||
|
(None, 0) => 1,
|
||||||
|
(Some(x), 1) if x == remaining_broken[0] => 1,
|
||||||
|
_ => 0,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if in_broken_group.is_some() && remaining_broken.is_empty() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
let key = (
|
||||||
|
springs.len(),
|
||||||
|
in_broken_group.unwrap_or(0),
|
||||||
|
remaining_broken.len(),
|
||||||
|
);
|
||||||
|
if let Some(&result) = cache.get(&key) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
let ways = match (springs[0], in_broken_group) {
|
||||||
|
(b'.', Some(x)) if x != remaining_broken[0] => 0,
|
||||||
|
(b'.', Some(_)) => {
|
||||||
|
count_spring_arrangements(cache, &springs[1..], None, &remaining_broken[1..])
|
||||||
|
}
|
||||||
|
(b'.', None) => count_spring_arrangements(cache, &springs[1..], None, remaining_broken),
|
||||||
|
(b'#', Some(_)) => count_spring_arrangements(
|
||||||
|
cache,
|
||||||
|
&springs[1..],
|
||||||
|
in_broken_group.map(|x| x + 1),
|
||||||
|
remaining_broken,
|
||||||
|
),
|
||||||
|
(b'#', None) => count_spring_arrangements(cache, &springs[1..], Some(1), remaining_broken),
|
||||||
|
(b'?', Some(x)) => {
|
||||||
|
let mut ans = count_spring_arrangements(
|
||||||
|
cache,
|
||||||
|
&springs[1..],
|
||||||
|
in_broken_group.map(|x| x + 1),
|
||||||
|
remaining_broken,
|
||||||
|
);
|
||||||
|
if x == remaining_broken[0] {
|
||||||
|
ans +=
|
||||||
|
count_spring_arrangements(cache, &springs[1..], None, &remaining_broken[1..]);
|
||||||
|
}
|
||||||
|
ans
|
||||||
|
}
|
||||||
|
(b'?', None) => {
|
||||||
|
count_spring_arrangements(cache, &springs[1..], Some(1), remaining_broken)
|
||||||
|
+ count_spring_arrangements(cache, &springs[1..], None, remaining_broken)
|
||||||
|
}
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
|
||||||
|
cache.insert(key, ways);
|
||||||
|
ways
|
||||||
|
}
|
143
src/days/d13.rs
Normal file
143
src/days/d13.rs
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
pub fn solve() {
|
||||||
|
let path = "res/13/input";
|
||||||
|
|
||||||
|
let contents = fs::read_to_string(path).expect("I/O error, wrong path?");
|
||||||
|
//let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?"));
|
||||||
|
|
||||||
|
let patterns = contents
|
||||||
|
.split("\n\n")
|
||||||
|
.map(|block| {
|
||||||
|
block
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.chars().collect::<Vec<_>>())
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let result: usize = patterns
|
||||||
|
.iter()
|
||||||
|
.map(|block| {
|
||||||
|
|
||||||
|
// check columns
|
||||||
|
let mut ks: Vec<usize> = vec![];
|
||||||
|
for k in 1..block[0].len() {
|
||||||
|
if (0..k.min(block[0].len() - k)).all(|j| {
|
||||||
|
let col1: Vec<char> = (0..block.len()).map(|i| block[i][k - 1 - j]).collect();
|
||||||
|
let col2: Vec<char> = (0..block.len()).map(|i| block[i][k + j]).collect();
|
||||||
|
col1.eq(&col2)
|
||||||
|
}) {
|
||||||
|
ks.push(k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ks.len() > 1 {
|
||||||
|
dbg!(&ks);
|
||||||
|
}
|
||||||
|
if !ks.is_empty() {
|
||||||
|
return ks[ks.len() / 2];
|
||||||
|
}
|
||||||
|
|
||||||
|
// check rows
|
||||||
|
let mut ks: Vec<usize> = vec![];
|
||||||
|
for k in 1..block.len() {
|
||||||
|
if (0..k.min(block.len() - k)).all(|i| block[k - 1 - i].eq(&block[k + i])) {
|
||||||
|
ks.push(k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ks.len() > 1 {
|
||||||
|
dbg!(&ks);
|
||||||
|
}
|
||||||
|
if !ks.is_empty() {
|
||||||
|
return ks[ks.len() / 2] * 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
0
|
||||||
|
})
|
||||||
|
.sum();
|
||||||
|
|
||||||
|
println!("Result 1: {result}");
|
||||||
|
|
||||||
|
let result: usize = patterns
|
||||||
|
.iter()
|
||||||
|
.map(|block| {
|
||||||
|
let mut smudge_repaired = false;
|
||||||
|
|
||||||
|
// check columns
|
||||||
|
let mut ks: Vec<usize> = vec![];
|
||||||
|
for k in 1..block[0].len() {
|
||||||
|
if (0..k.min(block[0].len() - k)).all(|j| {
|
||||||
|
let col1: Vec<char> = (0..block.len()).map(|i| block[i][k - 1 - j]).collect();
|
||||||
|
let col2: Vec<char> = (0..block.len()).map(|i| block[i][k + j]).collect();
|
||||||
|
if col1.eq(&col2) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if col1
|
||||||
|
.iter()
|
||||||
|
.zip(col2.iter())
|
||||||
|
.filter(|&(a, b)| a != b)
|
||||||
|
.count()
|
||||||
|
== 1
|
||||||
|
&& !smudge_repaired
|
||||||
|
{
|
||||||
|
smudge_repaired = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}) {
|
||||||
|
if smudge_repaired {
|
||||||
|
ks.push(k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
smudge_repaired = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if ks.len() > 1 {
|
||||||
|
dbg!(&ks);
|
||||||
|
}
|
||||||
|
if !ks.is_empty() {
|
||||||
|
return ks[ks.len() / 2];
|
||||||
|
}
|
||||||
|
|
||||||
|
// check rows
|
||||||
|
ks.clear();
|
||||||
|
for k in 1..block.len() {
|
||||||
|
if (0..k.min(block.len() - k)).all(|i| {
|
||||||
|
if block[k - 1 - i].eq(&block[k + i]) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if block[k - 1 - i]
|
||||||
|
.iter()
|
||||||
|
.zip(block[k + i].iter())
|
||||||
|
.filter(|&(a, b)| a != b)
|
||||||
|
.count()
|
||||||
|
== 1
|
||||||
|
&& !smudge_repaired
|
||||||
|
{
|
||||||
|
smudge_repaired = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}) {
|
||||||
|
if smudge_repaired {
|
||||||
|
ks.push(k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
smudge_repaired = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if ks.len() > 1 {
|
||||||
|
dbg!(&ks);
|
||||||
|
}
|
||||||
|
if !ks.is_empty() {
|
||||||
|
return ks[ks.len() / 2] * 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
0
|
||||||
|
})
|
||||||
|
.sum();
|
||||||
|
|
||||||
|
println!("Result 2: {result}");
|
||||||
|
}
|
134
src/days/d14.rs
Normal file
134
src/days/d14.rs
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
use std::{fs, collections::HashMap};
|
||||||
|
|
||||||
|
pub fn solve() {
|
||||||
|
let path = "res/14/input";
|
||||||
|
|
||||||
|
let contents = fs::read_to_string(path).expect("I/O error, wrong path?");
|
||||||
|
//let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?"));
|
||||||
|
|
||||||
|
let rocks_init: Vec<Vec<char>> = contents.lines()
|
||||||
|
.map(|line| line.chars().collect::<Vec<_>>())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let mut rocks = rocks_init.clone();
|
||||||
|
let mut result: usize = 0;
|
||||||
|
for x in 0..rocks.len() {
|
||||||
|
for y in 0..rocks[0].len() {
|
||||||
|
if rocks[x][y] == 'O' {
|
||||||
|
let mut new_x = x;
|
||||||
|
while new_x > 0 {
|
||||||
|
new_x -= 1;
|
||||||
|
if rocks[new_x][y] == '#' || rocks[new_x][y] == 'O' {
|
||||||
|
new_x += 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rocks[x][y] = '.';
|
||||||
|
rocks[new_x][y] = 'O';
|
||||||
|
result += rocks.len() - new_x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("Result 1: {result}");
|
||||||
|
|
||||||
|
|
||||||
|
let mut counter = 1;
|
||||||
|
let mut cache: HashMap<Vec<Vec<char>>, usize> = HashMap::new();
|
||||||
|
let mut cache_used = false;
|
||||||
|
while counter < 4000000000 {
|
||||||
|
if counter % 4 == 0 || counter % 4 == 1 {
|
||||||
|
for x in 0..rocks.len() {
|
||||||
|
for y in 0..rocks[0].len() {
|
||||||
|
if rocks[x][y] == 'O' {
|
||||||
|
match counter % 4 {
|
||||||
|
0 => { // north
|
||||||
|
let mut new_x = x;
|
||||||
|
while new_x > 0 {
|
||||||
|
new_x -= 1;
|
||||||
|
if rocks[new_x][y] == '#' || rocks[new_x][y] == 'O' {
|
||||||
|
new_x += 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rocks[x][y] = '.';
|
||||||
|
rocks[new_x][y] = 'O';
|
||||||
|
},
|
||||||
|
_ => { // west
|
||||||
|
let mut new_y = y;
|
||||||
|
while new_y > 0 {
|
||||||
|
new_y -= 1;
|
||||||
|
if rocks[x][new_y] == '#' || rocks[x][new_y] == 'O' {
|
||||||
|
new_y += 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rocks[x][y] = '.';
|
||||||
|
rocks[x][new_y] = 'O';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for x in (0..rocks.len()).rev() {
|
||||||
|
for y in (0..rocks[0].len()).rev() {
|
||||||
|
if rocks[x][y] == 'O' {
|
||||||
|
match counter % 4 {
|
||||||
|
3 => { // east
|
||||||
|
let mut new_y = y;
|
||||||
|
while new_y < rocks[0].len()-1 {
|
||||||
|
new_y += 1;
|
||||||
|
if rocks[x][new_y] == '#' || rocks[x][new_y] == 'O' {
|
||||||
|
new_y -= 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rocks[x][y] = '.';
|
||||||
|
rocks[x][new_y] = 'O';
|
||||||
|
},
|
||||||
|
_ => { // south
|
||||||
|
let mut new_x = x;
|
||||||
|
while new_x < rocks.len()-1 {
|
||||||
|
new_x += 1;
|
||||||
|
if rocks[new_x][y] == '#' || rocks[new_x][y] == 'O' {
|
||||||
|
new_x -= 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rocks[x][y] = '.';
|
||||||
|
rocks[new_x][y] = 'O';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
counter += 1;
|
||||||
|
|
||||||
|
if counter % 4 == 0 && !cache_used{
|
||||||
|
let cycle_start = cache.get(&rocks);
|
||||||
|
match cycle_start {
|
||||||
|
None => { cache.insert(rocks.clone(), counter); },
|
||||||
|
Some(x) => {
|
||||||
|
let cycle = counter - x;
|
||||||
|
counter += (((4000000000-counter)/cycle) as usize) * cycle;
|
||||||
|
cache_used = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result = rocks.iter().enumerate()
|
||||||
|
.map(|(i_row, row)| {
|
||||||
|
row.iter().filter(|c| **c == 'O').count() * (rocks.len() - i_row)
|
||||||
|
})
|
||||||
|
.sum();
|
||||||
|
|
||||||
|
println!("Result 2: {result}");
|
||||||
|
}
|
|
@ -1,9 +1,8 @@
|
||||||
pub mod days;
|
pub mod days;
|
||||||
#[macro_use] extern crate scan_fmt;
|
#[macro_use] extern crate scan_fmt;
|
||||||
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
days::d08::solve()
|
days::d14::solve()
|
||||||
//_all_days()
|
//_all_days()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue