diff --git a/README.md b/README.md new file mode 100644 index 0000000..b330d78 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# Advent of Code + +Hi all! + +My AdventOfCode is `node.js` based. + +To run any day, type `node index.js ` and it will execute the day you inputted. Make sure you fill the relevant `input.txt` file with the input for that day if you want to see your own code. + +The current main branch is 2021, but my code from last year is also available in branch 2020. I didn't get further than day 10 yet though. + + +For 2020: Step into each day folder and run `node program.js` to run it. + +In any solution you can replace my input.txt with your content and see if it works for yours as well. + +I am always curious to better solutions, so feel free to PR on an existing day any improvements to the code. As long as they're actually improvements, not just for the sake of shorter. My code should be production-deployable (in my mind) so they should be easily readable. + +For this purpose, also read [my article about 1-liners](https://javascript.plainenglish.io/we-need-to-talk-about-the-one-liners-58f460c05fc5?source=friends_link&sk=102a7a363db7988174bfb87666f63ecb). I would say I prefer longer code as long as it is readable. If something can be faster, then of course it should be. diff --git a/day1.js b/day1.js deleted file mode 100644 index c874e4f..0000000 --- a/day1.js +++ /dev/null @@ -1,37 +0,0 @@ -const fs = require('fs'); - -function findSumPart2(nums) { - nums.forEach(num => { - nums.forEach(num2 => { - nums.forEach(num3 => { - if (num + num2 + num3 === 2020) { - console.log('2: found match', num, num2, num3, num*num2*num3); - } - }); - }); - - }); -} - -function findSumPart1(nums) { - nums.forEach(num => { - nums.forEach(num2 => { - if (num + num2 === 2020) { - console.log('1: found match', num, num2, num*num2); - } - }); - - }); -} - -fs.readFile('./day1input.txt', 'utf-8', (e, data) =>{ - const items = data.split("\n"); - items.forEach((num, i) => { - items[i] = parseInt(num); - }) - findSumPart1(items); - findSumPart2(items); -}) - - - diff --git a/day1/input.txt b/day1/input.txt new file mode 100644 index 0000000..b6b18e5 --- /dev/null +++ b/day1/input.txt @@ -0,0 +1,2000 @@ +176 +184 +196 +199 +204 +206 +219 +215 +216 +217 +218 +230 +231 +214 +210 +189 +174 +170 +162 +167 +173 +182 +177 +179 +180 +182 +198 +201 +200 +207 +203 +213 +231 +222 +223 +224 +209 +217 +228 +236 +243 +241 +260 +262 +258 +260 +254 +270 +271 +278 +264 +263 +262 +260 +261 +234 +229 +233 +208 +210 +211 +210 +206 +207 +209 +199 +201 +218 +210 +206 +207 +218 +221 +229 +233 +234 +235 +246 +253 +254 +260 +259 +253 +254 +275 +277 +295 +296 +299 +333 +334 +336 +337 +339 +347 +374 +369 +371 +376 +371 +374 +375 +371 +374 +381 +383 +384 +395 +396 +400 +395 +397 +399 +389 +396 +390 +404 +411 +412 +428 +424 +433 +431 +437 +473 +489 +486 +488 +479 +480 +484 +474 +475 +471 +492 +493 +501 +512 +509 +506 +519 +523 +522 +521 +535 +548 +531 +519 +523 +522 +516 +512 +522 +547 +581 +582 +580 +579 +580 +600 +595 +592 +587 +588 +591 +592 +583 +586 +584 +597 +610 +592 +581 +583 +578 +575 +582 +579 +587 +594 +592 +593 +599 +605 +609 +610 +609 +601 +604 +608 +609 +613 +614 +612 +614 +626 +627 +636 +656 +652 +655 +656 +678 +680 +686 +687 +654 +663 +669 +664 +668 +647 +652 +659 +653 +654 +656 +637 +638 +621 +620 +621 +609 +604 +612 +616 +612 +617 +614 +610 +607 +608 +613 +617 +624 +625 +622 +604 +606 +610 +609 +607 +605 +618 +622 +635 +636 +640 +667 +668 +664 +674 +675 +682 +694 +698 +704 +717 +723 +724 +699 +695 +693 +674 +670 +683 +685 +683 +676 +675 +678 +677 +675 +657 +670 +675 +673 +658 +660 +673 +685 +675 +676 +677 +671 +689 +688 +690 +691 +692 +709 +713 +712 +715 +739 +731 +734 +762 +764 +746 +728 +729 +727 +730 +745 +773 +781 +787 +806 +807 +808 +815 +822 +837 +844 +842 +841 +850 +853 +838 +841 +845 +846 +844 +849 +846 +847 +859 +851 +854 +857 +873 +882 +892 +896 +883 +896 +895 +886 +879 +878 +877 +878 +881 +891 +898 +913 +914 +920 +922 +928 +929 +915 +917 +918 +913 +926 +929 +937 +939 +940 +936 +938 +939 +948 +946 +951 +950 +918 +917 +924 +917 +918 +921 +919 +917 +929 +950 +985 +988 +991 +996 +1002 +995 +990 +999 +989 +990 +991 +992 +991 +992 +993 +991 +994 +996 +997 +989 +993 +975 +973 +972 +973 +971 +969 +976 +983 +980 +987 +1003 +1002 +1000 +993 +994 +993 +972 +970 +991 +988 +989 +993 +996 +1002 +1003 +1008 +1007 +1014 +1015 +1022 +1012 +1029 +1030 +1029 +1030 +1025 +1026 +1010 +1006 +1008 +1006 +1012 +1015 +1029 +1067 +1102 +1107 +1108 +1103 +1108 +1103 +1120 +1119 +1118 +1119 +1118 +1119 +1132 +1137 +1148 +1150 +1153 +1166 +1169 +1199 +1205 +1208 +1216 +1210 +1217 +1216 +1217 +1218 +1198 +1199 +1197 +1198 +1193 +1202 +1241 +1242 +1239 +1241 +1238 +1233 +1234 +1235 +1237 +1228 +1229 +1235 +1218 +1236 +1237 +1208 +1246 +1251 +1246 +1248 +1242 +1241 +1243 +1231 +1226 +1224 +1221 +1220 +1224 +1219 +1227 +1214 +1237 +1261 +1271 +1268 +1292 +1304 +1303 +1312 +1287 +1286 +1292 +1295 +1297 +1304 +1311 +1312 +1309 +1314 +1307 +1316 +1320 +1319 +1316 +1333 +1332 +1316 +1315 +1320 +1321 +1335 +1355 +1353 +1356 +1325 +1333 +1335 +1339 +1360 +1361 +1362 +1364 +1361 +1363 +1362 +1363 +1364 +1392 +1397 +1398 +1405 +1406 +1408 +1406 +1394 +1391 +1407 +1413 +1415 +1413 +1419 +1422 +1416 +1422 +1421 +1431 +1433 +1437 +1439 +1443 +1446 +1449 +1439 +1444 +1452 +1460 +1468 +1469 +1486 +1500 +1507 +1513 +1512 +1511 +1531 +1532 +1541 +1550 +1557 +1561 +1557 +1560 +1563 +1564 +1565 +1588 +1589 +1592 +1591 +1593 +1598 +1603 +1590 +1604 +1608 +1610 +1623 +1598 +1592 +1601 +1598 +1600 +1601 +1599 +1609 +1607 +1608 +1613 +1605 +1601 +1605 +1610 +1611 +1609 +1608 +1615 +1620 +1629 +1628 +1641 +1632 +1630 +1635 +1634 +1629 +1630 +1632 +1630 +1641 +1661 +1655 +1657 +1653 +1619 +1629 +1607 +1600 +1603 +1591 +1596 +1599 +1601 +1582 +1591 +1593 +1596 +1597 +1600 +1596 +1597 +1603 +1624 +1630 +1628 +1626 +1628 +1631 +1628 +1629 +1625 +1627 +1620 +1613 +1614 +1638 +1637 +1626 +1624 +1623 +1621 +1620 +1621 +1598 +1610 +1611 +1622 +1629 +1646 +1655 +1677 +1678 +1679 +1699 +1702 +1715 +1710 +1722 +1719 +1715 +1716 +1724 +1735 +1734 +1727 +1743 +1748 +1745 +1742 +1755 +1754 +1734 +1738 +1729 +1732 +1733 +1726 +1723 +1744 +1745 +1746 +1748 +1778 +1777 +1780 +1792 +1798 +1799 +1800 +1793 +1794 +1797 +1802 +1796 +1800 +1820 +1823 +1824 +1823 +1828 +1827 +1824 +1847 +1842 +1846 +1847 +1844 +1833 +1826 +1834 +1839 +1846 +1854 +1842 +1845 +1860 +1874 +1869 +1871 +1869 +1870 +1874 +1875 +1891 +1893 +1894 +1886 +1885 +1853 +1871 +1868 +1866 +1875 +1885 +1882 +1883 +1879 +1884 +1893 +1918 +1919 +1932 +1933 +1930 +1949 +1952 +1949 +1945 +1944 +1930 +1950 +1952 +1951 +1981 +1980 +1992 +1993 +1981 +1979 +2007 +1989 +1987 +1996 +2006 +2012 +2028 +2037 +2041 +2039 +2046 +2047 +2055 +2058 +2079 +2086 +2087 +2088 +2079 +2080 +2079 +2082 +2089 +2092 +2097 +2113 +2115 +2119 +2109 +2111 +2110 +2108 +2100 +2099 +2107 +2103 +2104 +2115 +2110 +2116 +2117 +2113 +2120 +2128 +2129 +2115 +2114 +2125 +2148 +2145 +2147 +2160 +2159 +2162 +2155 +2161 +2162 +2160 +2162 +2149 +2150 +2152 +2170 +2171 +2172 +2171 +2186 +2187 +2186 +2188 +2196 +2185 +2195 +2196 +2200 +2197 +2195 +2190 +2191 +2189 +2199 +2200 +2208 +2204 +2203 +2209 +2231 +2234 +2247 +2245 +2277 +2279 +2281 +2282 +2279 +2294 +2296 +2304 +2287 +2294 +2293 +2297 +2311 +2339 +2343 +2344 +2323 +2360 +2369 +2371 +2372 +2373 +2372 +2384 +2383 +2390 +2412 +2419 +2421 +2432 +2428 +2427 +2449 +2459 +2456 +2457 +2459 +2469 +2472 +2474 +2472 +2475 +2487 +2479 +2481 +2482 +2481 +2502 +2492 +2493 +2496 +2522 +2529 +2550 +2551 +2549 +2547 +2546 +2551 +2553 +2555 +2552 +2547 +2536 +2534 +2518 +2517 +2513 +2511 +2495 +2508 +2500 +2501 +2514 +2524 +2551 +2552 +2561 +2563 +2571 +2573 +2565 +2559 +2564 +2565 +2568 +2570 +2556 +2546 +2552 +2554 +2581 +2574 +2573 +2572 +2575 +2577 +2578 +2579 +2580 +2579 +2589 +2586 +2587 +2611 +2615 +2614 +2618 +2619 +2618 +2626 +2630 +2623 +2627 +2628 +2627 +2628 +2657 +2658 +2672 +2673 +2685 +2668 +2658 +2660 +2668 +2669 +2671 +2673 +2669 +2668 +2675 +2668 +2669 +2652 +2672 +2675 +2678 +2677 +2699 +2700 +2701 +2712 +2710 +2712 +2711 +2710 +2721 +2722 +2727 +2731 +2733 +2731 +2734 +2738 +2751 +2745 +2744 +2750 +2765 +2767 +2773 +2771 +2770 +2773 +2778 +2782 +2792 +2796 +2794 +2806 +2807 +2820 +2823 +2836 +2834 +2827 +2826 +2830 +2828 +2829 +2831 +2838 +2845 +2846 +2863 +2860 +2862 +2861 +2862 +2863 +2864 +2871 +2873 +2874 +2875 +2893 +2892 +2893 +2898 +2924 +2942 +2956 +2950 +2952 +2990 +2993 +2994 +3001 +3017 +3022 +3017 +3016 +3017 +3012 +3018 +3019 +3018 +3048 +3058 +3059 +3062 +3072 +3073 +3071 +3072 +3065 +3093 +3094 +3095 +3094 +3100 +3101 +3084 +3085 +3079 +3077 +3099 +3100 +3117 +3118 +3121 +3122 +3137 +3108 +3110 +3109 +3108 +3113 +3102 +3103 +3119 +3122 +3126 +3132 +3137 +3132 +3152 +3153 +3163 +3164 +3176 +3175 +3181 +3190 +3191 +3198 +3195 +3177 +3178 +3177 +3183 +3202 +3203 +3192 +3184 +3185 +3191 +3196 +3195 +3173 +3183 +3182 +3184 +3185 +3193 +3210 +3208 +3207 +3214 +3221 +3234 +3233 +3263 +3284 +3283 +3284 +3270 +3259 +3268 +3253 +3259 +3246 +3251 +3246 +3251 +3256 +3249 +3251 +3261 +3260 +3259 +3267 +3277 +3273 +3282 +3286 +3284 +3285 +3288 +3295 +3270 +3269 +3277 +3276 +3281 +3280 +3292 +3293 +3301 +3306 +3335 +3336 +3310 +3309 +3312 +3318 +3324 +3340 +3368 +3371 +3369 +3370 +3368 +3367 +3386 +3388 +3416 +3420 +3423 +3433 +3427 +3438 +3457 +3469 +3474 +3479 +3489 +3507 +3471 +3468 +3480 +3486 +3490 +3493 +3495 +3496 +3495 +3479 +3480 +3485 +3490 +3489 +3491 +3488 +3494 +3493 +3515 +3517 +3526 +3519 +3520 +3525 +3515 +3516 +3517 +3508 +3510 +3512 +3515 +3536 +3535 +3530 +3540 +3542 +3550 +3530 +3550 +3553 +3537 +3536 +3542 +3547 +3544 +3562 +3561 +3551 +3546 +3547 +3562 +3561 +3586 +3593 +3582 +3586 +3589 +3600 +3604 +3605 +3607 +3608 +3613 +3624 +3626 +3652 +3668 +3669 +3666 +3674 +3677 +3668 +3671 +3673 +3675 +3657 +3666 +3655 +3658 +3662 +3659 +3660 +3657 +3655 +3662 +3657 +3660 +3661 +3664 +3675 +3677 +3661 +3663 +3669 +3645 +3646 +3644 +3645 +3666 +3677 +3685 +3686 +3689 +3697 +3694 +3703 +3672 +3676 +3675 +3706 +3726 +3742 +3744 +3765 +3792 +3793 +3802 +3805 +3813 +3816 +3817 +3826 +3827 +3828 +3830 +3826 +3825 +3824 +3816 +3821 +3820 +3821 +3825 +3846 +3848 +3847 +3846 +3849 +3854 +3844 +3860 +3859 +3861 +3863 +3848 +3845 +3846 +3853 +3851 +3850 +3863 +3865 +3885 +3912 +3913 +3914 +3913 +3901 +3897 +3927 +3928 +3927 +3929 +3931 +3925 +3912 +3915 +3919 +3920 +3896 +3900 +3904 +3909 +3919 +3922 +3923 +3925 +3944 +3938 +3937 +3936 +3944 +3943 +3942 +3955 +3944 +3945 +3948 +3946 +3939 +3955 +3957 +3951 +3950 +3954 +3966 +3974 +3987 +3991 +3987 +3985 +3981 +3983 +3986 +3996 +4002 +4012 +4031 +4030 +4031 +4034 +4018 +4020 +4007 +4009 +4019 +4006 +4011 +4018 +4022 +4012 +4014 +4012 +4013 +4031 +4046 +4051 +4054 +4065 +4070 +4074 +4080 +4081 +4080 +4051 +4058 +4056 +4054 +4049 +4054 +4048 +4065 +4078 +4082 +4086 +4099 +4100 +4106 +4126 +4118 +4145 +4141 +4142 +4153 +4168 +4176 +4168 +4167 +4171 +4172 +4173 +4137 +4154 +4150 +4134 +4137 +4138 +4137 +4148 +4151 +4129 +4131 +4130 +4132 +4129 +4155 +4156 +4157 +4162 +4179 +4185 +4187 +4186 +4177 +4167 +4174 +4178 +4176 +4174 +4177 +4180 +4192 +4206 +4212 +4192 +4201 +4193 +4213 +4194 +4201 +4181 +4184 +4181 +4192 +4195 +4205 +4209 +4199 +4201 +4200 +4201 +4219 +4218 +4220 +4221 +4235 +4236 +4229 +4235 +4233 +4234 +4240 +4239 +4211 +4216 +4223 +4210 +4224 +4225 +4223 +4224 +4223 +4233 +4232 +4240 +4248 +4240 +4241 +4246 +4247 +4244 +4245 +4246 +4256 +4261 +4274 +4268 +4288 +4289 +4290 +4301 +4299 +4303 +4304 +4303 +4297 +4299 +4288 +4296 +4293 +4296 +4295 +4302 +4303 +4319 +4313 +4315 +4320 +4322 +4326 +4328 +4337 +4338 +4351 +4370 +4381 +4388 +4413 +4418 +4417 +4416 +4415 +4436 +4440 +4441 +4464 +4461 +4468 +4469 +4471 +4480 +4496 +4495 +4496 +4497 +4494 +4461 +4462 +4461 +4462 +4461 +4457 +4466 +4467 +4468 +4469 +4491 +4497 +4510 +4500 +4485 +4497 +4508 +4506 +4500 +4501 +4514 +4516 +4517 +4516 +4543 +4549 +4529 +4523 +4522 +4540 +4539 +4540 +4543 +4545 +4530 +4532 +4531 +4533 +4535 +4511 +4517 +4520 +4521 +4523 +4517 +4525 +4526 +4538 +4566 +4567 +4564 +4575 +4577 +4576 +4574 +4580 +4594 +4595 +4596 +4621 +4622 +4629 +4632 +4641 +4642 +4658 +4659 +4660 +4685 +4687 +4708 +4727 +4735 +4739 +4745 +4744 +4753 +4755 +4757 +4759 +4782 +4785 +4777 +4783 +4786 +4789 +4794 +4802 +4803 +4833 +4849 +4857 +4865 +4866 +4872 +4869 +4876 +4874 +4877 +4899 +4900 +4901 +4893 +4892 +4904 +4907 +4900 +4907 +4908 +4903 +4890 +4895 +4896 +4876 +4880 +4888 +4889 +4894 +4893 +4924 +4927 +4922 +4893 +4901 +4891 +4908 +4916 +4915 +4920 +4931 +4954 +4943 +4953 +4954 +4959 +4949 +4952 +4936 +4935 +4916 +4922 +4923 +4922 +4928 +4929 +4930 +4927 +4923 +4926 +4924 +4931 +4935 +4955 +4966 +4987 +4988 +4990 +4992 +4991 +4999 +5001 +5006 +5007 +5021 +5034 +5047 +5050 +5055 +5091 +5096 +5101 +5100 +5105 +5108 +5117 +5114 +5127 +5129 +5127 +5153 +5152 +5154 +5155 +5156 +5142 +5154 +5180 +5177 +5183 +5184 +5201 +5204 +5205 +5222 +5212 +5217 +5222 +5251 +5278 +5277 +5302 +5319 +5326 +5333 +5327 +5321 +5337 +5361 +5362 +5368 +5369 +5366 +5368 +5385 +5383 +5384 +5393 +5403 +5427 +5428 +5429 +5428 +5459 +5442 +5441 +5433 +5436 +5428 +5429 +5428 +5427 +5433 +5418 +5419 +5421 +5425 +5426 +5435 +5441 +5445 +5442 +5446 +5454 +5458 +5454 +5456 +5452 +5423 +5426 +5425 +5418 +5417 +5420 +5425 +5420 +5438 +5447 +5450 +5451 +5453 +5450 +5453 +5449 +5457 +5464 +5455 +5460 +5443 +5439 +5425 +5423 +5434 +5438 +5437 +5412 +5408 +5405 +5407 +5420 +5426 +5452 +5459 +5460 +5490 +5498 +5508 +5528 +5531 +5516 +5517 +5512 +5524 +5529 +5511 +5525 +5527 +5538 +5539 +5546 +5550 +5549 +5552 +5554 +5559 +5551 +5552 +5556 +5559 +5579 +5584 +5590 +5593 +5592 +5595 +5604 +5600 +5586 +5591 +5572 +5571 +5583 +5584 +5578 +5579 +5580 +5579 +5570 +5571 +5574 +5577 +5583 +5584 +5569 +5586 +5582 +5561 +5550 +5554 +5544 +5550 +5529 +5538 +5551 +5569 +5570 +5584 +5588 +5596 \ No newline at end of file diff --git a/day1/program.js b/day1/program.js new file mode 100644 index 0000000..cd64cae --- /dev/null +++ b/day1/program.js @@ -0,0 +1,44 @@ +export default function Day(data) { + let increases = 0; + let lastValue = false; + + // prepare data + data.forEach((row, i) => { + data[i] = parseInt(row); + }); + + // part 1 + data.forEach((row) => { + if (lastValue !== false && row > lastValue) { + increases++; + } + + lastValue = row; + }); + + console.log("Part 1:", increases); + + // part 2 + let rollingThrees = []; + let lastSum = false; + let increases2 = 0; + + data.forEach((row, i) => { + rollingThrees.push(row); + + if (rollingThrees.length > 3) { + rollingThrees.shift(); + } + if (rollingThrees.length === 3) { + const sum = rollingThrees.reduce((a, b) => a + b); + + if (lastSum !== false && sum > lastSum) { + increases2++; + } + + lastSum = sum; + } + }); + + console.log("Part 2:", increases2); +} diff --git a/day1input.txt b/day1input.txt deleted file mode 100644 index ea74611..0000000 --- a/day1input.txt +++ /dev/null @@ -1,200 +0,0 @@ -1918 -1869 -1821 -1852 -1981 -1987 -1989 -1597 -1634 -1537 -1991 -1603 -1543 -1949 -1879 -1800 -1761 -2010 -1810 -1458 -1755 -1938 -1500 -2005 -818 -1493 -1618 -1923 -1283 -1952 -1373 -1605 -1230 -1321 -1873 -1853 -1886 -1372 -1913 -1871 -159 -733 -1400 -1880 -1462 -2007 -1801 -1982 -1728 -1640 -1442 -1525 -1953 -1791 -1906 -1946 -1641 -2009 -1627 -1935 -1936 -1908 -1826 -1291 -1978 -1884 -1799 -1464 -1538 -1365 -1678 -1872 -1964 -1863 -1388 -1912 -1928 -1471 -1632 -1336 -1396 -1948 -1974 -1331 -1290 -1992 -1096 -1889 -1874 -1341 -757 -1351 -1876 -1674 -2002 -1504 -1865 -1469 -1792 -1920 -1925 -1898 -1899 -1435 -405 -1488 -1319 -1322 -1749 -1867 -1957 -1944 -1727 -1293 -1739 -1285 -1917 -1897 -1844 -1966 -1921 -1905 -1830 -1484 -1364 -1782 -1415 -1412 -1413 -833 -1857 -1370 -1890 -1393 -1262 -1311 -2008 -1545 -1896 -1362 -1862 -1617 -1864 -608 -1868 -1689 -1784 -1806 -1976 -1870 -1973 -1993 -1986 -1998 -1414 -1858 -1990 -1841 -1895 -1779 -1850 -2001 -1590 -1902 -1487 -943 -1808 -782 -1546 -2004 -1656 -154 -1661 -1688 -1731 -1466 -1927 -1438 -1387 -1576 -1793 -1797 -1979 -1903 -1638 -1940 -1911 -1301 -1669 -1409 -1578 -1887 -1860 -1619 -1939 -1625 -1941 -1374 -1766 -1407 \ No newline at end of file diff --git a/day2.js b/day2.js deleted file mode 100644 index e135497..0000000 --- a/day2.js +++ /dev/null @@ -1,68 +0,0 @@ -const fs = require('fs'); - -function split(item) { - let parts = item.split(" "); - if (parts.length < 2) return false; - parts[0] = parts[0].split('-'); - - parts[0][0] = parseInt(parts[0][0]); - parts[0][1] = parseInt(parts[0][1]); - return parts; -} - -function isValidPart1(item) { - const parts = split(item); - if (!parts) return; - - const char = parts[1].substr(0,1); - const regex = new RegExp(char, 'g'); - const matches = parts[2].match(regex); - - if (matches && matches.length >= parts[0][0] && matches.length <= parts[0][1]) { - return true; - } - return false; - -} - - -function isValidPart2(item) { - const parts = split(item); - if (!parts) return; - - const char = parts[1].substr(0,1); - const pw = parts[2]; - - const char1 = pw.substr(parts[0][0] - 1, 1); - const char2 = pw.substr(parts[0][1] - 1, 1); - - if (char1 === char2) return false; - if (char1 === char || char2 === char) return true; - - return false; - -} - -function parseItems(input) { - let validItems1 = 0; - let validItems2 = 0; - - input.forEach(item => { - if (isValidPart1(item)) { - validItems1++; - } - if (isValidPart2(item)){ - validItems2++; - } - }); - - console.log('part 1: found valid items: ', validItems1); - console.log('part 2: found valid items: ', validItems2); -} - - -fs.readFile('./day2input.txt', 'utf-8', (e, data) =>{ - const items = data.split("\n"); - - const pws = parseItems(items); -}) \ No newline at end of file diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..cde6bfc --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,1000 @@ +forward 5 +down 9 +forward 2 +up 2 +forward 4 +forward 4 +up 5 +down 3 +forward 2 +forward 9 +down 7 +forward 2 +down 2 +forward 1 +up 9 +forward 1 +forward 4 +up 5 +down 9 +forward 8 +forward 3 +up 1 +down 2 +down 3 +forward 7 +forward 2 +up 3 +forward 9 +forward 9 +down 3 +up 8 +forward 5 +forward 7 +forward 2 +down 7 +forward 5 +down 4 +up 7 +forward 8 +forward 1 +down 3 +down 1 +forward 6 +up 7 +forward 6 +down 3 +forward 9 +forward 6 +up 3 +down 1 +forward 8 +up 7 +down 9 +down 2 +down 1 +down 5 +forward 4 +down 8 +forward 2 +down 5 +down 6 +down 5 +forward 5 +down 8 +up 8 +forward 3 +forward 4 +forward 8 +forward 9 +down 2 +forward 7 +forward 3 +forward 9 +down 3 +up 1 +down 5 +forward 2 +down 9 +down 2 +down 5 +down 2 +down 9 +up 3 +forward 6 +up 9 +down 1 +forward 8 +up 6 +down 1 +forward 1 +up 1 +forward 3 +down 8 +down 1 +down 9 +forward 4 +forward 1 +down 3 +forward 8 +down 9 +forward 7 +up 6 +down 8 +down 6 +down 8 +down 7 +down 1 +down 8 +down 1 +forward 5 +down 9 +forward 4 +down 2 +forward 8 +up 1 +forward 7 +down 7 +down 6 +forward 4 +forward 6 +down 2 +down 2 +up 7 +down 2 +up 9 +forward 6 +forward 3 +down 8 +forward 9 +down 9 +down 9 +down 8 +forward 2 +forward 5 +forward 8 +forward 1 +down 3 +forward 1 +forward 2 +forward 9 +up 5 +forward 4 +forward 2 +down 6 +forward 3 +forward 7 +forward 1 +forward 8 +down 7 +forward 4 +up 3 +down 9 +up 2 +forward 2 +forward 7 +down 9 +up 9 +forward 9 +up 8 +up 7 +down 8 +down 9 +forward 1 +forward 5 +up 7 +down 3 +up 9 +forward 9 +down 4 +down 7 +down 7 +down 1 +down 4 +down 5 +up 2 +forward 2 +forward 2 +forward 6 +down 7 +forward 7 +down 5 +forward 8 +down 7 +forward 6 +down 2 +up 2 +down 5 +down 1 +up 4 +down 8 +up 9 +forward 1 +down 9 +down 6 +down 8 +up 7 +up 1 +forward 7 +down 8 +forward 1 +down 4 +down 2 +forward 3 +forward 6 +forward 8 +down 2 +forward 7 +forward 8 +up 3 +down 1 +down 8 +up 3 +down 4 +down 5 +forward 6 +forward 9 +down 3 +up 2 +down 9 +up 2 +down 3 +down 9 +forward 4 +forward 6 +down 7 +down 8 +down 4 +forward 7 +up 2 +down 5 +up 3 +down 5 +up 1 +up 1 +forward 5 +forward 9 +down 9 +up 4 +up 4 +up 8 +up 5 +forward 7 +forward 6 +up 6 +down 5 +forward 4 +forward 3 +up 6 +down 6 +forward 5 +up 6 +up 7 +forward 1 +forward 2 +forward 5 +down 3 +forward 6 +down 6 +down 3 +up 9 +down 4 +down 5 +down 4 +forward 1 +down 1 +forward 3 +up 4 +forward 1 +forward 5 +up 3 +forward 6 +forward 5 +forward 9 +forward 6 +down 2 +forward 2 +down 1 +down 4 +forward 6 +forward 8 +down 8 +up 5 +forward 8 +forward 3 +forward 1 +forward 3 +forward 6 +down 1 +down 9 +up 7 +down 2 +forward 6 +down 4 +down 7 +down 5 +forward 2 +down 1 +forward 2 +forward 8 +forward 4 +up 3 +down 1 +forward 6 +forward 3 +down 3 +down 9 +forward 1 +up 5 +forward 3 +forward 3 +up 5 +down 7 +forward 8 +up 5 +forward 2 +forward 2 +down 6 +up 8 +up 5 +forward 2 +forward 1 +down 9 +forward 7 +down 5 +forward 3 +down 3 +down 5 +down 5 +up 7 +down 8 +forward 2 +forward 4 +forward 5 +forward 1 +down 6 +forward 3 +down 1 +down 7 +forward 3 +forward 7 +down 5 +down 3 +forward 6 +down 3 +down 2 +down 4 +down 9 +forward 7 +down 2 +up 2 +up 6 +up 9 +up 8 +forward 9 +down 1 +forward 4 +forward 2 +forward 7 +forward 2 +down 8 +down 3 +forward 4 +forward 6 +down 8 +forward 7 +forward 6 +up 3 +down 6 +down 1 +down 3 +down 8 +down 2 +down 7 +down 9 +forward 4 +forward 7 +forward 8 +forward 5 +forward 9 +up 5 +down 2 +forward 9 +forward 6 +up 6 +forward 7 +down 2 +down 3 +forward 4 +down 6 +down 1 +down 2 +down 8 +forward 3 +down 3 +forward 3 +down 5 +up 8 +down 5 +forward 8 +down 1 +forward 1 +forward 4 +forward 7 +down 2 +down 5 +forward 5 +down 8 +forward 2 +down 2 +forward 5 +forward 6 +forward 4 +down 7 +up 7 +down 1 +forward 7 +forward 8 +down 6 +up 7 +forward 6 +up 6 +down 8 +forward 5 +forward 8 +up 4 +up 2 +up 1 +down 8 +down 6 +up 2 +down 5 +down 1 +forward 5 +forward 7 +down 2 +up 3 +up 3 +forward 9 +down 1 +forward 6 +down 2 +forward 2 +down 1 +down 9 +forward 7 +down 5 +down 8 +up 1 +forward 1 +down 7 +forward 3 +down 4 +up 4 +down 6 +forward 1 +forward 3 +down 2 +forward 3 +forward 5 +forward 6 +up 2 +up 9 +forward 4 +down 4 +up 1 +up 3 +forward 8 +forward 1 +down 9 +down 9 +forward 2 +down 1 +up 9 +up 3 +up 1 +up 5 +forward 6 +down 9 +forward 6 +forward 9 +forward 6 +forward 4 +up 2 +down 6 +up 3 +forward 3 +forward 1 +up 4 +forward 7 +down 9 +down 3 +forward 9 +down 4 +down 8 +down 3 +up 8 +down 8 +down 8 +forward 2 +forward 8 +up 9 +forward 2 +up 6 +forward 7 +down 1 +forward 5 +forward 4 +forward 1 +forward 7 +up 9 +down 8 +forward 1 +up 5 +forward 9 +forward 2 +forward 8 +down 1 +forward 7 +down 2 +up 8 +down 6 +up 9 +up 3 +down 6 +forward 5 +down 1 +forward 1 +forward 6 +forward 6 +up 1 +forward 5 +forward 1 +up 2 +forward 9 +forward 6 +down 3 +up 1 +forward 7 +forward 2 +down 1 +forward 6 +down 3 +up 2 +down 3 +down 8 +forward 4 +down 2 +up 7 +down 6 +up 5 +down 7 +forward 4 +down 9 +down 3 +forward 2 +up 5 +up 4 +forward 9 +down 1 +up 2 +forward 4 +down 9 +down 8 +forward 5 +forward 2 +down 5 +forward 6 +down 4 +forward 7 +forward 1 +forward 6 +down 3 +down 9 +forward 9 +forward 2 +forward 6 +down 7 +down 5 +down 3 +forward 7 +down 3 +down 3 +down 4 +down 4 +down 7 +down 7 +down 7 +up 7 +up 9 +up 7 +up 3 +up 4 +down 9 +down 4 +up 3 +forward 2 +up 1 +down 9 +down 6 +up 1 +up 2 +down 7 +down 9 +up 2 +forward 7 +down 4 +forward 3 +down 1 +down 7 +forward 7 +up 7 +forward 3 +forward 1 +forward 6 +forward 2 +down 9 +forward 8 +up 8 +down 8 +down 9 +up 1 +down 4 +down 6 +down 8 +up 4 +down 1 +forward 1 +forward 1 +forward 4 +forward 7 +forward 1 +down 4 +forward 5 +up 3 +forward 4 +down 5 +down 1 +up 2 +down 7 +forward 7 +down 7 +up 9 +down 9 +down 3 +up 2 +up 8 +up 8 +up 7 +forward 7 +forward 5 +forward 3 +forward 2 +down 5 +forward 4 +forward 1 +down 6 +down 1 +forward 8 +down 6 +down 3 +down 5 +down 9 +down 3 +forward 7 +forward 6 +down 6 +forward 9 +up 7 +forward 3 +up 5 +down 5 +down 5 +forward 4 +up 6 +down 6 +forward 3 +up 2 +forward 4 +up 1 +down 5 +forward 6 +forward 9 +down 2 +up 2 +down 2 +up 7 +forward 3 +up 2 +forward 9 +forward 5 +down 5 +down 7 +down 8 +down 6 +up 9 +up 5 +forward 7 +down 8 +down 1 +forward 7 +up 2 +forward 4 +forward 2 +up 9 +down 8 +forward 1 +forward 7 +down 2 +down 3 +down 6 +down 3 +forward 1 +up 6 +forward 8 +down 9 +down 9 +forward 8 +up 8 +down 6 +forward 4 +up 1 +forward 5 +down 3 +down 7 +down 7 +down 3 +up 2 +forward 4 +down 9 +forward 2 +down 9 +forward 9 +forward 4 +forward 5 +down 4 +forward 1 +up 1 +forward 4 +up 3 +up 4 +forward 7 +down 9 +forward 6 +down 1 +down 1 +down 2 +down 4 +forward 7 +forward 8 +forward 6 +down 8 +forward 2 +down 3 +up 5 +forward 2 +up 5 +forward 8 +down 8 +down 8 +up 8 +forward 6 +up 1 +down 3 +forward 6 +down 1 +forward 9 +up 1 +forward 7 +forward 7 +down 1 +forward 5 +forward 2 +up 7 +down 1 +forward 2 +down 4 +forward 3 +down 9 +forward 6 +up 5 +forward 1 +forward 5 +down 7 +forward 6 +down 8 +forward 9 +down 1 +forward 9 +down 1 +forward 5 +up 9 +forward 1 +forward 6 +forward 5 +down 7 +down 6 +down 5 +down 9 +forward 9 +down 2 +down 8 +down 8 +forward 2 +forward 3 +forward 3 +down 3 +forward 8 +forward 8 +down 8 +forward 1 +up 1 +forward 4 +down 7 +forward 1 +up 2 +forward 9 +forward 1 +down 6 +up 9 +down 3 +down 1 +up 1 +up 6 +up 7 +forward 9 +up 2 +forward 4 +up 8 +down 6 +forward 3 +forward 7 +down 6 +down 5 +down 3 +forward 5 +down 1 +forward 2 +forward 9 +down 8 +up 6 +forward 3 +forward 2 +up 7 +down 3 +forward 5 +forward 9 +down 5 +down 1 +up 4 +down 8 +forward 1 +forward 3 +forward 3 +down 2 +forward 5 +down 1 +forward 2 +up 3 +forward 8 +down 2 +up 8 +down 6 +down 8 +forward 4 +down 4 +up 7 +up 6 +down 7 +forward 2 +up 3 +forward 3 +down 8 +forward 8 +down 5 +forward 5 +down 3 +up 7 +down 1 +down 2 +up 8 +down 6 +up 6 +down 7 +forward 5 +up 3 +forward 7 +forward 2 +down 9 +down 1 +down 4 +down 7 +forward 9 +up 7 +forward 5 +up 8 +forward 8 +up 1 +forward 2 +down 7 +down 5 +down 6 +down 4 +up 4 +forward 5 +forward 6 +up 4 +forward 8 +forward 4 +forward 3 +up 5 +down 6 +up 4 +forward 8 +down 7 +forward 3 +down 2 +down 7 +down 5 +down 4 +forward 5 +up 4 +forward 4 +down 7 +down 3 +down 9 +down 7 +forward 2 +forward 1 +down 7 +down 8 +forward 1 +forward 2 +down 5 +up 1 +down 1 +forward 5 +down 2 +forward 9 +forward 7 +down 2 +forward 6 +forward 9 +up 5 +forward 3 +up 5 +forward 7 +down 6 +down 3 +up 3 +down 4 +forward 2 +up 4 +forward 5 +up 9 +down 3 +up 1 +down 1 +up 3 +forward 4 +forward 5 +down 3 +forward 5 +down 6 +down 2 +forward 5 +forward 3 +down 7 +down 8 +forward 4 +down 5 +forward 7 +forward 2 +forward 7 +down 7 +up 1 +forward 6 +down 1 +forward 1 +down 4 +forward 1 +up 6 +forward 8 +forward 6 +forward 7 +up 6 +up 7 +up 2 +down 9 +forward 4 +up 3 +down 1 +down 1 +forward 3 +down 4 +down 6 +down 8 +forward 9 +forward 6 +down 1 +forward 5 \ No newline at end of file diff --git a/day2/program.js b/day2/program.js new file mode 100644 index 0000000..7362019 --- /dev/null +++ b/day2/program.js @@ -0,0 +1,52 @@ +export default function Day(data) { + const instructions = data.map((instruction) => { + const instructionSplit = instruction.split(" "); + instructionSplit[1] = parseInt(instructionSplit[1]); + return instructionSplit; + }); + + part1(instructions); + part2(instructions); +} + +const part1 = (instructions) => { + let position = 0; + let depth = 0; + + for (const instruction of instructions) { + switch (instruction[0]) { + case "up": + depth -= instruction[1]; + break; + case "down": + depth += instruction[1]; + break; + case "forward": + position += instruction[1]; + break; + } + } + console.log(`Part 1: position: ${position}, depth: ${depth}`, position * depth); +}; + +const part2 = (instructions) => { + let position = 0; + let depth = 0; + let aim = 0; + + for (const instruction of instructions) { + switch (instruction[0]) { + case "up": + aim -= instruction[1]; + break; + case "down": + aim += instruction[1]; + break; + case "forward": + position += instruction[1]; + depth += aim * instruction[1]; + break; + } + } + console.log(`Part 2: position: ${position}, depth: ${depth}, aim: ${aim}`, position * depth); +}; diff --git a/day2input.txt b/day2input.txt deleted file mode 100644 index f7a1314..0000000 --- a/day2input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -2-4 r: prrmspx -5-6 p: hpzplphxb -5-8 t: ttttbtttttc -1-6 k: kkkkkk -1-3 q: qqqq -4-8 t: pctpfqtrtttmvptvfmws -3-5 z: zznzslv -12-14 h: hhhhhhhhhhhhhhhh -14-15 v: vvvvvvvvhvvvvdmvv -8-17 x: xxxxxxdxxxxxxxckxx -11-12 f: gkfjnffjfcmfwk -10-12 s: xsgsssshbmsbnss -6-15 s: sssssnsssssssss -2-8 d: qnqtrqdrnvq -5-7 k: lhxkkkk -4-5 k: xkkkk -10-16 v: vvvvvvvvvcvvvvvpvv -1-6 f: ffffflfffffff -4-5 x: fxdnq -10-12 p: mkspmhlldqjh -10-12 r: rcvzzcbdgrcr -4-7 r: rxbkrrrzrrrtrrr -18-19 k: kkkkkkkkkkkkkkkkkkk -1-2 f: sfffffffffffffffff -1-5 z: mhkzwdxklf -2-3 r: qzbgrghkmlpxdvd -2-3 q: mqqpcxbqdf -7-8 r: rrrrfrrj -1-9 x: vmxsmwhnxccf -9-10 t: ttttttttppt -2-4 x: rxxqxx -16-17 k: jkfmnwkkztnxvlkkw -3-4 c: ccbpccccczpcccc -5-8 g: ggggjggg -1-3 z: szzzzz -8-9 l: xnllznclz -4-10 m: pkmmptjvgsnwmxm -1-2 r: mbrrtkrjdr -1-3 c: ccqscsxcnctwlvm -4-6 p: ppppppppp -3-5 d: wdddxvmnbdhvzdgqbdm -5-7 n: nnwbsnqnnvn -2-11 j: sgbxjvqnbmq -5-13 q: qqqkpqqqsqqqxqqqq -2-12 m: kvwlwmmvhbpgmnzfddms -2-4 j: kjgcpgxgcphkqjjmbwd -3-6 v: tdvlvv -10-20 n: tnmhnlznnpnmnfnngnnn -4-7 h: hhhhhhhh -9-11 m: mmmmmmmmrmm -7-9 b: mbnbbbbqk -9-10 z: fqzzzmzzzzj -3-15 s: chdpzcpgsgrkhss -3-4 k: kklz -1-5 q: ltqqqxcndqrq -9-17 m: mmmmmmmmqdlmmxbmtmmm -14-16 k: kkkkkkmkkkkkjtkkk -8-9 k: kkkkkqkkxlk -2-6 n: kbhhjhdmgtn -3-8 w: rcwwwkqwbwkwmdqtwmw -10-11 x: snkbxmwqwxp -2-5 m: pmhmp -6-7 b: bbbbbbq -3-7 l: cfqmljq -9-13 q: qzqqqqqqqlqdt -2-10 w: kmwqwtwkssd -4-13 t: ttblttttttttftt -14-17 l: llllllwllllllwllclll -3-4 p: xzps -10-14 b: bjbbbbbpbdbbbb -5-7 v: jlvhjtvx -6-9 r: bscrrrrcrphffdw -5-7 r: brrvjrxfrljwxp -15-16 b: bbbbbbbbbbbbbbbb -7-8 h: bchfxxshh -2-13 z: zzqzzzzzzzzzzzz -1-5 b: bbbbrbbhbbbbbcb -2-3 k: zkkzjld -4-6 f: fnffffff -8-11 d: qdvdddddndphdndmgdkp -17-18 q: qqqkqqqqqqcqqqqtqq -11-16 m: mmmwmwxvmmmmmmmmmmm -12-13 v: vvvvfxvgblvvk -4-6 v: vsvvvvv -2-4 p: rqgm -7-8 r: rrrrrfrf -2-4 j: xpjjl -7-8 b: wdpbvwbb -15-16 k: fkkkskkkmkkkkkkk -10-14 s: shkscsqjszstssv -3-4 l: lllw -2-4 n: gjbnlsxvqmvxgcwntvvs -6-12 l: lclllgllllllll -16-17 b: bbbbbbbbbbbbbbbbbbb -7-8 q: pqqqqqwq -1-2 r: rrzsr -1-3 r: rrfr -16-17 f: fffcfffffjfmrzqffnr -15-17 h: bhzhhfndwgdhlhhhjh -7-11 t: vtwnrwzczmtwn -3-6 v: vvvvvmvvvvvv -4-5 s: ssptsss -1-3 t: ttntq -5-9 g: ggggtgggcg -7-8 h: hcjdkphhb -15-17 j: jjjjjmjjjjtjgvnxk -3-4 q: qqqq -5-7 g: lggsjqlg -11-18 m: mmmmmmmmmmqmmmmmmf -1-14 x: xxxxcxxxxxxxxxxxxx -7-8 f: ffffffbffff -3-4 t: xmct -3-4 x: xxtcd -1-11 x: xcnxxxxvxlxkmcrxn -8-11 h: hgnhkhhshhnhhzdhllw -8-10 z: zdzzzzzrpvvzzqz -6-7 r: lrbrrprrxr -6-10 n: fnnwnpnnjnhmnntqn -10-15 b: bbbbbbbbbwbbbbbbbbbb -13-16 z: zzzzzzzwzzzzvvzkztjz -5-6 t: xntkwthxbdtlmxtpzz -5-13 r: njrlghrrxfrfv -11-14 s: vssnzksspscrss -7-10 c: gtrkbcxccccccchch -6-11 v: vvsvvvvvvvvvvvvv -17-18 b: bbbbbbbqbbbsbbbbsnbb -13-15 x: smxxxjxmmkxxxmxx -10-11 h: hpqqwkxnfhd -15-16 j: jjjjjjjjjjjjzgjjwjjj -3-5 f: cjcff -3-4 z: hnfzzzmq -11-14 c: cccccccccczcckc -2-7 t: tstmdtk -2-3 f: wffkfm -7-16 w: tvgdzjjqlwzknwvwgzh -1-2 d: dzdqpn -8-14 j: jjzqjxjjsjrngzfj -6-9 h: xknzmlzpbpzcth -2-5 j: njmnj -10-15 z: kfqlljdfzzczzmp -7-12 g: gcqwnmgjhcrjnzwcmw -3-4 h: hhjhh -5-16 d: ddddddvddddddddddd -1-2 p: fwwtpllzbmjbwcnkbh -10-18 p: vhpwpppxfppppvppdh -2-6 x: rqgqgx -11-12 m: mhpmmmmmmmmmmm -3-4 z: lzzf -5-8 w: vfwwmlwfvwwwwlh -3-10 t: ltgtztzlct -7-8 k: kkkkkkmk -10-13 b: ndflbblbchkbq -18-19 z: zzzzzzzzzzzzszzzzzzz -2-5 n: nlzrmkhz -14-15 v: vwvvvvvvvvvjvmcvvv -13-15 p: ppppppppwpppxph -6-9 k: jvhxzwkkwkzv -9-11 s: snspssslkss -13-18 j: jgjrjjjjjqjjjhjtjj -5-7 v: vgvrhzvvv -1-7 t: ttttttttttttt -8-9 n: nnnnfnnnj -2-5 x: dxcrxhstqwldt -6-12 s: dkshssdsltspgcb -2-7 k: kkkkkkkk -7-13 d: vbjsdddfstdhtdxl -12-17 r: nrrgrrsrrrrkrrrdt -3-5 w: wwwjw -5-8 l: mlfldllll -4-5 m: mmmqm -9-10 j: sjtmlxjrzl -2-14 h: hhhhhhhhhhhhrnhhwh -3-4 b: bbbw -12-13 g: gggggggggggzg -13-14 t: tttgtttrztstltlhb -14-17 s: fhdxfshbglsvjsgbs -9-13 x: xxxxlxxtxxxxxxx -2-3 j: jjtn -12-13 n: nnnnnsnwnnvmq -3-6 z: gzzzbzmzzzmz -3-4 d: ddnt -2-7 s: pswmrnsrgb -8-9 q: qqqqqqqdv -5-6 s: sdlcqs -6-10 f: jffwjfhfff -4-5 p: pmpppps -9-14 p: pppppppppppvpppppppc -3-9 n: nsnpnmmnnwtnvb -3-4 b: bhzh -7-9 g: ggggggggng -10-11 x: xwxxxkxxxjxqxxxbbxx -17-18 k: kkkkkkkkkkkckkkkkk -3-4 v: vvrv -12-14 s: vdsrgdsghxcblflbwj -8-13 h: gxzhhbkdgfdglfqqcls -4-6 m: mmmvmfmmmmm -2-13 b: lbtzwffqfrfhbwb -1-3 r: lrcr -3-6 j: cjtcjj -5-8 z: zzztzmzz -4-12 t: wttrttvtgttztttdttst -6-7 n: zbfvmngknrzfzqpwhtx -12-14 g: gggggggggggggbgg -6-10 k: jkkkkkrkmbkdh -14-19 m: mmmmmmmmmmmmmmmmmmfm -2-4 d: sdft -4-10 g: bgtgsbjcqgt -2-4 t: trtqt -7-11 b: wjbbsqsvpkpb -12-14 z: zcfqlkxghjjpjzsc -3-4 g: ggjt -5-7 r: zdrrqrrrrrr -15-16 p: brpvpplmhvnbxppc -15-16 b: bbxbbbbbbbbbbbbb -8-11 c: hscggrpcpbxrxwgsv -10-15 j: jjjjjjjjjnjjjjmjjjj -4-6 g: bgkghgc -9-15 c: ccjcccsbcccspxc -2-3 v: fjzb -2-3 h: hhhxlchhwmjjzj -4-11 x: xxxxlxxxxcxxxxk -6-11 d: dvpdmdddzch -5-6 j: jjjjjjdjwj -6-12 p: pppppxpppppbppp -1-7 q: xqqqqqqqqqqqqq -5-6 w: xwwrtwjpwgsw -11-13 k: kkkkkkkkkkckfkkk -2-3 m: qbmnxlwmldmmc -2-3 w: jqlwws -6-8 k: kkkjbkmz -10-12 m: mmmmmmmmmvbm -6-13 n: hqnkdmwnxnwndnxgl -1-5 j: jjjjb -16-17 x: gxxxxxsxxbxxxxxmp -3-10 s: ssrsssssss -3-4 s: rslpsx -1-10 g: qgggjgwqzggvzflmj -8-9 g: gggbngqghg -1-3 q: qqqfj -3-5 m: mmmmzmmmmm -7-8 q: qqqxqqgqq -1-2 j: rpdjrrt -7-10 v: mdzpkvvdpv -12-14 m: xzmmjmhmmmmktmtmmmm -6-9 m: mmvbmvmzm -7-9 c: gcccqmlhc -6-8 z: zzzzzznrz -4-7 w: wwwmwwww -1-4 h: vhhhhh -13-14 z: xzzzjzzzzzzfzz -1-3 l: jlqml -10-12 f: wdbfzsbwffgf -4-8 p: vjpppfppxppjmctw -18-19 x: zkxbllxbtbzggncfxxx -5-6 x: xxxxhxxx -2-6 v: tvdprvvrvv -5-14 k: jkdhkhdhjgmtkk -1-2 k: sskk -5-12 w: mvqtkwwmcwwlkw -2-6 v: gvmlvv -12-13 p: ppppppppppppbp -3-4 r: frrrr -13-15 r: qrrrrrrrrbrrrrr -5-10 b: bxkbrbkdtwwrbkskjpc -4-5 x: bxrcx -12-15 f: ffffftjfffffffzfff -6-7 g: ggggggzgvxggg -10-11 w: kgwhvwwwwtcwp -9-10 j: jjjjjjjjpjj -5-12 t: pnbsttwccrtvttm -2-8 c: wcccccxfccnkvrllg -2-9 j: frddhfbkkj -9-11 m: mmmmmmmmtmmm -9-10 m: mmhmmmmmtm -2-4 r: crtr -14-15 v: vvvvvvvvvvvvvlrv -5-6 c: wccwctch -1-13 c: lcccccccccccfccc -12-15 x: zppxdwxtplfvzfxlwl -4-18 c: cccccccccccccccccc -2-3 c: xcccc -1-7 q: qvfbcfqx -6-9 k: lkbkhkkmsjlk -7-15 w: wwwwwwwwwwwwrwwwwwww -2-5 s: lscsssqsn -16-17 n: nnnnnnnnnnnnnnnnznnn -4-5 g: ggggggg -2-3 w: mfdw -4-5 r: rfrqh -3-7 f: vfpfbzf -8-9 j: jjjjjjjcbj -10-13 p: pppppzpppppppp -8-10 t: tntbgchftpttttttfttt -4-7 r: rlrbsmhnrqrbxrnlrm -13-17 m: vkmmmdhfkmtmgmxhk -9-11 t: ttttttttttt -16-17 g: gggggmgggfgggggsggvg -5-7 w: wpffgdw -3-7 r: rrzklzbmrrr -2-3 l: tllcqnlwfvlfmcgssg -3-4 q: qqqp -3-7 x: xnxxxzcxrqwx -7-18 s: shssssfwssssssksmss -1-4 r: rrrrmbc -2-6 t: tttdmsmtg -3-5 h: tmhbh -4-15 c: ccccccccccccccccr -8-10 v: vvvkvvvhvk -3-6 r: rsmzcrhqnxljrnnd -2-3 s: msss -10-18 w: wwwwwwwwwwwwwwwwwnw -11-13 j: hmwdjqjhjbfdrhj -5-17 x: hxpnccxhwlsxxdmxxd -4-5 t: ttznj -6-7 l: llllllqll -1-3 q: qsqnhqm -4-6 t: tdtttthc -16-17 x: xxxxkxxxxxlmxxvxfx -7-11 r: prtrxrprrrrr -5-7 j: mjjqjjg -3-8 l: rnllnklplllllllll -10-15 p: pppppppppdppppp -2-6 g: grgggx -3-4 s: ssqss -1-4 t: tttq -6-9 w: fxvvndkmwlskw -11-12 c: cccccccccccp -4-9 b: bbblbbbbbbbbbb -2-3 g: hggnbw -17-20 x: xxxpxxxxxxhxxxxxfxxx -1-2 f: bpvf -3-5 j: wjbfjw -13-19 m: srmmmmmmmmfhmgmmmqs -10-16 c: cccgcczcccccccbcfcct -11-15 b: bzpqpffbfqslknb -2-5 t: stnztmvjg -3-9 h: hqxhxxhhwh -2-4 r: rvrz -2-3 p: pppk -7-8 s: sskssjdss -5-9 x: xzvjjkmqzthpht -12-13 p: pstcvcjlnwsqphwnsr -3-15 p: lnfhbvnpmfztbqppcf -14-18 l: lllljllllllllllgld -4-5 g: gctggxhgpxkx -7-8 q: qqqqqqrdq -10-13 c: ccccccccccccc -4-9 s: sssnssskwsbfssssss -10-12 g: zgpgghbggjqgggkggjg -3-18 m: mmmmmmmmmmmmmmmmmkmm -1-3 z: jzzzz -1-4 k: fqqwmd -4-8 r: wzbrhxrw -2-13 x: fzvhrqwcrjjzxprnxlk -9-10 q: qqjqqqhqqr -4-10 g: mnlggbkdhrgtndk -4-19 w: wksmppsqrpppfkdzlrg -6-7 k: kkkkkxwkk -15-18 t: tttttttttttttthtttt -8-13 k: kkkkzkkvkkkktkkk -1-5 j: jjlqrwsjzkjbl -6-9 m: gmmmdmmmbmmdxmg -4-5 r: gdbfmxnrmc -3-4 h: rhhhh -2-8 n: nnnnnnnln -4-9 x: fxgwflwxblgnwxv -3-6 x: xmkxxvxxs -1-15 g: jgggggpgggggggpg -2-7 n: nwnnnnnn -2-4 r: hrwcr -5-8 x: tbbtxltxdsftztx -3-11 r: rzrwrdbqkhrbldrgph -2-10 j: jljxrjjxjv -17-18 b: bbbbbbwbbbbbbcbbtb -10-11 w: wwwjwwwwwrw -1-2 h: qbhh -2-3 r: rvjr -10-13 b: bfbbbjxbbjbbwblc -2-4 j: qjdt -4-5 j: jjjjjjbfjj -11-14 d: pssdgpplqjdzxr -4-8 x: zxgxfxjhjxgv -6-7 g: gdnhggz -3-14 f: fbfffsjffffffgfffff -2-7 f: qtxmpvfscrbgxfq -6-8 w: wwwwwlqwwswww -2-9 g: gbnwwncws -1-4 t: ttbctt -3-4 g: gggbl -5-8 h: hhhhhhhhh -9-16 n: nnnnnnnnnnnnnnnnn -3-4 x: xxxxxx -3-4 l: psgl -4-7 p: pppntst -4-13 m: mvdmnfnnpxjtmgnwgc -9-15 p: pprtppppwnphlhf -7-10 v: vlvvbvqtvp -11-15 k: jmckdsmvzptdslkkjqf -2-3 p: cwkf -8-9 r: rrrrmrrhhrr -7-8 h: vhhhhhhjh -4-5 z: zzhznzk -10-13 n: qnnnksnsnvnnnnt -1-4 m: jmmmmm -5-8 w: jpcmlxtwzvhww -10-12 k: kkkkkkkkkkkkk -11-14 g: ggggggrgmgggnhgggg -1-5 z: zzzwz -2-4 x: xxxxxxx -6-14 c: cccccvccccccckc -11-12 z: zzzkzzbzzcvz -13-18 p: pppppppppppppppppxpp -9-14 c: tcnphlfkczmcpc -7-8 n: wnzmjcnn -7-11 p: ppspppmdppp -2-6 w: wdwwwww -2-4 w: qzvw -8-9 j: njbvchssj -2-7 b: fnbbbnp -3-4 c: ccqv -1-5 x: xxqxdxx -3-9 w: wzwptwtwwwswbqmk -17-18 x: xxhplchxxxxxxxxxgm -4-5 g: fsggvmg -1-12 w: lwwwwwwwwwwwwwww -3-4 b: kbnvg -2-7 t: ztttmfftttrtttt -2-3 n: wqvnsn -1-6 z: qfddndzzg -15-17 z: nfzxdmgdvjzzpqdjt -1-5 g: mggglgggg -5-13 x: xxxxgxxxxxxxrxxb -12-13 x: xxxxxxxxxxxcx -5-6 r: prrvrrrrh -13-14 h: hhhhhhhlhhhhmz -8-10 j: jjjjjjnlbjhjzjljj -1-7 w: wwwwvwkwwb -4-5 h: hpshh -2-12 f: vhptghgvhqsf -16-17 w: wwwwwwwwwwwwwswzww -16-19 x: jltfxxfgkkxnnxjkrxz -3-13 s: ssfpvsssshssrxss -4-9 q: qsqqrqqqqjkqqkqv -9-11 h: djhvttnrjzh -2-3 j: jjjz -3-7 j: jtjqgmj -4-8 p: ppnpcpppspgpc -9-13 s: sssskslspdsnss -6-10 m: mxzlmmmpvgm -10-11 c: cccccccccwnc -6-8 f: klkqkthgzfbb -7-9 t: tttttttmx -2-13 r: nrlmjrhxwnjsrwfx -12-13 x: xthxxwpxsdxmj -3-11 r: nqgznrmqhcm -3-4 c: rqcxmgc -12-14 f: ffffffffrdfjffff -14-15 d: vdddxdddddddddddd -4-8 m: mmmcmkmmmmmkh -3-4 g: ggcggsm -7-10 p: pppppphppw -11-17 f: fffftfxbffffffffrff -1-18 f: ffffffffffffffffffff -4-6 x: mxnxkx -3-7 g: ggrlrmhggl -1-2 b: pbblqxtlztwcbt -4-5 c: ccccz -1-4 k: kqkhkkkk -9-12 v: vtvvgvvxvvvvv -3-4 g: ncgbnrvdbrm -9-12 t: tttttttttttttttt -14-17 c: crncccqdsjcclcxcmdw -8-10 h: hvhpghvhnfhhh -4-12 p: ppplpppppplnpppp -4-5 l: lrlllllnlllq -3-14 p: ppnppppppppppcpppppp -2-5 v: vmvvbv -6-7 v: vcvvvqvvvvvjvv -4-5 l: llllhl -5-12 h: hjhphkxhkcqh -6-7 f: fbskrlff -4-5 k: rkfnrk -1-4 q: tqqkqkqqcxq -6-7 p: pppppxp -1-2 f: fnfffffffffw -5-18 p: ppfpppppppppppppppp -1-5 d: dwndd -8-9 h: hhhhhhhhh -3-6 l: llllllllll -9-10 r: gvhwsfbckr -7-16 h: hhhhhhhhhhhhhhhhh -1-2 j: tjjlj -5-9 b: tsvwbmbvbk -1-8 r: vrrkbsrrrrkrrcrr -1-5 b: hbbbbbs -7-8 j: zgjwjcmnjjjljnvjjgj -11-15 z: zqzzzxvzzdmzzzzz -2-13 q: tqqnzjjxvcsvqksl -6-10 f: fqqczfhfmf -2-14 v: vcvvvvvvvvvvvvvv -1-5 c: kgcdcckbc -3-5 r: rrdrr -15-16 f: ffffffffffffffmbf -10-11 s: ssssssssssssxssnss -9-10 j: jjwjjjjjtkj -4-5 v: vfdvv -2-13 z: znkpztzzzzzzznlwzz -3-4 r: lrrm -15-16 n: nnnnnnnnnnnnnnsnn -6-12 n: nxnnxnnnpnnnnvn -4-8 q: lqsqdcqq -15-16 x: xxxxxxxxxmxxxxxtxrx -6-17 h: hhhhhhhhhhhhpjhhh -11-15 c: cccccjccccpcccc -11-12 r: rrmrhvzgrtrd -3-7 b: bwmbbblb -8-13 v: zlvhjhjhtwtkbxqqw -6-9 p: pppppfpppppk -2-5 r: rcrrjr -14-19 f: gfbrfsffprfffhrffzm -3-6 r: rrsrrtr -4-6 j: jjzjbz -1-4 l: jllnl -6-7 z: zzzzzppzzzzzz -17-18 h: xjvnmlhhnlxltrdltgr -2-14 z: xhtwcgngdxlzhnv -3-5 v: xvvrvvv -11-14 v: dnhpmxjvmwrknvvpr -8-17 w: vnwpmbbpmcwwgpwlwh -4-5 f: fffjl -13-16 v: vzvgvvvwvvvvvvvjvvgk -8-9 n: nnnnnknnn -18-19 g: gjgggkggggkxgpgdglh -2-4 t: ptkzwltkr -17-18 q: qbmbqqlqqjqqhtqfqq -3-6 r: rfkmhfd -4-7 h: fghxhhhh -4-5 s: spsxv -3-5 k: dkpkzkl -7-10 n: nzpnnnlnnsnnn -3-4 h: hhnh -19-20 r: rsrkmcrhkqfrfdqmlvxq -9-10 m: mmhmwmwmmvm -3-9 j: jdjjjjbjwjjjjjjjjjj -1-2 s: mpsscts -3-4 g: nghj -6-10 x: xxxxxnxxxhxx -10-13 t: tttttttttqttvtttt -12-13 s: nssssssnsjrss -7-9 z: hjkzxlzrczhhmm -16-17 s: sssssssssssssssfpsss -4-5 x: xxxxx -2-4 c: bppcccfwqs -4-11 w: wwwwwwwwwwwkw -6-8 m: hdxjhkpjdjmrql -2-19 k: zkhcfxztkgltmqbdqxj -1-3 n: gnqnnnnnrnnn -11-13 f: ffffffffgfmfkf -1-5 z: lwzkxzjzv -11-12 m: mhlxvjmrcffn -2-7 z: cqhbjlbzh -3-18 k: kdkkkfbkgwkdknkkkzjk -9-10 b: bbrbbbkcbbbbbzll -5-6 l: llplkl -9-15 c: vcgcngchvkvjsgcf -3-6 q: qqqqqwq -9-11 k: kxkjrpkkckkkkkskk -9-18 k: hbkrrwvctstksttkwrvf -2-3 j: jtjj -1-5 n: nnnnln -1-6 b: jpmbbbbqkd -5-7 w: wwkwwws -3-10 m: pxpwzblsvrlsxjpvpslt -11-12 j: ljjjjkjjjcmc -10-11 q: qqqqqqqqqqq -2-7 h: hqqhkbh -7-9 l: lllclmfslldrlsl -8-9 h: jhtvlvrhhhkhh -3-6 k: kkjkkkk -1-5 l: vllllc -1-2 q: vqqq -5-6 q: mkqhjp -7-14 l: lllllllrdlmlckll -3-4 k: kxkkrjk -6-8 l: pslrqlbl -1-8 t: gtzthtct -5-7 d: lhxkdrddf -2-3 h: hmhh -7-9 p: ppppvppppvwp -9-11 q: jhzvqqbqfnql -9-14 r: rrrrrrrrtrrrglrrz -11-12 s: shsssssssssbs -1-7 t: qtttttt -11-16 s: spgsmwbrshhldcsvvx -5-6 l: lkmlll -2-9 h: vdchgpmlhvxzjcp -4-7 k: xfkkkkkckmkk -1-3 w: wwww -13-14 c: cccccccgcwcccxdc -12-15 w: wrlwwxwwwlwwwfwcw -5-13 m: jmtjqmvkmpxdmt -7-11 m: nxnkxfgzcpfm -8-10 m: mmmmbhmmmk -11-13 z: khcksspxzwmznpl -6-7 x: xkxxcxj -8-11 s: sssrssssssss -6-12 h: wkzcnspbtjwchv -8-9 b: bbbbbbbkb -7-8 d: hxsjqfddxdb -15-16 g: gggggwgggggggggg -8-10 q: gqqzqmltqqlkqwtzgfn -11-16 j: kjsjjjjjjjckjjjj -2-4 s: vbfqcmgssqb -16-17 r: rrrrrrrrrrrrrrrrr -7-11 d: ddhdddrddtdd -2-3 x: gvpcx -4-10 t: mbftjndbttv -13-14 j: zjjfmsgqtgwdhd -6-11 s: qlqhssgsbvnsts -9-15 t: ttdttttvttttqttvs -3-6 l: lcvlll -3-5 x: mpdsxrhqlbcdx -1-4 q: kjqz -2-3 p: pncmptpppgp -2-6 l: tlbvnpllvxlgxhn -14-17 q: lgdsvqxwmhdwzhjsq -13-19 m: mmmmzmmsmmmmmmmmmmc -4-5 x: xxxxzl -2-4 n: nnrn -8-9 n: nnnnnnnns -11-14 l: bpmrcbhslcmxxv -7-12 p: ppmpvpppppkpfpp -4-10 k: kkkqkkkkkfkkkkk -8-11 s: sssfssssnssssss -8-16 l: xklrjlllrqlxhrkl -2-12 r: rrcrqrprhcrrrvrph -14-15 h: jrhhjhhhhhhzhmp -8-12 m: mmmmmcmmvwmmx -2-9 f: ffdffffmfqpffffffff -8-12 x: xxxxxxxgxxxr -5-6 z: zzzzzxz -14-17 j: jjjjjjjjjjjjjzjjs -1-3 f: qfjmrf -6-7 t: ttbttdq -8-9 x: xfxxxxxxxxbxxxq -4-6 q: qqpgwqbr -5-12 l: lqzqrtgjmzml -5-7 w: wwwnwjwwfw -5-6 x: znxdtx -4-5 x: qqxhvmxxxxz -1-5 n: nnnnnn -2-5 s: gxsnj -5-7 s: gssjssszst -9-14 h: zjhrdpjwhkppdf -2-8 t: ftgttpcttxtvnttntjs -1-4 t: lttl -8-10 f: fffffffffrf -3-6 q: qvqxrhd -9-10 j: zrfxvmhgzcnkthzs -5-7 q: rqtqxqq -2-4 j: jxnj -7-8 c: fccccczkc -1-2 x: xktx -5-6 t: tttqkt -3-4 m: crbhwmq -5-7 d: ddddhdcd -3-4 w: wwcn -2-7 d: dmdddcd -6-7 l: llzllfg -5-8 l: llxllllllf -3-4 s: lspsb -1-6 k: kkkkkdk -6-12 x: ztxxmxxqxrxxxcxx -5-12 p: fpngpxprbqhprvj -1-11 k: kvkkkkkkkkkkkkkkk -2-11 x: qxxnxxxxxxxmxfxjsg -12-14 r: wzrrfztrbrrrztgrgrm -1-4 r: rbrlrj -14-16 d: dddddddddddddsddd -8-15 l: lzllmllclllljlll -7-8 l: qkgqklzzllqclqlfjl -1-4 g: vggggg -12-13 c: krbpskrctrvtc -3-6 t: btttttmkt -8-12 t: tttttttttttltttt -10-16 k: kkkkkqkkkkkkkkkw -5-6 d: ddldvkd -10-14 v: vvbrvvvkbvgvvr -4-13 v: vvvcvvqcvflrph -7-17 x: qxfxxxxvzslqzzbcx -9-10 g: ggggggggvjggggggggg -3-4 p: hpppkp -1-3 s: lstcssssv -4-6 n: nnnsnmnnn -2-6 k: kkkknkvkg -1-2 c: cccccc -8-13 h: hhhhhhhhhzhhv -10-13 h: hwvhhhhjhhthhhhlxh -15-18 p: pzpgpppppgpxpppbppnp -10-11 n: nffrjnmbnxj -5-9 l: lllldrllbzljsw -4-8 j: jjmjjjrjsjjjjj -2-9 v: vtzlvvdjv -2-3 g: ggcf -9-15 b: psxgbbcjbbhbntb -15-16 q: qqqqqqqqqqqqqqqz -11-12 c: dvgckwdtcccc -5-11 s: nskssssssfwb -2-7 p: pdfdnpqppzpp -3-7 d: dcdwnmdgnstt -13-14 w: hwdsrqmdmxhlkm -5-7 l: lzzdzlvrtgzllcn -5-6 t: bttttvt -6-8 c: crcczxckcc -5-7 g: gmvgggg -7-9 g: gggggglgqgg -5-6 t: ttttrt -2-3 g: sntggpm -4-6 m: flmmsm -9-12 w: wwwwwwwwwwjw -6-13 x: cfxrwlljbnzlb -13-16 v: wvfcgrgfvggjcbqv -7-8 n: sdnrsnhn -1-3 q: qqqrqmjfq -4-6 s: bzdsslss -1-5 f: rfffcf -4-5 s: sssss -4-5 h: xhkhhh -10-11 g: ggjdgpvggggx -9-10 v: vvvvvvvvjvvvjvwvv -3-7 b: fbbmzbblqzvfgpnrl -6-11 h: hhhhhlhhhhchhhhh -3-4 l: llllstmhwlchzd -3-7 t: xthsjgtcblcszn -2-17 f: kfjwdtmhzjzlvhpjf -2-5 b: rbtbg -9-15 z: mzzzcfzzzwvtzqgbzjzm -6-12 f: qgtzmktjffmfn -11-17 f: flcffsqwlfjvbcffb -5-6 r: gsdrrr -13-14 b: bbbbbbnbbbnbbbbbsb -2-9 b: bcbrvbvbbbzb -3-5 t: tkttft -6-7 v: vcvlqvdcvdh -7-13 w: wwwxwwwwhwwwlqwh -5-6 z: zkhpzzjtnkjzf -7-9 p: pppppppppppkppppp -4-7 p: spppfjmc -8-9 k: sxnkplwfz -4-5 r: clpgrr -7-8 m: mmmntmmmpmmmmrmpk -4-5 j: jxbjnxj -3-10 b: jwbclnqzdbnb -5-6 r: rxbxlnsmrrfr -3-4 f: fvfsbq -2-4 x: sxxxd -7-8 p: qpppppprpp -3-4 q: qqqq -6-8 n: njwgnqntnnn -6-10 z: zdzzgzzzzj -6-9 d: rwdlfdrtd -5-6 l: skllpxslll -5-7 d: dwdznhddttljdnvkdws -1-3 d: dhdc -1-11 s: sqgzsrrvgms -8-14 w: wvvwrwwlwwmwwwn -11-12 t: ttbttttttttttttt -17-18 f: lfffffmfffffffffkff -17-19 k: kkkmzkkkrkfspllkckb -4-7 f: fxfjtdfcxff -4-10 h: hhhrhhhhhhhhhh -6-7 p: ppkpppppp -5-10 c: hccpcgbkbctctp -5-11 l: llllvljllltlllplll -5-6 c: kcntkj -16-18 m: mmxmmmmmmmlmmmmwmmm -4-7 b: bbvbbrbb -6-7 n: dbrqnnn -3-4 h: hhhht -11-13 s: sssssssssvlwxsfj -3-9 g: zrsdrgrzgghxj -14-15 f: ffzgnqfrclzgxfffff -7-8 c: cccccccbc -5-8 s: ssssssssss -8-15 k: klkkkppksvdrknd -4-6 h: hfhhjljh -8-15 c: cxljcccvhpklxcr -3-7 h: kpnttrczt -14-16 p: tqxpdpddrwfxgjvc -12-15 j: cjjjmwjdbtpwjmjcg -11-17 n: nnnnnnnnnnnnnnnnln -1-8 s: sssswsms -9-10 w: wwwwwwwwww -6-16 v: gvfjvvvvvqlsbrvvd -3-8 q: rvfnrfvsmjk -4-6 w: wvpwtww -7-10 c: xcctfssplcdqrpqs -4-10 j: mjcjjwvjwjm -7-11 w: qmwjfrjpjkqww -6-18 r: qvvthtbxlkrnvqzvlf -10-12 f: ffglffjffffctfffff -6-7 x: xxhxtfpqxxx -9-10 t: tttttttxtt -3-10 j: cpqxwljhgjldfns -15-16 q: mqqnqfqjfqqqzqqt -4-12 f: fffffffffffvf -4-10 s: ssssssszst -1-6 x: xgxxxxxxkx -2-4 z: zzzb -11-13 j: jjjjjjjjjjjjv -1-2 j: hjjd -4-12 h: hhljhhxhxnhr -6-10 b: bbbbbkbbbv -7-8 m: mmmmmmgvmm -9-15 h: hhhhhhhhwhhhwhhh -1-2 g: gvglg -4-10 v: gkbvgntvrvv -9-10 p: mjpppbppnpjv -1-3 w: wwwtww -1-7 v: vmvsgjdfdpwtvqqfsh -10-12 c: ccccccccclmcccjc -13-14 g: gggggglgrggqzgggvbgg -1-6 p: mhptnp -10-11 n: nnnnnnjnnpxxn -2-5 l: tllcc -13-14 j: zbvlwljjgljwjj -10-11 p: ppppppvpppjppvp -12-18 c: cccccccccctdccccch -15-16 j: jjjjjjjjjjjjrjjj -5-8 t: gjkttztjt -5-9 k: kjkhwdvkk -5-7 p: pjvpppp -2-4 w: wwwhwlwwm -4-5 m: mmljm -6-15 b: rbbncbrvmdvbbqb -13-15 n: nnnrnnpdfnnqnnncnfnn -2-11 r: srfhtxczprbx -3-6 n: nnnnnh -15-16 v: vvvvvrvvvvvvvvvvr -7-8 m: jphmmmmft -4-6 p: pppjpvp -1-4 g: dggkgg -1-2 p: zppsp -6-7 b: bbbbbbbbbbb -3-4 x: vxsv -9-13 t: pqtqttttkxtghv -10-19 v: vvvvvvvvvvvvvvvvvvxv -6-13 z: wnmzkzzqftzmc -6-13 l: vklgsrjrkjpzlqll -3-6 h: mwhllh -1-8 l: blllllltl -3-9 v: glxlzpffvgvmb -2-5 s: sssstss -3-9 t: tfptcrhtlzqxcv -9-10 t: ttttttttttjttt -9-14 h: ktwphtsnkmlzwd -3-5 z: zzznz -2-3 t: twtt -3-5 f: ffffsf -17-18 w: wwhwwwwwvwwwwwwwnsw -3-13 w: wwwwwwwvhwwwwpwww -7-8 n: pjnxnnnntpwnbsjnnz -2-4 v: vvvjhvv -2-9 d: dmddwcpnqdddszpb -3-4 q: qqrqqh -1-2 d: czdd -1-4 d: xsdzrms -1-3 n: znxnnn -5-7 r: rrrrnrzrr -2-5 c: ccccxcc -6-7 c: nccccdc -1-4 s: bslsrvgjdfsgf -10-11 j: jcjnjjpjlhh -8-12 k: lzrvvhtkkpbkfwjzcmz -10-13 b: bbbbbbbrsnbbmb -2-9 s: hswtzhlss -6-7 j: cpnjjjf -11-15 p: pgppqsfjcpbnmqp -4-6 k: kkkfwq -10-11 c: rccccccccccccc -5-14 d: bmfppdgvccmbdqpx -7-8 v: vqnvvqvvvvjvv -7-16 f: ffffffkfffffffffff -14-15 r: nbdlfkrbcrxbcts -13-14 v: vvfvvvvvzgvvvvmvv -1-12 l: glwdllllpllltll -3-9 x: mnxpljmxnm -4-5 h: rjqhbxnvkc -13-14 z: zzjzkzzlcbzpjzzz -2-6 p: tnpppp -8-12 n: kpjfjwpnwlzqhwbz -2-15 q: jqkjkbzcwvvqbxq -2-3 l: llllll -15-19 l: llllllllllfllllllll -1-3 p: pkzkpsvdptz -1-8 f: fffffffvfrf -1-11 j: prdqjlhjdvljjvjmhnm -10-16 v: stshngzvzvvvnffv -10-11 m: nmmtmqmmmmb -4-9 t: nzttkfcvrnd -18-20 t: bbttltktrgtntgtzhtct -4-6 p: pppglp -7-13 g: vgrccggpbvxgl -5-7 l: lqllvld -7-10 w: wswwwwqrww -7-8 c: cncczcmlcmcx -1-9 d: ggjtdddcqcmpd -4-7 q: vdkqwnqkbsdqxwwth -5-6 s: ptjwxsz -7-14 v: vvgbvtvvxvzvwvvc -4-8 h: tmjhhrndwlh -6-7 w: wwjvswf -2-9 v: vvvvvvvmv -2-4 c: hcgc -2-3 x: xxxx -6-15 h: vnbhwhhwtzztrlh -13-16 k: kkknkkkkkkkkkkkrkk -2-7 b: nbfxslbqblbbbbbbl -9-11 k: kkrqkzkkkvkshqkbkkhk -9-13 j: qjjjjjjvmrjjjjjjjj -7-15 h: zhqhhhjbhdhhmhfn -3-5 t: vtvstkkttftttt -7-8 h: hdhhhqhhnnfqwhzhdlsx -16-19 k: kkkkkkkkkkkkkkkfkkd -3-4 f: qfjsxfnsfq -13-14 t: ttjftttcttttptttt -8-9 f: gjmfffgrq -9-10 m: mmpmmljmmmmmm -9-10 k: skttkrjkkb -3-4 k: kkgk -1-6 h: vhhhhvhh -11-19 z: zzhzzzzzzzzvznzzzzgz -9-11 z: mzzzzzzlzzbz -7-16 c: tpcwtwcbljrnztwrsdd -13-15 b: hnrbfgqwqwqhpnc -2-4 g: fgsdg -2-3 k: kklkkqkhklkkqb -8-9 g: tgrfdbvgfzqvsf -3-12 j: jmjvwqrpsjvc -4-10 v: zvhjvtpjgvvd -5-6 p: fgplzd -9-13 r: csngrmrxrqvhdwfkvns -7-13 q: qqqqqqqqqqqqqqqqq -11-16 l: cvlxgkdmltldzsplzz -8-11 z: znmhzzcpbzz -13-14 x: xxxxxxxxxxxxxhxx -11-20 c: qmhcvthqctdtscfcjcck -14-15 l: lnllllslwjlllll -5-7 p: qppptqm -1-7 f: chffvqfrdffbcmqf -8-14 h: hhhbhhrshhphhl -16-19 j: tgsjqjwjjjbcjtjjjjj -3-4 p: jzppdrzpkgcxdljgm -5-6 z: zzzzgzzz -3-8 t: nvzdttst -4-6 x: qfkznxh -9-18 d: ddddddddzddddddddl -11-17 x: xcxrxxxxxqzrxxxxxxx -3-4 l: lmll -10-13 f: fffffffffffffff -7-9 v: mccgvfvlh -9-10 m: ddmlmtmgmmgmprmbmpqm -5-10 v: vvvvjvvvvvvvvvx -3-10 v: dwxdfjhxgsznhzqsqnd -1-3 k: xkrkkkkkkmp -2-5 c: dcrscf -1-10 p: ppwpwppppppljtppr -3-7 r: rrrrrrbrdr -5-9 t: ttttjtttttttttt -4-5 w: wwwxr -6-11 f: rtwzsffhxplnwrzpwwj -3-9 c: klcdzfchcnxcccnccpc -3-4 g: mgnlg -1-5 f: kffgpffft -3-4 l: qlsvllnl -2-5 w: vwwwwwwrf -11-12 n: qcgnnznfnmnt -6-13 d: rbbzghqwwmrdkssgn -1-3 x: hdxnqxtphtmk -10-13 w: xwwwxwcwrfcwm -9-10 p: tpppfxvbppppgpnvfzcv -8-13 h: nhqhqhthmpmnhlch -11-13 z: hjkftzgzlfhjjh -9-10 t: tttthttpzt -2-8 g: vghggdbfggrfggrgggrt -11-16 g: gjzgfnggggsgggzh -6-10 r: srmjvrrrlrrrhrl -2-11 d: ddddddddbddddd -5-6 j: jjfjjjj -8-11 s: ssssssssssqssmssss -4-5 v: vvvhp -5-7 c: ccqxvklbc -8-9 q: qnqfgqvqqqdwzqmcq -3-5 q: zbqqq -6-9 g: kkgzgwpvgt -1-14 h: hhhhhhhhhhhhhhh -9-10 w: swwwwwwwjq -1-13 j: xjwjjljjjjdjjjjmjj -11-13 m: smmhmmcmmmkmdmmmmm -15-17 p: ppppppppppppppsps diff --git a/day3/input.txt b/day3/input.txt new file mode 100644 index 0000000..fac471c --- /dev/null +++ b/day3/input.txt @@ -0,0 +1,1000 @@ +010000010010 +011001011100 +110011011101 +110100100001 +000110011110 +110101000101 +100110111001 +110000000000 +100101100111 +001001011000 +010010011010 +001110111000 +001011111010 +110010111011 +001001010101 +111111011111 +101001001110 +011001000101 +001001111100 +000101110000 +101000101101 +101000011101 +011011001111 +010100011001 +100010001000 +100010111010 +000110101100 +100101010111 +110111101111 +011101111001 +111001110110 +101101000000 +010010111101 +111101111101 +010000001110 +000111111001 +010111100101 +011101100000 +001011011111 +111010000110 +111010001001 +000000010111 +001110011110 +100011100010 +111110010111 +100111111111 +100000011011 +000110111101 +010100010111 +110000011111 +011011011001 +101110011100 +010110001111 +101010111001 +100010011111 +011110110101 +001001101010 +000001001000 +101101011000 +101100001111 +000110000011 +011011100001 +010011100001 +101111011100 +110110100000 +010100010000 +110111111000 +110000110111 +011000000101 +001100011111 +111000011010 +000110101010 +011000101001 +110010100110 +100011111010 +011111000111 +010001100101 +101000011110 +011110010010 +111001100000 +000011011010 +000011111110 +101001001001 +100110010010 +110101010111 +010011111000 +010111001111 +010101001011 +111001010100 +011001011001 +110011110111 +110001001011 +101101001011 +000110010111 +110110111010 +001001100110 +111010011011 +001101000101 +100110001011 +010000101000 +101111001011 +110011011110 +011110111001 +101100000010 +010101101101 +010100001010 +000111010101 +001100000111 +010001010010 +001110000110 +000001010000 +100010000101 +010010101101 +011000110110 +111111100000 +111111010011 +010100010001 +101011000010 +111010101000 +011010001010 +111001000001 +111010010000 +101010101100 +101011110110 +110010100010 +011001001100 +100100111010 +101011011101 +110000001000 +010011011101 +000011011000 +101100101111 +110001111111 +110010010010 +001011011010 +110101111110 +110000111010 +011100011110 +110110001000 +000101000001 +100000010100 +110000110000 +110000101100 +101101000001 +110011101001 +101110010101 +110101110101 +000110100000 +100111101111 +111101011001 +110001111101 +100010100001 +101011111100 +000011010111 +110100110101 +111100010100 +011001110011 +010000110000 +110110011100 +001000110101 +010001111111 +001000000110 +101001001100 +011000001011 +101101010110 +101100011101 +001111001010 +110011000010 +010110111001 +000011000000 +011110100000 +111001001010 +110010100101 +110001101001 +001100110100 +110100011111 +100010001001 +100101001010 +110001011000 +111110011111 +001001000010 +101011001010 +110111111001 +101000000111 +000110000000 +110011110000 +111001011110 +110000010010 +010000101101 +010010100101 +011110010000 +010011100011 +111011100110 +001001000011 +110000010101 +010010010100 +110100100111 +111111010110 +111001110010 +110100010010 +011111111010 +110000011011 +001011000101 +101010000010 +000111100011 +010000110110 +111111011001 +100001001001 +111010011100 +001111110000 +010111111001 +101101000111 +100110011111 +000000100111 +111001111010 +100001110000 +010110101101 +111111111110 +101101011010 +101101000011 +010011001001 +111111000010 +011110000010 +101110101101 +110010110010 +101111100101 +101011100000 +000001110111 +010011011000 +010011000101 +101101010000 +111011110111 +100111111010 +000001110010 +010011110100 +011100001010 +101101001111 +011101100001 +001111001011 +000000010101 +000100110101 +100111001011 +000111011001 +100010011110 +111100100101 +011010111001 +011011111101 +010100111011 +010100110100 +101111111001 +110001100110 +110001110001 +010110100011 +111111110100 +011101000010 +011111101111 +001101001011 +001010100110 +111001010000 +111111100110 +001101001100 +010110011010 +011101111000 +101000010111 +100110010101 +011000111010 +011100010011 +110011000111 +001101010101 +101110001101 +000001011100 +001011100111 +111111010101 +000110010110 +100110000011 +011000111011 +111001011111 +100001010000 +001000100011 +011011111111 +111001001110 +000001010111 +001001001111 +001001100010 +111100101110 +101101100100 +000111101010 +011101101110 +101111001000 +010101110111 +100001011111 +011110011111 +010111010000 +101100110100 +001110011010 +000110001100 +110100101011 +101010001101 +010100001101 +111101011111 +011110111111 +110100001001 +101010000001 +110100011001 +100011011011 +101001111111 +111101100011 +100101001100 +000010101011 +101111010010 +100001110111 +010000011100 +011101110100 +100000001111 +100010110111 +101011110101 +000001000111 +010011110110 +000001000010 +101010010010 +100111110101 +000010001111 +001110000100 +110100001101 +011001001011 +000100110000 +000000011101 +011011100000 +011000001110 +000011101111 +110111010101 +011000001010 +010001111101 +011111011001 +001010111011 +010000011111 +001100000011 +110110001110 +100000000010 +010101011010 +101001100110 +000110011001 +110101001110 +100111000111 +111101101100 +100101111011 +011111100000 +000000101011 +001111011110 +101100100100 +010010110001 +000110110001 +011100111001 +001011000100 +111100001101 +100010001101 +010101010111 +001011101110 +110111101110 +000010000101 +101111001111 +101110000000 +010000011110 +101111000101 +000101001011 +011101000100 +001001111110 +001001111111 +100111000110 +000101110010 +011001001111 +100000111110 +101000001100 +001110010001 +010101011111 +010110001101 +000001000101 +010100111101 +100000101010 +111111111101 +011111001101 +111000001111 +100100001011 +101111010011 +111111110111 +100101111111 +100111100111 +011000110111 +011010000001 +010010110000 +111000110100 +111100010110 +100010100111 +011010111111 +110101100011 +001111100001 +101001011110 +100011110011 +100111110111 +100000100100 +111010110011 +001011100101 +101101010001 +111010111110 +000100010110 +111101001111 +101001001111 +000001010101 +111011101001 +010101111111 +111110101000 +101101111011 +010100001100 +101011110001 +010011101111 +011001001001 +001000001001 +100100011111 +010111100001 +111101011110 +110011110101 +100101000010 +100011110001 +000111111010 +010001011111 +011110011011 +100100000000 +011010011001 +010001100000 +011111001100 +101011000110 +110100101110 +101000111011 +011011001000 +100111000010 +101110011101 +000110000001 +001101001101 +100110011000 +011110111010 +110101010000 +100100111000 +011111000011 +111101010101 +100011101100 +000101110100 +010110101010 +101001111110 +011100010110 +001100010100 +010101110001 +100101110111 +110110100101 +100011000011 +100101000101 +001111110011 +101100010111 +001011110101 +001010110001 +110000010011 +100111100100 +100110110010 +101101110110 +000100101011 +101111100100 +011010110110 +101110010111 +000010101110 +001000000111 +100000110110 +001000000000 +111011101000 +111011011001 +000011111011 +000010101101 +011100111011 +000111010000 +000010110001 +011100110101 +001111110111 +000110100011 +010010001010 +010100000001 +111101101101 +010010010011 +110101100100 +011001010100 +100101110100 +110111011100 +110001110011 +011011001011 +110011011011 +101110101111 +111011000001 +110010001111 +000001000000 +101101111100 +000111000001 +000001011001 +110100110000 +110101011100 +010110011000 +010110010000 +010110000011 +010010010000 +100001100010 +011110110001 +111100101010 +101111111010 +101010110001 +000110011011 +010110000001 +001110111001 +000111101011 +010110110110 +000000000101 +000100010000 +110000010000 +001011011101 +011111000101 +001110101010 +101110110111 +110101110111 +101111000110 +110110000011 +110001110010 +011111101000 +010111100110 +011100111111 +111101100100 +110111110100 +100010010000 +110101000111 +111000000111 +111111011010 +100001111010 +010011011100 +011011100101 +110100101000 +001101110010 +000010110100 +110001010101 +100000011100 +101101100111 +011100111110 +111110001110 +010011101101 +001001001110 +011001100001 +001010010100 +010011010011 +001111100010 +001110001100 +011011010010 +010100000100 +011010010011 +101110011010 +001111101000 +001110011011 +000001111110 +110110101001 +101000000110 +000010000111 +100111111001 +110111001101 +110101101011 +110101100110 +101010110011 +000110100001 +110011100100 +001011101101 +011001001010 +100101100110 +010001100001 +110110001101 +100111011001 +100100111100 +000001111010 +110000111011 +110101100000 +001111111111 +010010100110 +001011111100 +111011000110 +101011010110 +001100011110 +010010010001 +011001110111 +110110110001 +010110100000 +110010011001 +001111000001 +100100010100 +000001111100 +000011101001 +101001110010 +011100000111 +001000011110 +010001111100 +010010110100 +110000111000 +100100001100 +010111100010 +010010001000 +100110001110 +111101110100 +011111011000 +001000110000 +000010100000 +010111000000 +001111101110 +000111110101 +001000001011 +111100001001 +011010011111 +011101101111 +000101011011 +000100000101 +001000010101 +000011000001 +011011010100 +011101100101 +000010110111 +001101000011 +000111001000 +001010000111 +111010101110 +100001111111 +101101110000 +010111011101 +111010111000 +011111000110 +011100001011 +101011100110 +011011100100 +010010000001 +001100101011 +000110111010 +010110011101 +010100101101 +100001100101 +011011010111 +111010111001 +111000001010 +100101011110 +001000011001 +101001101001 +011111000001 +010010111110 +101110110110 +111110010011 +100111011100 +001100100011 +100010101100 +111100001110 +010101101111 +010001000111 +110101111010 +011100100101 +110001010011 +000011100001 +001010111001 +011100011010 +010101010101 +001011000000 +101011110111 +011001110010 +010000001011 +000011100010 +010010000011 +011001111010 +000101011100 +111010000101 +001011111011 +011011101101 +100100110111 +111000101010 +100001110101 +101110010100 +000001100111 +101001101111 +100000001100 +110000101000 +110111011010 +010001001010 +000100000001 +110110101011 +011111101011 +101001100010 +000111100001 +010010001011 +101001010110 +011011100011 +000111011101 +100000100101 +000010100011 +111010001011 +111110111111 +101000111000 +110100100011 +010001110010 +001000010000 +111101011011 +110100011011 +010101100110 +010001101111 +001111011111 +101111110110 +011011101111 +000010101111 +000000110011 +011011000111 +010001000110 +010111101111 +110101011111 +001001000111 +011011001110 +100111110110 +111100100001 +111010100010 +010010000010 +000111110111 +111101000100 +000011110011 +111000101111 +110010011111 +000001101001 +001110101001 +011111101110 +110111010010 +011100110010 +100011000111 +000000010011 +011011111100 +011110010101 +110111101011 +011001111101 +010101010110 +011110011001 +111100011100 +011001010001 +000110110101 +000111010010 +101011101011 +101010100000 +011101011001 +001110111111 +011011010110 +110111100001 +100011111011 +001010011101 +111001101101 +011100001000 +011010011100 +100111010011 +000010010110 +010110010001 +111010010110 +111111110101 +100011000101 +011010001001 +111010001010 +000100000110 +011010001000 +100110101001 +010111111011 +010111100011 +011101010100 +101000011001 +101001110111 +111001010101 +100110111111 +111010110110 +100000011000 +110010100001 +001110011111 +010001011010 +011100100011 +010111011110 +100110110100 +111000001000 +110110101000 +000000001111 +010111101010 +000100000100 +111000110010 +011111110011 +001100100001 +010100000111 +111010100111 +010001101110 +101111110010 +011111000100 +101100111110 +010111101100 +011110111000 +110001000100 +011101000111 +011011101000 +000100100110 +100110100110 +000000001011 +010101001111 +110001000001 +100011010011 +101000100011 +011011010011 +100010001110 +100111101001 +101111111111 +111010011001 +011000010100 +110101011101 +100110101011 +010000011001 +010011011001 +010101000101 +010100011111 +100111001000 +111110100011 +000110010010 +000000010010 +101110001100 +111010000011 +100001001000 +000011010101 +000100011000 +001111111100 +011110101000 +101111011111 +100000111011 +101001100011 +001001100100 +000100010100 +010111101101 +101001111010 +011000101011 +111011010010 +011001101001 +011101010110 +011011110011 +010010101010 +001111010100 +100000010110 +001101000111 +000010101010 +110010001001 +011001111100 +000100001000 +010111001011 +101111100111 +100111100011 +100001010101 +100111011011 +100101000110 +011010100110 +100011101110 +111010110010 +010000100000 +100100110110 +011001101101 +011111100100 +101100101101 +101010110100 +101001000111 +110100010100 +011101001000 +101110101100 +111100010001 +001101011101 +111111110110 +101110001011 +001100101111 +110000001010 +110011001000 +011100000110 +011001101000 +001100001011 +111000111011 +111100000111 +010000000001 +000101011111 +001000101110 +101101101011 +111111110010 +111000001110 +110101111100 +101100010011 +010011110111 +100100010111 +111001101001 +101000001011 +110001110111 +100011111100 +000101011110 +011000101000 +001010011110 +100111111110 +100000111010 +001111010101 +011111010100 +001101101100 +010011111001 +001010101100 +001110111101 +000101010000 +100101101011 +010100101010 +000000001001 +010011000100 +010001000100 +110101100101 +110011011111 +100001010111 +111111011000 +010111111100 +111000101000 +101011101100 +111111011100 +001110110100 +000010100010 +111101110001 +101011000000 +101101000101 +110000000100 +110111111101 +101110100110 +111011000000 +001011010000 +100100101001 +111110101010 +111011110011 +111000000011 +000101101001 +110100011100 +111101000000 +100000100001 +010110001011 +001100111011 +110000100010 +111001010111 +100100001111 +110111111110 +010111000101 +110000010111 +100011010000 +101010110111 +011100101110 +001110001000 +110011100001 +100101001110 +110110110110 +101110001001 +011011001001 +110000101101 +001000001101 +001000000010 +110110010000 +011110001100 +100001011101 +000001010100 +010100111110 +101110111111 +101010101110 +001100010000 +100000001011 +010011101100 +101011011001 +111100000000 +011011110001 +001110001110 +010100100101 +111011101100 +011110101101 +010110100010 +101010001111 +110110000101 +101000110110 +101101001110 +111111101111 +001001110010 +001001011010 +111100100110 +000101010011 +100100001000 +110111010000 +010010001111 +000000100101 +001101110100 +101010110010 +011110010111 +100011001110 +111011010011 +110011111001 +110100100100 +110101001000 +110001111011 +010110001100 +011110111100 +010100000101 \ No newline at end of file diff --git a/day3/program.js b/day3/program.js new file mode 100644 index 0000000..a1e0658 --- /dev/null +++ b/day3/program.js @@ -0,0 +1,64 @@ +export default function Day(data) { + const bitCount = bitValues(data); + part1(data, bitCount); + part2(data, bitCount); +} + +const part1 = (instructions, count) => { + let gamma = ""; + let epsilon = ""; + + for (const row in count) { + gamma += count[row]["0"] > count[row]["1"] ? "0" : "1"; + epsilon += count[row]["0"] > count[row]["1"] ? "1" : "0"; + } + + console.log("part 1", gamma, epsilon, parseInt(gamma, 2) * parseInt(epsilon, 2)); +}; + +const part2 = (instructions, count) => { + function removeBasedOnBitPosition(rows, bitPosition, value) { + return rows.filter((row) => row.substr(bitPosition, 1) !== value); + } + + function removeFromArray(rows, invert) { + let result; + for (const bitRow in count) { + count = bitValues(rows); + + const bit = count[bitRow]; + let check = bit["0"] > bit["1"]; + if (invert) check = !check; + + rows = removeBasedOnBitPosition(rows, parseInt(bitRow), check ? "0" : "1"); + + if (rows.length === 1) { + result = rows[0]; + break; + } + } + return result; + } + + const oxygen = removeFromArray(instructions, false); + const co2 = removeFromArray(instructions, true); + + console.log("part 2", oxygen, co2, parseInt(oxygen, 2) * parseInt(co2, 2)); +}; + +const bitValues = (instructions) => { + let count = {}; + + for (const binary of instructions) { + const nums = binary.split(""); + + nums.forEach((element, i) => { + if (!count.hasOwnProperty(i)) { + count[i] = { 0: 0, 1: 0 }; + } + count[i][element]++; + }); + } + + return count; +}; diff --git a/helper.js b/helper.js new file mode 100644 index 0000000..77d3fbe --- /dev/null +++ b/helper.js @@ -0,0 +1,15 @@ +import fs from "fs"; + +export default async function loadData(day) { + const data = await fs.readFileSync(`./${day}/input.txt`, "utf-8"); + return data.split("\n"); +} + +export async function fileExists(filename) { + try { + const result = await fs.existsSync(filename); + return result; + } catch (err) { + return false; + } +} diff --git a/index.js b/index.js new file mode 100644 index 0000000..8d9011a --- /dev/null +++ b/index.js @@ -0,0 +1,30 @@ +import loadData, { fileExists } from "./helper.js"; + +if (process.argv[2]) { + try { + const dayName = `day${process.argv[2]}`; + const filename = `./${dayName}/program.js`; + + if (await fileExists(filename)) { + console.log("found", filename); + const data = await loadData(dayName); + const { default: Day } = await import(filename); + + console.time("Day Execution"); + Day(data); + console.timeEnd("Day Execution"); + } else { + console.log("The provided day does not exist or is not yet implemented"); + } + } catch (e) { + console.log(e); + error(); + } +} else { + error(); + process.exit(1); +} + +function error() { + console.log('Please specify a day as a number like "node index.js 1"'); +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3835808 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "adventofcode", + "lockfileVersion": 2, + "requires": true, + "packages": {} +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..97fb847 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "adventofcode", + "version": "1.0.0", + "description": "Hi all!", + "main": "helper.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Topener/adventofcode.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/Topener/adventofcode/issues" + }, + "homepage": "https://github.com/Topener/adventofcode#readme", + "type": "module" +}