diff options
-rw-r--r-- | 2020/day-13/README.org | 253 | ||||
-rwxr-xr-x | 2020/day-13/day-13.raku | 35 | ||||
-rw-r--r-- | 2020/day-13/input | 2 | ||||
-rw-r--r-- | 2020/day-13/sample_input | 2 | ||||
-rw-r--r-- | 2021/day-01/README.org | 166 | ||||
-rw-r--r-- | 2021/day-01/day-01.raku | 23 | ||||
-rw-r--r-- | 2021/day-01/input | 2000 | ||||
-rw-r--r-- | 2022/day-01/day-01.raku | 7 | ||||
-rw-r--r-- | 2022/day-01/input | 2231 |
9 files changed, 4719 insertions, 0 deletions
diff --git a/2020/day-13/README.org b/2020/day-13/README.org new file mode 100644 index 0000000..50da16c --- /dev/null +++ b/2020/day-13/README.org @@ -0,0 +1,253 @@ +#+title: Day 13 - Shuttle Search +#+options: toc:1 +#+export_file_name: index +#+html_link_up: ../../index.html#2020 +#+setupfile: ~/.emacs.d/org-templates/level-3.org + +* Puzzle + +- This puzzle is taken from: https://adventofcode.com/2020/day/13 + +Your ferry can make it safely to a nearby port, but it won't get much +further. When you call to book another ship, you discover that no ships +embark from that port to your vacation island. You'll need to get from +the port to the nearest airport. + +Fortunately, a shuttle bus service is available to bring you from the +sea port to the airport! Each bus has an ID number that also indicates +how often the bus leaves for the airport. + +Bus schedules are defined based on a timestamp that measures the number +of minutes since some fixed reference point in the past. At timestamp 0, +every bus simultaneously departed from the sea port. After that, each +bus travels to the airport, then various other locations, and finally +returns to the sea port to repeat its journey forever. + +The time this loop takes a particular bus is also its ID number: the bus +with ID 5 departs from the sea port at timestamps 0, 5, 10, 15, and so +on. The bus with ID 11 departs at 0, 11, 22, 33, and so on. If you are +there when the bus departs, you can ride that bus to the airport! + +Your notes (your puzzle input) consist of two lines. The first line is +your estimate of the earliest timestamp you could depart on a bus. The +second line lists the bus IDs that are in service according to the +shuttle company; entries that show x must be out of service, so you +decide to ignore them. + +To save time once you arrive, your goal is to figure out the earliest +bus you can take to the airport. (There will be exactly one such bus.) + +For example, suppose you have the following notes: + +#+begin_src +939 +7,13,x,x,59,x,31,19 +#+end_src + +Here, the earliest timestamp you could depart is 939, and the bus IDs in +service are 7, 13, 59, 31, and 19. Near timestamp 939, these bus IDs +depart at the times marked D: + +#+begin_src +time bus 7 bus 13 bus 59 bus 31 bus 19 +929 . . . . . +930 . . . D . +931 D . . . D +932 . . . . . +933 . . . . . +934 . . . . . +935 . . . . . +936 . D . . . +937 . . . . . +938 D . . . . +939 . . . . . +940 . . . . . +941 . . . . . +942 . . . . . +943 . . . . . +944 . . D . . +945 D . . . . +946 . . . . . +947 . . . . . +948 . . . . . +949 . D . . . +#+end_src + +The earliest bus you could take is bus ID 59. It doesn't depart until +timestamp 944, so you would need to wait 944 - 939 = 5 minutes before it +departs. Multiplying the bus ID by the number of minutes you'd need to +wait gives 295. + +What is the ID of the earliest bus you can take to the airport +multiplied by the number of minutes you'll need to wait for that bus? + +** Part 2 + +The shuttle company is running a contest: one gold coin for anyone that +can find the earliest timestamp such that the first bus ID departs at +that time and each subsequent listed bus ID departs at that subsequent +minute. (The first line in your input is no longer relevant.) + +For example, suppose you have the same list of bus IDs as above: + +#+begin_src +7,13,x,x,59,x,31,19 +#+end_src + +An x in the schedule means there are no constraints on what bus IDs must +depart at that time. + +This means you are looking for the earliest timestamp (called t) such that: + +- Bus ID 7 departs at timestamp t. +- Bus ID 13 departs one minute after timestamp t. +- There are no requirements or restrictions on departures at two or + three minutes after timestamp t. +- Bus ID 59 departs four minutes after timestamp t. +- There are no requirements or restrictions on departures at five + minutes after timestamp t. +- Bus ID 31 departs six minutes after timestamp t. +- Bus ID 19 departs seven minutes after timestamp t. + +The only bus departures that matter are the listed bus IDs at their +specific offsets from t. Those bus IDs can depart at other times, and +other bus IDs can depart at those times. For example, in the list above, +because bus ID 19 must depart seven minutes after the timestamp at which +bus ID 7 departs, bus ID 7 will always also be departing with bus ID 19 +at seven minutes after timestamp t. + +In this example, the earliest timestamp at which this occurs is 1068781: + +#+begin_src +time bus 7 bus 13 bus 59 bus 31 bus 19 +1068773 . . . . . +1068774 D . . . . +1068775 . . . . . +1068776 . . . . . +1068777 . . . . . +1068778 . . . . . +1068779 . . . . . +1068780 . . . . . +1068781 D . . . . +1068782 . D . . . +1068783 . . . . . +1068784 . . . . . +1068785 . . D . . +1068786 . . . . . +1068787 . . . D . +1068788 D . . . D +1068789 . . . . . +1068790 . . . . . +1068791 . . . . . +1068792 . . . . . +1068793 . . . . . +1068794 . . . . . +1068795 D D . . . +1068796 . . . . . +1068797 . . . . . +#+end_src + +In the above example, bus ID 7 departs at timestamp 1068788 (seven +minutes after t). This is fine; the only requirement on that minute is +that bus ID 19 departs then, and it does. + +Here are some other examples: + +- The earliest timestamp that matches the list 17,x,13,19 is 3417. +- 67,7,59,61 first occurs at timestamp 754018. +- 67,x,7,59,61 first occurs at timestamp 779210. +- 67,7,x,59,61 first occurs at timestamp 1261476. +- 1789,37,47,1889 first occurs at timestamp 1202161486. + +However, with so many bus IDs in your list, surely the actual earliest +timestamp will be larger than 100000000000000! + +What is the earliest timestamp such that all of the listed bus IDs +depart at offsets matching their positions in the list? + +* Solution + +~$file~ holds the input file. ~@input~ holds the lines of the file. + +#+begin_src raku +unit sub MAIN( + IO() $file = "input" #= input file +); + +my @input = $file.IO.lines; +#+end_src + +~$start~ is the earliest timestamp we could depart at. ~@bus_ids~ holds all +the bus ids, since we don't need "x", we just take the integers. + +#+begin_src raku +my Int $start = @input[0].Int; +my Int @bus_ids = @input[1].split(",").grep(/\d+/)>>.Int; +#+end_src + +Looping over the timestamps, starting from ~$start~: We check if each bus +~$id~ is divisible by the current timestamp. If the current ~$id~ is +divisible by ~$stamp~, print the solution. + +#+begin_src raku +stamp: for $start .. Inf -> $stamp { + for @bus_ids -> $id { + next unless $stamp %% $id; + say "Part 1: " ~ $id * ($stamp - $start); + last stamp; + } +} +#+end_src + +** Part 2 + +For part 2, we don't need ~$start~ but just the ids & in this case the +index of ids matter so we keep the "x" ids. + +#+begin_src raku +my @bus_ids = @input[1].split(","); +#+end_src + +~$stamp~ holds the timestamp & ~$step~ holds the number of minutes we can +skip over. ~$step~ initially is set to first entry of ~@bus_ids~ because the +final ~$stamp~ has to be a multiple of this. If the first entry is "x" +then this will fail. + +#+begin_src raku +my Int $stamp = 0; +my Int $step = @bus_ids.first.Int; +#+end_src + +- [X] ~$stamp~ must be multiple of first entry. + +Now we loop over all the entries except the first one, we've already +cleared that condition. Entries with "x" are skipped. + +I believe going through the code with an example will make it easier to +understand. So we'll go through this code with the sample input: + +#+begin_src +7,13,x,x,59,x,31,19 +#+end_src + +~@bus_ids.kv[2..*]~ returns the key, value entries of ~13,x,x,59,x,31,19~. +~$idx~ holds the index & ~$id~ holds the bus id. Let's start from ~$idx~ being +1 & ~$id~ being 13. + +We'll go through the code line by line. The first line in the loop +checks if the entry is "x", if so then it skips the entry. In our case +~$id~ is 13 so it doesn't skip. + +Line 2 in the loop keeps on increasing ~$stamp~ by skipping over ~$step~ +stamps until ~$stamp + $idx~ is divisible by ~$id~, which is the required +condition. Then we once again increase ~$step~. + +#+begin_src raku +id: for @bus_ids.kv[2..*] -> $idx, $id { + next id if $id eq "x"; + $stamp += $step until ($stamp + $idx) %% $id; + $step lcm= $id; +} + +say "Part 2: " ~ $stamp; +#+end_src diff --git a/2020/day-13/day-13.raku b/2020/day-13/day-13.raku new file mode 100755 index 0000000..e870af6 --- /dev/null +++ b/2020/day-13/day-13.raku @@ -0,0 +1,35 @@ +#!/usr/bin/env raku + +unit sub MAIN( + IO() $file = "input" #= input file +); + +my @input = $file.IO.lines; + +{ + my Int $start = @input[0].Int; + my Int @bus_ids = @input[1].split(",").grep(/\d+/)>>.Int; + + stamp: for $start .. Inf -> $stamp { + for @bus_ids -> $id { + next unless $stamp %% $id; + say "Part 1: " ~ $id * ($stamp - $start); + last stamp; + } + } +} + +{ + my @bus_ids = @input[1].split(","); + + my Int $stamp = 0; + my Int $step = @bus_ids.first.Int; + + id: for @bus_ids.kv[2..*] -> $idx, $id { + next id if $id eq "x"; + $stamp += $step until ($stamp + $idx) %% $id; + $step lcm= $id; + } + + say "Part 2: " ~ $stamp; +} diff --git a/2020/day-13/input b/2020/day-13/input new file mode 100644 index 0000000..4a527f3 --- /dev/null +++ b/2020/day-13/input @@ -0,0 +1,2 @@ +1002460 +29,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,41,x,x,x,x,x,x,x,x,x,601,x,x,x,x,x,x,x,23,x,x,x,x,13,x,x,x,17,x,19,x,x,x,x,x,x,x,x,x,x,x,463,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,37 diff --git a/2020/day-13/sample_input b/2020/day-13/sample_input new file mode 100644 index 0000000..d76f619 --- /dev/null +++ b/2020/day-13/sample_input @@ -0,0 +1,2 @@ +939 +7,13,x,x,59,x,31,19 diff --git a/2021/day-01/README.org b/2021/day-01/README.org new file mode 100644 index 0000000..c1a4870 --- /dev/null +++ b/2021/day-01/README.org @@ -0,0 +1,166 @@ +#+title: Day 01 - Sonar Sweep +#+setupfile: ~/.emacs.d/org-templates/level-3.org +#+html_link_up: ../../index.html#2021 +#+options: toc:1 +#+export_file_name: index + +* Puzzle + +- This puzzle is taken from: https://adventofcode.com/2021/day/1 + +You're minding your own business on a ship at sea when the overboard +alarm goes off! You rush to see if you can help. Apparently, one of the +Elves tripped and accidentally sent the sleigh keys flying into the +ocean! + +Before you know it, you're inside a submarine the Elves keep ready for +situations like this. It's covered in Christmas lights (because of +course it is), and it even has an experimental antenna that should be +able to track the keys if you can boost its signal strength high enough; +there's a little meter that indicates the antenna's signal strength by +displaying 0-50 stars. + +Your instincts tell you that in order to save Christmas, you'll need to +get all fifty stars by December 25th. + +Collect stars by solving puzzles. Two puzzles will be made available on +each day in the Advent calendar; the second puzzle is unlocked when you +complete the first. Each puzzle grants one star. Good luck! + +As the submarine drops below the surface of the ocean, it automatically +performs a sonar sweep of the nearby sea floor. On a small screen, the +sonar sweep report (your puzzle input) appears: each line is a +measurement of the sea floor depth as the sweep looks further and +further away from the submarine. + +For example, suppose you had the following report: + +#+begin_src +199 +200 +208 +210 +200 +207 +240 +269 +260 +263 +#+end_src + +This report indicates that, scanning outward from the submarine, the +sonar sweep found depths of 199, 200, 208, 210, and so on. + +The first order of business is to figure out how quickly the depth +increases, just so you know what you're dealing with - you never know if +the keys will get carried into deeper water by an ocean current or a +fish or something. + +To do this, count the number of times a depth measurement increases from +the previous measurement. (There is no measurement before the first +measurement.) In the example above, the changes are as follows: + +#+begin_src +199 (N/A - no previous measurement) +200 (increased) +208 (increased) +210 (increased) +200 (decreased) +207 (increased) +240 (increased) +269 (increased) +260 (decreased) +263 (increased) +#+end_src + +In this example, there are 7 measurements that are larger than the +previous measurement. + +How many measurements are larger than the previous measurement? + +** Part 2 + +Considering every single measurement isn't as useful as you expected: +there's just too much noise in the data. + +Instead, consider sums of a three-measurement sliding window. Again +considering the above example: + +#+begin_src +199 A +200 A B +208 A B C +210 B C D +200 E C D +207 E F D +240 E F G +269 F G H +260 G H +263 H +#+end_src + +Start by comparing the first and second three-measurement windows. The +measurements in the first window are marked A (199, 200, 208); their sum +is 199 + 200 + 208 = 607. The second window is marked B (200, 208, 210); +its sum is 618. The sum of measurements in the second window is larger +than the sum of the first, so this first comparison increased. + +Your goal now is to count the number of times the sum of measurements in +this sliding window increases from the previous sum. So, compare A with +B, then compare B with C, then C with D, and so on. Stop when there +aren't enough measurements left to create a new three-measurement sum. + +In the above example, the sum of each three-measurement window is as +follows: + +#+begin_src +A: 607 (N/A - no previous sum) +B: 618 (increased) +C: 618 (no change) +D: 617 (decreased) +E: 647 (increased) +F: 716 (increased) +G: 769 (increased) +H: 792 (increased) +#+end_src + +In this example, there are 5 sums that are larger than the previous sum. + +Consider sums of a three-measurement sliding window. How many sums are +larger than the previous sum? + +* Solution + +Slurp all the input values by line and store them as integer: + +#+begin_src raku +my Int @inputs = "input".IO.lines>>.Int; +#+end_src + +Loop over the input elements and compare with previous value, +~$larger-than-previous~ stores the counter. It's pretty straightforward. + +#+begin_src raku +my Int $larger-than-previous = 0; + +for (^@inputs.elems).skip -> $idx { + $larger-than-previous++ if @inputs[$idx] > @inputs[$idx - 1]; +} + +put "Part 1: ", $larger-than-previous; +#+end_src + +** Part 2 + +Here, we compare the sum of current set (previous 3 inputs) to the +previous set. + +#+begin_src raku +my Int $larger-than-previous = 0; + +for (^@inputs.elems).skip(3) -> $idx { + $larger-than-previous++ if @inputs[$idx - 2 .. $idx].sum > @inputs[$idx - 3 .. $idx - 1].sum; +} + +put "Part 2: ", $larger-than-previous; +#+end_src diff --git a/2021/day-01/day-01.raku b/2021/day-01/day-01.raku new file mode 100644 index 0000000..ae77c28 --- /dev/null +++ b/2021/day-01/day-01.raku @@ -0,0 +1,23 @@ +#!/usr/bin/env raku + +my Int @inputs = "input".IO.lines>>.Int; + +{ + my Int $larger-than-previous = 0; + + for (^@inputs.elems).skip -> $idx { + $larger-than-previous++ if @inputs[$idx] > @inputs[$idx - 1]; + } + + put "Part 1: ", $larger-than-previous; +} + +{ + my Int $larger-than-previous = 0; + + for (^@inputs.elems).skip(3) -> $idx { + $larger-than-previous++ if @inputs[$idx - 2 .. $idx].sum > @inputs[$idx - 3 .. $idx - 1].sum; + } + + put "Part 2: ", $larger-than-previous; +} diff --git a/2021/day-01/input b/2021/day-01/input new file mode 100644 index 0000000..9bc1629 --- /dev/null +++ b/2021/day-01/input @@ -0,0 +1,2000 @@ +193 +195 +204 +208 +219 +230 +231 +233 +234 +241 +253 +260 +261 +265 +268 +279 +277 +297 +299 +300 +306 +308 +312 +313 +329 +349 +361 +362 +369 +371 +373 +378 +380 +382 +383 +382 +384 +385 +386 +388 +417 +419 +424 +429 +435 +438 +439 +454 +468 +498 +504 +510 +512 +514 +518 +526 +528 +533 +555 +561 +565 +585 +590 +617 +633 +635 +640 +641 +652 +653 +657 +659 +673 +690 +696 +690 +691 +712 +718 +708 +711 +723 +733 +734 +736 +739 +738 +739 +761 +764 +767 +768 +774 +779 +791 +797 +800 +804 +807 +810 +811 +810 +812 +814 +813 +817 +827 +824 +847 +848 +850 +852 +880 +882 +892 +896 +898 +899 +900 +906 +921 +933 +935 +937 +935 +937 +944 +951 +955 +963 +964 +979 +981 +985 +996 +997 +998 +1005 +1009 +1011 +1015 +1019 +1021 +1022 +1006 +1009 +1017 +1018 +1019 +1022 +1028 +1022 +1023 +1043 +1046 +1047 +1053 +1054 +1078 +1079 +1091 +1111 +1115 +1119 +1127 +1128 +1129 +1130 +1147 +1160 +1161 +1176 +1177 +1171 +1183 +1189 +1190 +1191 +1193 +1195 +1201 +1203 +1215 +1219 +1229 +1222 +1206 +1212 +1232 +1235 +1242 +1257 +1258 +1261 +1267 +1269 +1267 +1265 +1267 +1273 +1275 +1278 +1282 +1285 +1288 +1306 +1330 +1345 +1354 +1355 +1358 +1360 +1358 +1367 +1368 +1366 +1363 +1365 +1366 +1367 +1369 +1371 +1374 +1377 +1378 +1381 +1382 +1387 +1400 +1421 +1425 +1445 +1459 +1461 +1463 +1483 +1487 +1488 +1490 +1491 +1493 +1531 +1544 +1546 +1548 +1549 +1556 +1559 +1563 +1544 +1558 +1577 +1590 +1592 +1599 +1596 +1599 +1617 +1621 +1623 +1624 +1627 +1628 +1631 +1634 +1666 +1696 +1697 +1700 +1699 +1710 +1715 +1717 +1720 +1730 +1726 +1727 +1741 +1739 +1745 +1751 +1754 +1763 +1765 +1767 +1792 +1797 +1798 +1814 +1838 +1852 +1858 +1884 +1889 +1898 +1899 +1898 +1907 +1908 +1921 +1922 +1942 +1944 +1954 +1956 +1961 +1967 +1971 +1972 +1973 +1995 +2021 +2027 +2039 +2045 +2043 +2044 +2048 +2055 +2056 +2058 +2083 +2086 +2093 +2106 +2107 +2110 +2112 +2118 +2121 +2133 +2139 +2146 +2150 +2155 +2160 +2164 +2165 +2166 +2160 +2159 +2158 +2164 +2175 +2179 +2186 +2191 +2192 +2196 +2187 +2207 +2214 +2222 +2223 +2225 +2229 +2231 +2228 +2229 +2230 +2233 +2236 +2238 +2241 +2245 +2225 +2229 +2231 +2235 +2237 +2240 +2243 +2245 +2246 +2249 +2250 +2251 +2256 +2259 +2271 +2272 +2273 +2268 +2269 +2270 +2275 +2272 +2273 +2275 +2276 +2282 +2285 +2289 +2300 +2306 +2337 +2338 +2359 +2353 +2354 +2357 +2364 +2370 +2359 +2360 +2361 +2373 +2384 +2398 +2399 +2395 +2403 +2406 +2408 +2414 +2415 +2420 +2419 +2427 +2443 +2455 +2457 +2477 +2479 +2487 +2488 +2491 +2493 +2496 +2505 +2511 +2513 +2514 +2517 +2546 +2530 +2532 +2533 +2537 +2541 +2542 +2541 +2567 +2576 +2592 +2611 +2616 +2622 +2640 +2665 +2679 +2687 +2693 +2699 +2706 +2715 +2721 +2742 +2739 +2756 +2762 +2771 +2772 +2773 +2770 +2788 +2789 +2798 +2799 +2800 +2801 +2800 +2803 +2807 +2808 +2812 +2815 +2848 +2854 +2855 +2857 +2858 +2868 +2870 +2884 +2888 +2890 +2900 +2901 +2909 +2912 +2918 +2919 +2925 +2939 +2942 +2956 +2963 +2967 +2968 +2972 +2986 +2998 +3001 +3023 +3037 +3047 +3050 +3054 +3062 +3065 +3064 +3066 +3067 +3068 +3082 +3084 +3090 +3097 +3099 +3098 +3094 +3078 +3081 +3083 +3085 +3068 +3076 +3077 +3078 +3080 +3086 +3090 +3102 +3107 +3111 +3114 +3119 +3124 +3125 +3126 +3127 +3131 +3135 +3137 +3138 +3139 +3143 +3173 +3190 +3191 +3192 +3194 +3198 +3199 +3200 +3194 +3196 +3220 +3222 +3223 +3210 +3213 +3214 +3218 +3232 +3243 +3251 +3266 +3267 +3266 +3270 +3273 +3275 +3278 +3283 +3300 +3306 +3307 +3326 +3329 +3332 +3333 +3334 +3340 +3343 +3345 +3359 +3361 +3362 +3373 +3378 +3379 +3380 +3383 +3386 +3409 +3422 +3431 +3433 +3434 +3438 +3454 +3479 +3481 +3490 +3503 +3511 +3516 +3503 +3505 +3530 +3527 +3529 +3532 +3553 +3556 +3557 +3562 +3571 +3572 +3574 +3575 +3584 +3602 +3603 +3606 +3597 +3624 +3644 +3669 +3670 +3676 +3690 +3713 +3714 +3741 +3743 +3725 +3745 +3749 +3758 +3759 +3775 +3796 +3798 +3799 +3805 +3817 +3818 +3829 +3869 +3886 +3881 +3882 +3887 +3888 +3907 +3902 +3901 +3922 +3920 +3897 +3890 +3920 +3937 +3947 +3949 +3953 +3967 +3976 +3977 +3988 +3998 +3999 +4004 +4009 +3973 +3975 +3988 +3990 +3994 +4001 +4005 +4016 +4017 +4018 +4027 +4028 +4023 +4029 +4000 +4001 +4002 +4009 +4010 +4013 +4014 +4029 +4032 +4034 +4039 +4040 +4050 +4055 +4050 +4055 +4058 +4059 +4061 +4064 +4080 +4082 +4081 +4082 +4084 +4085 +4088 +4090 +4091 +4109 +4118 +4119 +4140 +4145 +4150 +4151 +4147 +4150 +4156 +4175 +4177 +4178 +4181 +4182 +4183 +4191 +4190 +4191 +4223 +4225 +4233 +4263 +4270 +4277 +4280 +4302 +4304 +4316 +4319 +4320 +4312 +4320 +4321 +4356 +4354 +4355 +4361 +4374 +4402 +4384 +4389 +4390 +4392 +4390 +4402 +4408 +4409 +4449 +4453 +4454 +4462 +4464 +4465 +4467 +4469 +4470 +4472 +4474 +4473 +4474 +4478 +4490 +4493 +4495 +4503 +4506 +4509 +4512 +4524 +4525 +4526 +4541 +4557 +4558 +4559 +4560 +4561 +4568 +4583 +4584 +4587 +4589 +4598 +4603 +4606 +4607 +4610 +4611 +4612 +4627 +4630 +4653 +4656 +4657 +4659 +4660 +4682 +4684 +4683 +4684 +4685 +4686 +4691 +4692 +4701 +4702 +4706 +4713 +4714 +4745 +4772 +4773 +4781 +4783 +4802 +4807 +4812 +4815 +4821 +4823 +4825 +4831 +4832 +4847 +4848 +4849 +4850 +4858 +4857 +4858 +4874 +4852 +4858 +4869 +4882 +4884 +4886 +4896 +4887 +4888 +4893 +4903 +4907 +4909 +4905 +4915 +4940 +4944 +4961 +4967 +4968 +4960 +4983 +4987 +4986 +4988 +4991 +4993 +4983 +4985 +4987 +4989 +4993 +4994 +4967 +4980 +4975 +4980 +4999 +5000 +5001 +5003 +5005 +5007 +5016 +5024 +5026 +5027 +5028 +5029 +5030 +5045 +5055 +5056 +5066 +5064 +5081 +5083 +5084 +5090 +5061 +5063 +5069 +5091 +5102 +5103 +5106 +5116 +5123 +5141 +5146 +5149 +5150 +5167 +5168 +5170 +5171 +5182 +5181 +5185 +5186 +5191 +5195 +5213 +5232 +5233 +5242 +5251 +5266 +5270 +5268 +5269 +5284 +5290 +5294 +5300 +5302 +5303 +5304 +5332 +5335 +5329 +5332 +5334 +5343 +5346 +5356 +5357 +5363 +5365 +5366 +5367 +5373 +5377 +5384 +5394 +5395 +5392 +5403 +5405 +5394 +5399 +5401 +5412 +5413 +5416 +5418 +5424 +5429 +5402 +5408 +5418 +5420 +5428 +5430 +5437 +5438 +5442 +5444 +5474 +5486 +5488 +5501 +5514 +5520 +5519 +5522 +5547 +5551 +5553 +5557 +5558 +5581 +5583 +5587 +5572 +5575 +5574 +5575 +5578 +5593 +5595 +5596 +5597 +5606 +5612 +5613 +5623 +5624 +5636 +5637 +5646 +5671 +5675 +5680 +5691 +5693 +5720 +5721 +5733 +5738 +5750 +5729 +5730 +5731 +5732 +5734 +5729 +5748 +5750 +5751 +5753 +5756 +5761 +5768 +5771 +5775 +5777 +5791 +5793 +5795 +5798 +5795 +5808 +5809 +5810 +5812 +5813 +5820 +5821 +5824 +5854 +5868 +5869 +5874 +5880 +5886 +5887 +5908 +5909 +5918 +5926 +5931 +5941 +5957 +5967 +5960 +5961 +5958 +5971 +5973 +5975 +5976 +5978 +5979 +5986 +5991 +5994 +5977 +5982 +5983 +5987 +5989 +6013 +6012 +6019 +6022 +6033 +6034 +6037 +6038 +6066 +6068 +6073 +6075 +6077 +6082 +6094 +6108 +6109 +6111 +6113 +6116 +6117 +6121 +6122 +6124 +6129 +6132 +6140 +6141 +6153 +6164 +6185 +6183 +6197 +6198 +6196 +6203 +6204 +6224 +6227 +6230 +6231 +6240 +6257 +6259 +6261 +6280 +6288 +6290 +6291 +6293 +6304 +6306 +6308 +6310 +6316 +6319 +6334 +6335 +6336 +6337 +6345 +6346 +6347 +6350 +6353 +6356 +6364 +6369 +6374 +6380 +6384 +6403 +6410 +6411 +6415 +6416 +6417 +6419 +6420 +6433 +6437 +6443 +6454 +6455 +6458 +6481 +6492 +6496 +6517 +6527 +6532 +6547 +6548 +6552 +6560 +6553 +6568 +6572 +6574 +6575 +6571 +6576 +6580 +6596 +6597 +6624 +6628 +6629 +6642 +6645 +6629 +6634 +6640 +6645 +6646 +6655 +6661 +6673 +6680 +6683 +6674 +6679 +6690 +6691 +6692 +6707 +6713 +6714 +6721 +6741 +6746 +6762 +6766 +6767 +6773 +6784 +6785 +6786 +6790 +6791 +6792 +6824 +6828 +6833 +6835 +6836 +6837 +6838 +6826 +6829 +6864 +6876 +6877 +6878 +6880 +6882 +6883 +6889 +6900 +6901 +6938 +6939 +6943 +6949 +6955 +6959 +6961 +6962 +6965 +6967 +6968 +6969 +6983 +6989 +6997 +6998 +7002 +6981 +6995 +6997 +7005 +7023 +7026 +7036 +7041 +7043 +7052 +7067 +7068 +7069 +7079 +7088 +7098 +7111 +7109 +7119 +7120 +7121 +7129 +7130 +7142 +7144 +7141 +7145 +7150 +7151 +7173 +7179 +7180 +7182 +7191 +7205 +7207 +7209 +7218 +7229 +7239 +7241 +7243 +7271 +7265 +7267 +7269 +7272 +7274 +7276 +7305 +7306 +7307 +7308 +7311 +7313 +7316 +7318 +7320 +7322 +7340 +7343 +7344 +7354 +7360 +7367 +7370 +7371 +7372 +7389 +7391 +7392 +7399 +7418 +7400 +7403 +7404 +7405 +7406 +7411 +7395 +7402 +7417 +7419 +7420 +7424 +7426 +7427 +7414 +7412 +7413 +7417 +7420 +7421 +7422 +7449 +7454 +7459 +7462 +7464 +7463 +7464 +7466 +7481 +7486 +7485 +7487 +7488 +7489 +7494 +7509 +7526 +7529 +7530 +7531 +7538 +7541 +7547 +7550 +7554 +7561 +7562 +7563 +7564 +7566 +7574 +7576 +7577 +7578 +7581 +7609 +7623 +7626 +7627 +7630 +7631 +7653 +7654 +7657 +7658 +7659 +7662 +7664 +7674 +7675 +7677 +7676 +7694 +7696 +7711 +7734 +7735 +7742 +7746 +7749 +7753 +7759 +7760 +7767 +7781 +7805 +7807 +7808 +7826 +7843 +7844 +7845 +7853 +7870 +7871 +7872 +7875 +7876 +7887 +7895 +7896 +7913 +7914 +7916 +7929 +7933 +7935 +7928 +7929 +7930 +7933 +7949 +7976 +7977 +7978 +7998 +7999 +8002 +8010 +8011 +8012 +8015 +8016 +8023 +8028 +8029 +8031 +8035 +8036 +8037 +8056 +8057 +8062 +8067 +8081 +8082 +8096 +8099 +8116 +8121 +8125 +8126 +8128 +8129 +8132 +8119 +8129 +8151 +8181 +8161 +8163 +8184 +8186 +8191 +8192 +8197 +8186 +8184 +8194 +8216 +8219 +8220 +8221 +8223 +8239 +8240 +8241 +8246 +8273 +8274 +8283 +8284 +8285 +8293 +8294 +8300 +8303 +8305 +8336 +8340 +8344 +8347 +8348 +8349 +8356 +8363 +8361 +8362 +8364 +8365 +8383 +8389 +8390 +8405 +8406 +8404 +8410 +8411 +8412 +8413 +8414 +8419 +8422 +8425 +8428 +8448 +8449 +8453 +8464 +8466 +8468 +8469 +8470 +8478 +8483 +8477 +8488 +8489 +8493 +8510 +8520 +8533 +8545 +8547 +8562 +8560 +8555 +8557 +8558 +8559 +8581 +8577 +8578 +8579 +8582 +8590 +8591 +8569 +8570 +8569 +8570 +8573 +8578 +8561 +8558 +8563 +8564 +8575 +8580 +8582 +8593 +8596 +8585 +8588 +8598 +8612 +8613 +8622 +8629 +8639 +8640 +8647 +8655 +8656 +8657 +8671 +8672 +8683 +8690 +8691 +8694 +8693 +8698 +8706 +8713 +8714 +8716 +8718 +8736 +8733 +8741 +8731 +8736 +8737 +8738 +8746 +8747 +8746 +8749 +8761 +8762 +8780 +8784 +8785 +8791 +8793 +8797 +8807 +8818 +8836 +8837 +8838 +8845 +8846 +8849 +8857 +8858 +8877 +8876 +8875 +8883 +8887 +8888 +8892 +8895 +8901 +8915 +8916 +8915 +8921 +8929 +8935 +8944 +8981 +8985 +8990 +8991 +9001 +8995 +8998 +9001 +9002 +9003 +9026 +9036 +9047 +9070 +9080 +9083 +9089 +9098 +9118 +9135 +9123 +9127 +9131 +9117 +9123 +9124 +9131 +9136 +9139 +9141 +9144 +9149 +9156 +9157 +9160 +9163 +9168 +9170 +9177 +9179 +9199 +9200 +9211 +9212 +9222 +9224 +9211 +9224 +9246 +9252 +9277 +9294 +9301 +9302 +9310 +9311 +9313 +9316 +9319 +9320 +9321 +9322 +9323 +9324 +9337 +9340 +9357 +9378 +9379 +9381 +9397 +9398 +9399 +9400 +9405 +9407 +9421 +9437 +9438 +9442 +9440 +9453 +9458 +9459 +9463 +9464 +9465 +9464 +9465 +9468 +9478 +9496 +9498 +9499 +9504 +9509 +9525 +9522 +9523 +9527 +9531 +9533 +9537 +9533 +9546 +9547 +9570 +9576 +9577 +9586 +9604 +9607 +9618 +9621 +9643 +9657 +9665 +9666 +9667 +9668 +9678 +9679 +9680 +9684 +9694 +9697 +9694 +9700 +9705 +9706 +9708 +9728 +9729 +9730 +9732 +9737 +9744 +9745 +9758 +9774 +9776 +9774 +9771 +9776 +9777 +9779 +9780 +9781 +9799 +9802 +9803 +9806 +9824 +9825 +9828 +9837 +9829 +9833 +9836 +9837 +9832 +9834 +9835 +9840 +9848 +9874 +9890 +9917 +9922 +9926 +9928 +9929 +9937 +9940 +9947 +9950 +9949 +9951 +9952 +9963 +9962 +9963 +9997 +10011 +10017 +10038 +10039 +10040 +10086 +10087 +10088 +10089 +10091 +10092 +10103 +10104 +10113 +10115 +10132 +10146 +10148 +10154 +10158 +10166 +10168 +10166 +10167 +10176 +10191 +10185 +10191 +10196 +10206 +10210 +10212 +10213 +10216 +10238 +10254 +10258 +10260 +10261 +10267 +10291 +10305 +10308 +10313 +10315 +10326 +10331 +10339 +10346 +10348 +10358 +10381 +10385 +10386 +10392 +10393 +10394 +10397 +10408 +10431 +10433 +10437 +10438 +10443 +10447 +10449 +10452 +10454 +10456 +10460 +10461 +10462 +10463 +10462 +10463 +10480 +10481 +10489 +10488 +10491 +10493 +10517 +10519 +10537 +10550 +10560 +10573 +10588 +10591 +10597 +10605 +10609 +10610 +10615 +10618 +10620 +10619 +10625 +10640 +10642 +10645 +10651 +10660 +10659 +10673 +10691 +10709 +10711 +10732 +10739 +10743 +10751 +10755 +10757 +10758 +10761 +10777 +10779 +10776 +10783 +10789 +10803 +10806 +10825 +10838 +10851 +10852 +10853 +10854 +10865 +10866 +10876 +10877 +10885 +10887 +10899 +10898 +10897 +10902 +10907 +10909 +10913 +10924 +10950 +10947 +10949 +10954 +10965 +10983 diff --git a/2022/day-01/day-01.raku b/2022/day-01/day-01.raku new file mode 100644 index 0000000..cbe8b92 --- /dev/null +++ b/2022/day-01/day-01.raku @@ -0,0 +1,7 @@ +#!/usr/bin/env raku + +# @calories records calories carried by each Elf, sorted. +my Int @calories = "input".IO.split("\n\n").map(*.lines.sum).sort; + +put "Part 1: " ~ @calories.tail; +put "Part 2: " ~ @calories.tail(3).sum; diff --git a/2022/day-01/input b/2022/day-01/input new file mode 100644 index 0000000..c624c99 --- /dev/null +++ b/2022/day-01/input @@ -0,0 +1,2231 @@ +8417 +8501 +5429 +2112 +6482 +7971 +9636 +4003 + +4697 +2941 +3275 +6060 +4879 +7158 +5066 +3196 +5780 +3143 +2510 +7073 + +3820 +6710 +4781 +6241 +3975 +6308 +5289 +6575 +2662 +4804 +5352 +4610 + +18980 +3731 +16643 + +6500 +2810 +13252 +5288 +2110 +12393 + +5354 +5521 +6015 +2501 +6067 +2465 +2201 +3864 +2661 +4078 +2399 +3212 +2831 +3268 +2726 + +4701 +4530 +1699 +3015 +3682 +2537 +4554 +2826 +1895 +2652 +4074 + +3650 +2113 +4750 +6639 +5177 +3823 +1529 +5671 +3679 +7061 + +1984 +3240 +7139 +1931 +6740 +5695 +6572 +3264 +2904 +7199 + +4982 +3483 +3358 +2762 +3983 +1341 +7420 +5830 +5709 +6140 +5363 +2636 + +8943 +9452 +14560 +11685 +9792 + +51549 + +4032 +3303 +6291 +2010 +1099 +4304 +3308 +3226 +7038 +5911 + +3627 +4414 +3217 +3388 +5294 +1914 +4938 +1120 +3825 +4163 +5549 +1712 +2589 +1550 + +3683 +5829 +3937 +6935 +8588 +2765 +9142 +6662 + +2440 +1029 +5550 +4674 +3176 +1791 +3867 +2779 +5259 +4676 +5868 +2371 +4557 +1058 + +5431 +7001 +1789 +7292 +2550 +6087 +6538 +3913 +6977 +2262 +5710 +2555 + +10586 +1560 +9521 +6677 +7222 +7567 +9516 + +2974 +4438 +5184 +1797 +3472 +3685 +4252 +3512 +6003 +3274 +6482 +5545 +6207 +3442 + +2542 +2128 +3556 +3399 +2355 +2355 +2887 +5069 +6026 +2508 +1716 +1556 +2295 +3955 + +25725 +15128 +7375 + +14056 +1829 +18860 + +55324 + +6072 +6692 +4264 +6261 +1588 +1143 +7373 +6603 +5488 +3320 +2545 +5954 + +18062 +29180 + +3677 +6522 +4883 +7097 +5284 +2549 + +48546 + +3552 +4460 +1059 +2662 +4123 +4032 +4430 +3578 +3441 +3895 +3487 +1717 +5564 +2195 +5687 + +3760 +3157 +2112 +5937 +5018 +4986 +1568 +7508 +2288 +4252 +4226 + +8943 +35829 + +3615 +4087 +16628 +9725 + +18133 +3552 +19658 +8840 + +5401 +2506 +2988 +4760 +5149 +2556 +1375 +2458 +1349 +6012 +3101 +1719 +4705 + +1915 +4351 +4834 +6064 +1864 +6366 +1081 +4066 +4200 +6982 +1148 +6685 + +6497 +19940 +5418 +19755 + +6763 +4697 +4844 +6105 +7080 +7110 +3403 +1635 +2373 +4737 +1538 +4517 + +55242 + +5390 +4892 +9004 +6322 +2309 + +14406 +2408 +3189 +13705 +15881 + +8001 +4336 +7789 +3403 +7771 +5339 +3603 +2882 +2789 +5457 + +5291 +1004 +4796 +5162 +3295 +5628 +6048 +8055 +2805 +2979 +6347 + +4342 +2131 +3900 +9516 +9941 +10085 +9855 +4946 + +3766 +12591 +6027 +7521 +2532 +2965 + +6640 +8130 +2235 +3616 +1513 +4982 +5757 +6450 +7833 +2535 + +11114 +9350 +5189 +7416 +2510 +12480 + +2161 +1329 +6055 +5304 +1213 +5987 +1021 +1484 +2736 +1594 +3897 +1298 +3701 +3500 +5264 + +1393 +8359 +7732 +1479 +1367 +9665 +4956 +8989 +2423 + +14947 +26722 + +4382 +1257 +4970 +3681 +4299 +2421 +3996 +4978 +3178 +5039 +3989 +5297 +1322 +1941 + +2901 +5088 +5876 +5770 +4000 +5408 +5932 +3787 +4428 +3649 +3000 +4528 +3172 +5852 +4803 + +3841 +6352 +7104 +3285 +8693 +7082 +8890 +10598 + +32634 + +5064 +4469 +2675 +5662 +1483 +5918 +3117 +4976 +3964 +2474 +5210 +1632 +4618 +2106 +3214 + +1940 +5559 +2138 +6436 +1860 +5369 +5147 +2794 +1714 +3409 +1892 +5806 +3899 +2305 + +4500 +2147 +4251 +4609 +3619 +2567 +5201 +3390 +1319 +4424 +3005 +1397 +1693 +4714 + +2415 +4424 +3809 +3615 +3269 +1986 +2018 +4848 +5122 +1968 +3075 +2470 +5922 +1937 +4125 + +6317 +6637 +4533 +5743 +4806 +3129 +1306 +3957 +4663 +7623 + +14487 + +34032 +11976 + +5839 +5692 +6716 +1473 +1572 +6622 +7735 +2335 +5670 +6461 +2705 + +5643 +1721 +3150 +6460 +5134 +1124 +3925 +1463 +1951 +6910 +6680 +3038 +2685 + +3205 +2335 +4418 +2358 +5683 +2334 +1910 +4780 +1315 +1613 +1523 +2882 + +3266 +12924 +8477 +7172 +13876 +9290 + +18737 +7661 +5950 + +61407 + +24968 +23181 + +4341 +5288 +9306 +10062 +9350 +4045 + +4607 +2565 +2507 +4183 +3101 +5356 +3384 +4707 +2040 +5622 +2513 +2429 +2496 +1069 + +3590 +5290 +5371 +6878 +6657 +8246 +4479 +4906 +3830 + +7894 +7018 +5222 +7556 +7754 +3433 +4862 +9010 +6891 + +6337 +21986 +2791 + +1075 +5278 +3373 +3820 +1277 +3217 +1349 +1758 +2934 +1298 +5885 +1544 +4560 +4384 +4804 + +6345 +1952 +1082 +5949 +3946 +5991 +6474 +6288 +4526 +5059 +6081 +1155 +1388 +5735 + +1166 +6023 +6465 +2215 +7056 +7369 +6983 +1051 +6578 +6131 +6334 +6491 + +4486 +5666 +5937 +5460 +2587 +1803 +3938 +1771 +4157 +5144 +2624 +4098 +5403 +2063 +2746 + +6953 +11646 +2940 +6280 +4667 +1413 + +5913 +2811 +1258 +5507 +6685 +1464 +3137 +6716 +4217 +3656 +6306 +4198 +4557 + +5846 +2427 +3635 +6365 +5987 +5964 +4458 +4119 +4522 +3972 +6216 +5551 +1705 + +2125 +5680 +1450 +1701 +5256 +4673 +5045 +5515 +1432 +3565 +3246 +6050 +5755 +3390 +5847 + +1655 +5405 +6132 +3714 +1627 +7477 +10344 +6058 + +4914 +4975 +4158 +2466 +5685 +2484 +3594 +1037 +3369 +1022 +3917 +3185 +5233 +5571 +5222 + +6996 +4804 +1923 +3688 +4808 +1448 +2836 +5346 +5266 +4603 +2173 +1082 + +5730 +9574 +5903 +6668 +5482 +5088 +8905 +5333 +7135 + +5377 +2192 +6250 +1581 +5354 +3088 +1125 +2676 +3780 +3977 +4634 +3810 +4168 + +3173 +4961 +1384 +5868 +4666 +2902 +7158 +8275 +5856 +6056 + +7098 +12466 +4255 +10181 +13726 +4866 + +1681 +1910 +5175 +4773 +7702 +5183 +5759 +2788 +2596 +5676 +5361 + +6560 +5352 +5182 +13627 +7612 +10355 + +4780 +1702 +5111 +1101 +6959 +4120 +5441 +4818 +8091 +6480 + +8332 +5999 +6744 +9027 +7948 +3470 +9144 +6675 +2996 + +6961 +19157 +1485 +19127 + +22926 + +17211 +14166 +1463 + +5074 +9836 +4387 +10138 +10072 +5791 +3683 +9806 + +5623 +3668 +4324 +9990 +4865 +1793 +10752 + +9739 +18699 +14526 +4157 + +2785 +1804 +4527 +4430 +3373 +10323 +6855 + +2075 +4828 +2026 +3909 +6410 +4035 +3709 +5177 +3259 +6033 +5534 +6097 +2578 + +2246 +6146 +5899 +1864 +2881 +4628 +3176 +5663 +3088 +3834 +2935 + +16262 +11795 +14098 +15140 +13228 + +4323 +8674 +5497 +8305 +6261 +7846 +2593 +10156 + +5309 +3112 +4563 +1434 +1107 +7130 +5727 +4950 +7466 +6218 +3641 + +6379 +1200 +2050 +6235 +4257 +2532 +3132 +6179 +4883 +6282 +6576 + +11097 +12482 +7593 +3300 +3342 +2184 + +1950 +2753 +4277 +8130 +5451 +7991 +4993 +7978 +8004 + +20042 +19430 +5442 + +7059 +6666 +5832 +6485 +2405 +2744 +4710 +1726 +1121 + +2277 +1842 +1575 +1955 +1906 +4176 +4114 +5040 +5552 +4857 +2775 +5033 +3488 +3971 +3550 + +11844 +9703 +6549 +7779 +9117 +1536 + +8861 +25738 + +3649 +10095 +4132 +1888 +6453 +7269 +5898 +9769 + +5465 +8855 +12706 +6698 +3456 +4949 + +3093 +8425 +8580 +8693 +1401 +6281 +8069 +7607 +6368 +7467 + +6885 +1469 +1315 +2335 +6669 +3226 +5261 +2477 +1931 +6691 +2575 +1377 +5029 + +5220 +4639 +5985 +1669 +1162 +4269 +6532 +4630 +4169 +3164 +6896 +6432 + +12705 +4248 +5011 +7544 +2040 +7767 + +60119 + +58181 + +69195 + +10643 +5605 +3433 +3275 +4741 +2858 +8151 +10582 + +4299 +10093 +12455 +2583 +2604 +11520 + +4609 +8245 +1989 +17043 + +4998 +8893 +3978 +4961 +2847 +8109 +9266 +1034 +4808 + +6593 +3208 +3966 +1649 +5952 +1961 +4517 +3911 +4239 +3255 +4144 + +3721 +2249 +3195 +1827 +3942 +2713 +4481 +2475 +3566 +2701 +2832 +2372 +5281 +3315 +6029 + +5817 +6495 +8621 +7101 +3936 +1675 +3309 +1873 +8737 +4558 + +6533 +4655 +4205 +6051 +2902 +2566 +2173 +1535 +5827 +2807 +6391 +7194 + +5844 +2233 +4210 +2293 +2529 +3081 +1524 +5844 +5931 +6456 +6427 +4873 +3195 + +3101 +3627 +9503 +1451 +9148 +1990 +2748 +5949 + +1357 + +4305 +4183 +8665 +9225 +5169 +8711 +7360 +4352 +8762 + +19297 +6700 +3922 +13161 + +7177 +5207 +12649 +10712 +3766 + +3197 +11717 +4128 +14139 + +5844 +4035 +9789 +5874 +6510 +6863 +9172 +3398 + +3289 +3003 +7463 +5109 +6382 +5082 +2587 +5094 +7545 +2487 +2585 + +15763 +18524 +4143 +8602 + +4828 +2314 +3592 +3742 +4802 +3369 +3590 +5778 +5439 +4261 +4063 +3117 +3004 +2803 +4503 + +3356 +1306 +6227 +5953 +1962 +1596 +1031 +6259 +1314 +5303 +4053 +6606 +6141 + +23367 +13468 + +7561 +3664 +10113 +11060 +7173 +6770 + +14496 +3114 +2958 +10451 +12975 + +2779 +8809 +7880 +9646 +5169 +11946 +10951 + +1808 +8038 +4003 +2639 +4307 +2437 +3374 +6114 +3179 +2414 +6346 + +3683 +4271 +5347 +4651 +4209 +3216 +4860 +5151 +3676 +3964 +5855 +5537 +2334 +2847 + +3036 +4491 +2992 +5222 +1007 +3398 +4412 +5978 +4514 +5111 +2173 +4115 +3297 +3917 +4087 + +1120 +9199 +13194 +8285 +12725 +2925 + +4647 +8917 +5082 +2858 +7782 +3193 +7282 +2432 +6432 + +8143 +1337 +7526 +4612 +3111 +2914 +2283 +7143 + +13219 +11724 +11762 +13753 +11229 +9784 + +2649 +8191 +6390 +2745 +7430 +6038 +7916 +7448 +2535 + +16115 +13575 +13440 +12313 +7022 + +3839 +5604 +3500 +1413 +4189 +2483 +4394 +4244 +5173 +4677 +2620 +3916 +2756 +3345 +5480 + +3136 +4946 +2793 +3039 +4646 +6070 +4631 +1187 +1349 +5338 +3411 +2576 +3330 + +1836 +11177 +12819 +12092 +11081 +5211 + +3380 +3522 +6853 +4943 +3560 +6687 +2925 +1849 +7189 +2430 +4195 +4027 + +17162 +17251 + +12148 +6285 +8465 +9842 +2740 +9321 + +5968 +1099 +5670 +12712 +4090 +10669 + +5599 +11408 +2321 +8643 +7657 +3127 + +5527 +5415 +3154 +7523 +7113 +7944 +1210 +4328 +2435 +7446 + +9572 +2600 +4927 +7038 +2863 +8806 +6209 +5458 +6332 + +14202 +11728 +4854 + +2445 +4571 +5676 +4766 +6356 +3013 +7160 +4432 +4641 +5337 +2949 +7099 + +5446 +5189 +2921 +4698 +4187 +2921 +3446 +4539 +3540 +5492 +2071 +1449 +1923 +4901 +5579 + +13333 +5770 +5180 +9001 +7376 +8291 + +3865 +4909 +3073 +1720 +1261 +5913 +1136 +2052 +5530 +5411 +1702 +1550 +2913 +5178 +2584 + +10717 +2353 +1830 +5310 +8508 +10132 +10255 + +9848 +11390 +1490 +8553 +4819 +2115 + +2023 +1214 +1606 +9515 +5918 +1391 + +32192 +31035 + +6595 +5614 +7624 +8271 +4408 +5528 +1851 +1879 +7449 +6260 + +6197 +7995 +9114 + +1713 +5615 +1103 +6443 +4641 +4952 +6313 +1337 +6825 +3202 +5031 +4031 +4673 + +17667 +14248 +18603 +7973 + +4832 +5010 +1017 +2983 +1808 +6429 +5847 +5974 +2629 +2190 +5018 +5594 +3316 +2445 + +8857 +1902 +6649 +5100 +2108 +2331 +7523 +9370 +2149 + +4877 +2080 +3225 +1529 +6630 +3562 +2262 +2460 +3366 +5855 +1527 +2721 +5946 + +32414 +14299 + +6015 +2017 +6133 +9382 +3482 +7670 +1090 +4911 +4220 + +4475 +5519 +2909 +1638 +5199 +3699 +3179 +1962 +4396 +1750 +2375 +5751 +3907 +2693 +3037 + +2510 +6869 +3477 +4511 +1178 +4193 +6442 +5839 +3640 +4681 +4547 +4390 +4146 + +4965 +3818 +1807 +1184 +2238 +5347 +3971 +5439 +5111 +6372 +2632 +2137 +1616 + +5784 +6903 +3123 +5558 +6147 +3532 +4366 +2303 +6913 +1180 +6775 +2658 +5388 + +3315 +4958 +3185 +2507 +4022 +3424 +1123 +3518 +5329 +5409 +5895 +4483 +5391 +3281 +1485 + +5753 +2212 +6587 +4668 +1712 +6688 +1846 +3009 +3829 +5361 +6819 +1247 + +3500 +23879 + +3471 +4339 +3831 +4004 +5783 +5540 +5242 +5588 +4065 +5878 +1615 +1441 +4345 +3932 +3752 + +4206 +5411 +8355 +5696 +1314 +1549 +8447 +10241 + +4882 +4973 +3042 +7802 +5574 +4666 +2738 +7655 +7766 + +2498 +2714 +2695 +4724 +4075 +5588 +6234 +5988 +5455 +4229 +4890 +3590 +1722 +5413 + +1034 +2896 +4742 +4024 +5667 +6076 +5041 +8378 +3271 +8737 + +1411 +23272 +6602 + +3363 +12044 +11777 +7395 +4856 +2881 +12001 + +2064 +4239 +2992 +6806 +6814 +3037 +3173 +3336 +5565 + +2053 +2518 +5120 +4318 +1240 +3674 +7302 +1160 +3537 +4288 +2983 + +5826 +5926 +7843 +2996 +6079 +7832 +2716 +8027 +1470 +8005 + +10435 +24340 +11044 + +7277 +4053 +1588 +2648 +5715 +3133 +5720 +6702 +7375 +2244 +7196 +2918 + +20699 +12028 + +11053 +11400 +3604 +7989 +7666 +7379 +10696 + +5916 +13989 + +6510 +4784 +2679 +11144 + +5017 +3999 +6453 +1013 +3002 +4568 +6255 +6327 +5108 +2654 +1390 +3828 +5913 +2765 + +1242 +8316 +3256 +1006 +6026 +10319 +3552 +6538 + +2266 +2011 +7466 +2302 +5729 +1468 +1527 +6297 +7443 +3490 +6348 + +2767 +5816 +5452 +2946 +3461 +1647 +5520 +5237 +3193 +6009 +5393 +5583 +2746 +4326 +3446 + +2147 +1913 +3254 +5992 +7458 +4791 +7670 +3815 +2950 +6429 +1796 + +17982 +7519 + +33743 + +2744 +8866 +15440 +10433 +15680 + +1710 +3609 +1849 +4343 +5780 +4180 +3584 +2376 +4885 +4627 +1885 +3348 +2099 +1006 +2550 + +22016 +29227 + +22422 +12606 +11998 + +5357 +2121 +2744 +4713 +6531 +5164 +5774 +3553 +4974 +2279 +3932 +2702 + +4518 +3189 +3337 +1722 +2096 +5583 +2532 +1486 +2548 +2643 +5666 +6102 +4889 +5184 + +4730 +6382 +3208 +6277 +2724 +5944 +2098 +5082 +1984 +5999 + +6747 +7644 +8933 +2013 +7112 +3608 +7377 +5398 +1166 + +9919 +6479 +7831 +6544 +5801 +10986 +10245 + +9314 +10790 +5728 +3835 +9597 +7245 + +12744 +1502 +11126 +8626 +13645 +8998 + +5883 +2823 +2589 +5695 +6506 +2769 +4070 +4731 +5193 +2890 +2243 + +5437 +6241 +1398 +3651 +7865 +1854 +4169 +2921 +5701 +2839 +2277 + +4279 +4987 +5933 +1476 +2572 +1320 +2304 +1148 +4617 +4571 +1202 +3799 +3033 +2079 +5217 + +4247 +3918 +7174 +7333 +2215 +8351 +1339 +7229 +5266 + +1357 +3298 +3348 +6580 +1364 +6996 +6527 +3579 +4631 +1355 +7165 +4424 + +19948 +18739 +15360 + +2666 +3271 +1581 +6748 +3957 +6221 +1543 +2058 +5185 +1264 +2211 +1826 + +9309 +5622 +9303 +2516 +12117 +4126 +2700 + +9949 +16352 +18404 + +3351 +10708 +10017 +2594 +4711 +1749 +9432 + +8877 +7738 +10940 +6554 +6358 + +4961 +7610 +1594 +5133 +5937 +2581 +5131 +4044 +9096 + +2157 +6653 +5601 +1394 +5724 +6487 +4100 +3519 +2273 +5199 +6924 +6953 +4903 + +26443 +31228 + +2953 +10062 +5321 +4145 +2668 +2525 +4886 +2965 |