aoc2022

Advent of Code 2022 solutions in Perl.
git clone git://git.samirparikh.com/aoc2022
Log | Files | Refs | README

commit 91457ebd8a6248533fadf2f611b699f4296f79df
Author: Samir Parikh <noreply@samirparikh.com>
Date:   Tue, 20 Dec 2022 22:17:02 +0000

initial commit and solve part 1 of day 1

Diffstat:
AREADME.md | 10++++++++++
Aday01/day01.pl | 24++++++++++++++++++++++++
Aday01/input | 2264+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aday01/test | 14++++++++++++++
4 files changed, 2312 insertions(+), 0 deletions(-)

diff --git a/README.md b/README.md @@ -0,0 +1,10 @@ +This repository contains my attempt to solve the 2022 edition of the [Advent of Code](https://adventofcode.com/2022) +challenge using Perl 5. + +Note: For this set of puzzles, I decided to read the entire input file into a scalar variable (i.e. slurp the file). +To do this, you'll see the following near the beginning of each file: + + chomp( my $input = do { local $/; <> } ); + +More information regarding this syntax can be found here: +https://www.perl.com/article/21/2013/4/21/Read-an-entire-file-into-a-string/ diff --git a/day01/day01.pl b/day01/day01.pl @@ -0,0 +1,24 @@ +#!/usr/local/bin/perl +# day 2022-01 + +use strict; +use warnings; +use v5.32; + +@ARGV = "input" unless @ARGV; +chomp( my $input = do { local $/; <> } ); + +my @items = split /\n/, $input; +my $max = 0; +my $current = 0; + +foreach my $item ( @items ) { + unless ( $item ) { + $max = $current if ( $current > $max ); + $current = 0; + } else { + $current += $item; + } +} + +say "part 1: ", $max; diff --git a/day01/input b/day01/input @@ -0,0 +1,2264 @@ +9686 +10178 +3375 +9638 +6318 +4978 +5988 +6712 + +10422 +3062 +2753 +3695 +1722 +8110 +6568 +7124 + +3162 +6117 +2560 +8788 +2413 +3719 +1052 +1349 +4780 +5178 + +24919 +15983 +18045 + +24872 +35761 + +20914 + +4701 +7592 +1014 +12219 +3794 +6893 + +6471 +5100 +4297 +8538 +3923 +8135 +2015 +2255 + +1631 +8016 +4371 +5797 +5252 +1487 +8289 +8886 +1149 + +8082 +8747 +4577 +3624 +4481 +7947 +2790 +9217 +4729 + +4069 +1728 +4093 +2978 +6582 +7897 +8643 +6644 +6473 +5476 + +2319 +22021 +15407 + +4522 +6382 +7089 +4432 +2795 +1003 +2831 +6318 +8082 +6085 + +6379 +3407 +1390 +2026 +2030 +5246 +6918 +4426 +6198 +6476 +5351 +1033 +1162 + +8071 +1526 +7680 +5507 +6398 +6183 +8175 +3282 +4522 + +5629 +3140 +8533 +6464 +3686 +2374 +2301 +5700 +3279 + +13663 +6031 +6803 +6393 +11160 +4072 + +4857 +1156 +5520 +7976 +7668 +1279 +1326 + +7711 +3945 +2583 +5502 +13777 + +34906 +15510 + +2588 +4153 +4506 +6765 +6541 +3058 +5648 +1128 +1968 +2492 +4147 +7017 + +1394 +3512 +8021 +9546 +2626 +9116 +2891 +2875 +7467 + +18630 + +19644 +32798 + +3971 +5752 +2806 +5887 +5795 +1287 +3304 +3597 +3474 +1179 +3770 +1015 +3592 +4485 +4764 + +7482 +2786 +3311 + +3192 +3483 +2424 +3037 +3110 +7110 +5647 +6269 +6561 +7272 +2554 +1036 + +6564 +3818 +3472 +1020 +1410 +5849 +2679 +4928 +3751 +5858 +4227 +5278 + +4117 +3263 +3692 +1978 +4588 +2585 +6214 +6494 +1778 +3568 +3864 +2868 +4305 +1430 + +1221 +1373 +1096 +5913 +3836 +5890 +3601 +4165 +3495 +1397 +4949 +1134 +6029 +5142 + +27593 +11384 + +2784 +1688 +3096 +3150 +4879 +4582 +1333 +1807 +2379 +5554 +3324 +5152 +5012 +2462 +1222 + +4859 +10400 +5079 +11803 +2503 +10827 +5426 + +5345 +8211 +1451 +4410 +8381 +4890 +7548 +7246 +1780 +3917 + +6854 +3240 +8375 +3079 +5972 +2835 +2674 +3492 +3796 + +6733 +6827 +10768 +10517 +4257 +3205 +7453 + +1099 +1739 +9012 +2371 +4084 +1693 +3029 +1434 + +5254 +11413 +7980 +4327 +8249 +9088 +3606 + +6987 +11807 +10066 +2892 +5783 + +2796 +23737 +10352 + +2634 + +49880 + +4685 +22996 +19146 + +28725 + +15169 +8027 +5352 +2138 +2120 + +6615 + +2024 +8972 +10861 +5491 +8987 +8435 +11850 + +3344 +2538 +6150 +8412 +1846 +4479 +2644 +5897 +5393 +5998 + +18876 +9663 +9689 +11058 + +6583 +11800 +7779 +2848 +2722 +4396 +7549 + +3246 +5003 +7862 +6912 +8904 +3942 +7496 +7132 +5370 + +12064 +7414 +9559 +5152 +7290 +9582 +5481 + +10086 +3167 +9372 + +11462 +4147 +5783 +9869 +6777 +4304 +7994 + +8294 +7105 +6757 +7863 +3160 +1528 +7169 +7838 +2268 +3947 + +4584 +2761 +1785 +8626 +5990 +2024 +6423 +3467 +2700 +8439 + +4345 +6322 +2099 +11273 +12175 +1463 + +10421 +12435 + +5558 +3558 +4218 +4032 +1163 +1627 +7457 +3703 +4028 +1023 +2037 +5726 + +6668 +17056 +6110 + +3542 +3056 +8182 +6347 +6062 +1489 +2602 +5081 +6673 +8375 + +10854 +30495 + +3402 +2945 +2982 +2379 +3173 +3456 +4373 +2120 +3383 +4479 +5662 +4288 +6776 + +4621 +5405 +2698 +3244 +4090 +6275 +5460 +3835 +4066 +3355 +4301 +5429 +2772 +2712 + +3836 +2729 +6662 +3756 +4596 +4783 +3636 +3965 +1593 +2152 +2658 +7456 + +5299 +5046 +1717 +3615 +5827 +1622 +6363 +1352 +2279 +5193 +2936 +3009 +6706 + +62000 + +6685 +2477 +2113 +5147 +4652 +5793 +4917 +7792 +6330 +5030 + +12537 +24802 + +7935 +8012 + +2421 +7653 +4554 +1956 +4607 +7395 +2884 +1969 +6443 +8245 + +6117 +5191 +4630 +1140 +6668 +5451 +6697 +4489 +5269 +2465 + +6837 +12023 +1789 +15035 + +8901 +3155 +10520 +7453 +8927 +2128 +3719 +2603 + +4407 +3576 +2621 +11197 +4048 +7417 +6378 + +26360 +30617 + +5540 +19475 +16907 +14236 + +12536 +28934 + +8992 +12942 +9843 +10281 + +12753 +7704 + +14617 +16937 + +6129 +2474 +1298 +11648 +3020 +13000 + +1105 +7814 +8488 +4284 +3278 +2762 +1956 +3020 +3604 +5909 + +8949 +32474 + +9354 +11532 +2977 +2575 +4038 +4165 +6043 + +16780 +21589 +15519 + +8929 +1176 +3057 +2567 +7937 +4959 +4256 +1722 +6570 + +2959 +5442 +4853 +1549 +1536 +5182 +3162 +3241 +5325 +2981 +4123 +5075 +4265 +3914 +1534 + +21076 +21413 +4121 + +2364 +3051 +15060 +15441 +5350 + +6444 +4119 +16142 + +12702 +1593 +10837 +3016 +12402 +7042 + +13897 +10933 +1898 +1192 +9621 +1669 + +3555 +4589 +4554 +5877 +2963 +5429 +2915 +2849 +2882 +4263 +2041 +3715 +3060 +2303 + +11964 +4040 +1263 +7289 +15158 + +5623 +2844 +5308 +3138 +1993 +3563 +6627 +3503 +3715 +4622 +6335 +5643 + +9204 +13679 +11665 +13069 +8239 + +3263 +3999 +3795 +6653 +9340 +2589 +4005 + +7500 +4295 +1968 +6505 +7489 +1744 +7166 +6015 +2376 + +9225 +15648 +9771 +6353 + +5602 +4032 +5956 +3389 +6191 +2664 +3316 +4315 +3835 +2812 +4567 +3807 +3900 +6049 + +9856 +15646 +16811 +9434 + +2608 +5821 +2961 +4460 +3216 +6185 +6432 +4535 +2637 +3924 +1974 +5768 +4971 + +7986 +11586 +10183 +8977 +2084 +2145 +9341 + +4685 +8276 +12887 +17836 + +9164 +2380 +6783 +3995 +7267 +1261 +4388 +4553 +1097 + +8223 +1915 +11132 +4659 +11049 +7510 + +4913 +8607 +16691 +9972 + +7210 +6436 +4538 +9051 +5474 +1160 +5078 +8171 +6253 + +16053 +7244 + +11209 +13125 +16289 + +18073 +12316 +7433 +18146 + +16372 +12640 +7592 +7330 +6436 + +15791 +4640 +8961 +2333 +4146 + +8804 +6092 +8411 +8919 +4059 +7108 +2972 +4028 +5195 + +13788 +3616 +19422 +7306 + +6851 +7067 +3876 +9144 +13656 +2327 + +1966 +2583 +1157 +2915 +6675 +3776 +1302 +6089 +2172 +3532 +2863 +3901 +1531 + +9831 +12160 +11410 +10388 + +1745 +3005 +8080 +5559 +6190 +2608 +7327 +2918 + +3396 +4608 +5926 +4771 +4039 +2174 +2121 +5335 +1336 +1675 +2359 +3973 +3239 +5151 +1931 + +1449 +1728 +4133 +6107 +2320 +1185 +4399 +3983 +2801 +3940 +6492 +5123 +4035 +3978 + +6109 +6364 +1026 +3149 +2741 +3875 +1984 +5286 +1888 +3023 +2625 +2827 +2957 +1806 + +30480 +13619 + +6289 +3501 +3339 +3547 +4583 +3975 +3044 +4120 +1519 +5909 +2056 + +6066 +2415 +3690 +8311 +4415 +5086 +2243 +7362 +5987 + +23114 +11625 +16362 + +1968 +4106 +1413 +3111 +7762 +5820 +5670 +5574 +6409 +5357 + +16940 +1118 +17725 +19352 + +4795 +4181 +2637 +2630 +2424 +1778 +5931 +4683 +2394 +5086 +4831 +3332 +2698 +3486 +4771 + +2149 +4199 +2711 +6010 +1129 +1231 +6029 +3041 +1062 +3989 +4288 +4097 +3866 +2487 +2904 + +5703 +3132 +3141 +3076 +2213 +1286 +1553 +4281 +5310 +3129 +1686 +4290 +1523 +2253 + +3393 +5859 +9430 +7600 +3773 +6009 +6501 + +2112 +3375 +4744 +2051 +7859 +5263 +7294 +4412 +3787 +3697 +3237 + +6377 +5061 +6859 +13460 +14181 + +5001 +7058 +5323 +3147 +5016 +7995 +8072 +1337 +4375 +5257 +3975 + +3785 +3750 +3530 +3048 +2905 +2034 +6828 +1797 +6657 +3317 +2701 +2805 +5267 + +3394 +3691 +6713 +2117 +2962 +1057 +5815 +4045 +1400 +1865 + +18465 + +3921 +1777 +7151 +1041 +5017 +7230 +1976 +4454 +1604 +7350 +5884 +1003 + +2624 +1309 +6631 +9455 +6512 +7719 +7483 +4181 +5094 + +2569 +9911 +14251 +8292 +12541 + +2439 +1330 +1018 +5115 +4820 +5319 +3124 +3076 +1693 +2628 +2344 +3158 +1718 +4605 + +4199 +3446 +4622 +6428 +5002 +1766 +2452 +5311 +6527 +2064 +4993 +2024 +4693 + +1280 +3349 +4131 +5665 +2363 +3945 +5484 +3679 +1486 +3646 +3623 +4184 +3000 +1048 +2655 + +14131 +3553 +13678 +1207 + +5857 +6149 +3312 +4757 +2563 +1790 +1221 +5509 +3380 +1359 +2480 +4558 +6280 +6369 + +1547 +3878 +5568 +1225 +1380 +2200 +5147 +2039 +6309 +2982 +3495 +2152 +5235 + +16640 +20034 +9548 + +1753 +3165 +1652 +4443 +1216 +4491 +1942 +1762 +1107 +4286 +3966 +1075 +4525 +4613 +1913 + +1009 +2116 +7166 +3405 +7214 +6239 +4865 +5685 +7262 +3953 +6155 +1625 + +11721 +15346 +2328 + +1874 +1749 +5597 +1262 +6198 +4768 +5577 +4281 +2519 +4929 +5366 +3798 +4735 +5911 + +5955 +9870 +1445 +9985 +2525 +3789 +9850 +8345 + +4573 +1388 +5113 +5476 +4662 +1491 +4951 +4466 +3762 +1945 +4543 +1206 +1464 +2592 +3641 + +1335 +1373 +2210 +4502 +6682 +3789 +3132 +6931 +4406 +2178 + +3208 +2932 +4708 +7096 +3292 +1181 +7684 +7182 +4935 + +33589 + +3334 +1623 +14592 +12083 +8779 + +2894 +5672 +4799 +5270 +4984 +2968 +4691 +5946 +4794 +3982 +1050 +3329 +1705 +2157 +5903 + +6094 +4559 +3567 +6528 +10766 +6235 +11374 + +3073 +5101 +11776 +9277 +6191 +4145 +3796 + +7420 +7909 +4665 +4147 +3076 +7307 +7796 +5377 +3060 +6959 + +7330 + +35781 + +21425 +21583 +5018 + +4184 +1379 +6016 +3474 +6024 +4306 +3615 +1908 +2850 +1928 +3089 + +16714 +5650 +15944 +11173 + +9343 +16875 +12773 +14484 + +10430 +10942 +11646 +3054 +7681 +9377 +9747 + +1306 +6064 +9684 +2441 +5045 +4444 +5012 +6192 +1975 + +1344 +5398 +5433 +7606 +8077 +7391 +1909 +2436 +6590 +1780 +7328 + +1965 +1722 +6019 +2211 +5501 +6079 +2874 +2073 +6101 +1485 +1281 +2820 +2924 +1053 + +4243 +1623 +2406 +5790 +3669 +4752 +5178 +6264 +6380 +2595 +3841 +1924 + +1396 +4822 +5173 +4566 +5742 +4373 +3061 +3710 +3165 +2752 +4663 +3674 +1988 +5783 +4851 + +4241 +7995 +10301 +9600 +3012 +2005 +7728 +2592 + +4258 +4068 +3590 +4519 +4699 +4420 +1850 +2672 +1702 +1419 +5779 +2548 +5901 +6088 + +65317 + +4907 +1843 +6719 +2996 +8461 +1214 +7159 +3834 +9003 + +49655 + +3092 +5048 +1627 +1180 +3552 +4004 +3769 +1024 +4362 +5281 +5272 +3328 +3477 +5851 +1852 + +13904 +7402 +7268 +3770 +2397 +10475 + +8476 +1976 +6163 +8095 +1462 +4641 +3808 +3857 + +3335 +6780 +2119 +5330 +7117 +7491 +3805 +8481 +6605 +7085 + +4322 +7670 +9443 +9057 +3985 +3627 +5998 +4438 +1504 + +13151 +10965 +11166 +13415 + +5671 +8571 +11580 +7158 +9153 +5862 +5101 + +4456 +3654 +8081 +5430 +2761 +3354 +5363 +6253 +2655 +4659 + +1596 +2737 +8104 +8749 +3052 +5251 +2949 +1621 +7083 + +2651 +11140 +13548 +3706 +12111 + +10168 +12202 +22359 + +6858 +5062 + +13856 +10455 + +12441 +19040 + +6274 +9591 +6760 +4995 +6509 + +8503 +6463 +1391 +5937 +2652 +6222 +3700 +4437 +4223 + +1347 +5568 +3527 +2038 +7671 +2747 +2076 +5001 +6812 +6935 +4605 + +6064 +4289 +3615 +1534 +1503 +3969 +5012 +5882 +1072 +3045 +1108 +1100 +5537 +2296 +5210 + +2276 +5684 +8123 +10661 + +14356 +10192 +8724 +9007 +2580 + +4185 +1781 +4779 +2912 +2168 +1818 +2476 +4738 +4184 +4399 +2516 +5069 +4411 +1555 +4792 + +17014 + +32213 +4835 + +9759 +16225 + +13768 +12275 +12116 +5614 +13597 +11836 + +13759 +5359 +16706 +3223 + +5529 +8735 +2684 +7245 +4021 +6476 +4830 +4545 +4689 + +7538 + +2382 +11825 +7660 +12725 +8655 +6276 + +3726 +8819 +8277 +11877 +2680 +9393 +9534 + +5712 +4484 +3939 +6190 +12015 +8155 +3414 + +1744 +3387 +5549 +5161 +1944 +3018 +2892 +4872 +2058 +3465 +5410 +4294 +4460 +5671 +2677 + +3277 +5567 +1927 +4030 +2402 +6956 +1493 +2694 +2953 +4684 +1757 + +2412 +9606 +11353 +2517 +4728 +13835 + +8658 +3007 +3050 +7032 +10355 +7154 +2882 +1771 + +7005 +4228 +4094 +6651 +2666 +4580 +6731 +7665 +6497 +2146 +3836 + +49889 + +1694 +21826 +15682 + +4069 +11100 +14655 +13224 +4596 + +7669 +4609 +5102 +6077 +6909 +5199 +6616 +3888 +2759 +5067 +1215 + +1178 +1772 +6040 +6155 +7363 +2308 +1947 +2395 +1998 + +3637 +1397 +3793 +2486 +1535 +6323 +5601 +1122 +4774 +5946 +3911 +1983 +5110 +6123 + +4280 +3131 + +2074 +8575 +10967 +11051 +7926 + +5181 +5262 +9549 +4648 +5870 +10554 + +10006 +9886 +1787 +4121 +6732 +11668 +1701 + +9374 +10024 +4499 +19405 + +2653 +2184 +1682 +2239 +5008 +3214 +6107 +1386 +1746 +1625 +6576 +5311 +2448 + +2752 +1482 +2199 +1874 +6361 +1308 +2520 +5508 +7547 +2123 + +3589 +3732 +1867 +1000 +3740 +6457 +7409 +1310 +7995 +6470 + +3216 +3362 +1330 +7974 +7888 +7616 +5315 +6599 +4725 +8265 + +25525 +11728 +2872 + +15044 +2896 +9572 +10589 +4530 + +6439 +10037 +1455 +12711 +3160 +2979 + +2176 +6329 +3361 +6290 +1759 +5233 +3803 +2310 +5657 +4209 +4457 +1883 +3449 +1304 + +11140 +4322 +11612 +8569 +8463 +6798 +5517 + +4374 +6158 +5395 +2805 +1792 +3798 +6749 +4769 +6825 +6759 +6835 +4871 +1074 + +1474 +4540 +2518 +4116 +3756 +3306 +4666 +3344 +3742 +6019 +3442 +2869 +2045 +4736 +3950 + +6446 +7360 +1549 +8156 +1739 +1610 +2676 + +2168 +2396 +6164 +7025 +8787 +8097 +3409 +4574 +3966 + +3086 +2856 +5035 +5065 +5864 +1594 +7703 +6964 +7211 +7718 +1107 + +51004 + +4918 +1158 +2005 +4612 +7834 +1074 +9254 +5527 +1324 + +6855 +3281 +1711 +6762 +7458 +6741 +4422 +1410 +7470 +3944 +1893 + +9371 +15492 +19708 +12935 + +5733 +3862 +4820 +2177 +8633 +7626 +6625 +7092 +8201 +2674 + +49048 + +7618 +4063 +4934 +2443 +2170 +6858 +4485 +3340 +1799 +3106 + +8992 +6122 +2877 +9496 +2383 +7021 +4371 +8902 +5207 + +14001 +26749 + +15324 +23968 +19677 + +5335 +2824 +4423 +5694 +7382 +8340 +1838 +8489 +7044 +6785 + +3771 +2619 +2974 +9941 +8552 +5552 +3107 +2597 + +3505 +1425 +4302 +6794 +3867 +6186 +2169 +6833 +4437 +5529 +1621 +1454 +6758 + +4211 +2770 +3598 +2408 +5814 +1930 +4342 +1792 +6068 +3389 +2838 +2599 +3464 +4967 + +2326 +1344 +3774 +5442 +1575 +5559 +1918 +4675 +2672 +2538 +4055 +3083 +5036 +1558 +4674 + +2098 +15641 +1220 +5315 + +12642 +15560 +4074 +15919 + +21911 +9200 +10100 + +2645 +12965 + +8655 +8517 +7883 +6615 +2964 +6688 +1089 +4816 +6827 +1743 + +14801 + +7826 +6082 +5962 +6382 +5873 +9072 +6773 +7190 +3114 + +6448 +8620 +7630 +8340 +5270 +8082 +1467 +7973 +2886 + +1010 +4394 +3625 +1476 +4141 +5883 +7079 +3272 +6419 + +5456 +2482 +8364 +1530 +11974 +11305 +12132 + +2319 +6357 +6245 +3226 +3813 +5844 +4492 +4140 +3185 +4965 +5452 +1614 +1123 + diff --git a/day01/test b/day01/test @@ -0,0 +1,14 @@ +1000 +2000 +3000 + +4000 + +5000 +6000 + +7000 +8000 +9000 + +10000