diff --git a/1/depthcounter.hs b/1/depthcounter.hs new file mode 100644 index 0000000..c608871 --- /dev/null +++ b/1/depthcounter.hs @@ -0,0 +1,27 @@ +main = interact countTripleDepths + +countDepths :: String -> String +countDepths depths = + let parse x = map (read) (lines x) + in + show (depthCounter (parse depths)) ++ "\n" + +slide :: Int -> [a] -> [[a]] +slide _ [] = [] +slide len list = (take len list):(slide len xs) + where (x:xs) = list + +countTripleDepths :: String -> String +countTripleDepths depths = + let + parse x = map (read) (lines x) + deNoise x = map (sum) (slide 3 x) + in + show (depthCounter (deNoise (parse depths))) ++ "\n" + +depthCounter :: (Integral a) => [a] -> a +depthCounter [] = 0 +depthCounter [_] = 0 +depthCounter (x:xs) = if x < head xs + then 1 + depthCounter xs + else 0 + depthCounter xs diff --git a/1/input.txt b/1/input.txt new file mode 100644 index 0000000..2579bda --- /dev/null +++ b/1/input.txt @@ -0,0 +1,2000 @@ +149 +163 +165 +160 +179 +184 +186 +199 +207 +210 +211 +212 +228 +241 +242 +265 +269 +271 +287 +286 +295 +296 +293 +300 +301 +302 +304 +308 +320 +322 +321 +333 +350 +345 +348 +347 +351 +348 +349 +345 +353 +366 +376 +384 +387 +390 +391 +378 +382 +394 +409 +411 +415 +419 +424 +425 +427 +428 +436 +445 +446 +459 +464 +478 +479 +493 +492 +493 +482 +484 +491 +492 +497 +501 +506 +509 +521 +526 +527 +539 +546 +547 +551 +562 +567 +568 +573 +590 +591 +596 +612 +613 +618 +620 +593 +594 +596 +597 +596 +612 +616 +618 +620 +621 +622 +611 +612 +613 +610 +615 +616 +634 +647 +654 +655 +656 +657 +659 +676 +678 +675 +703 +715 +722 +738 +747 +760 +765 +771 +784 +789 +792 +769 +770 +773 +762 +772 +817 +823 +825 +864 +863 +849 +852 +862 +868 +893 +895 +896 +925 +946 +945 +946 +945 +964 +954 +962 +969 +976 +1004 +1007 +1015 +1029 +1037 +1043 +1048 +1070 +1080 +1100 +1097 +1094 +1102 +1099 +1098 +1099 +1096 +1097 +1117 +1123 +1124 +1125 +1127 +1119 +1121 +1137 +1173 +1174 +1179 +1181 +1200 +1204 +1175 +1179 +1180 +1189 +1194 +1195 +1197 +1199 +1206 +1200 +1208 +1211 +1213 +1214 +1229 +1230 +1271 +1278 +1279 +1282 +1288 +1285 +1291 +1290 +1294 +1297 +1299 +1300 +1320 +1324 +1323 +1328 +1329 +1330 +1331 +1334 +1337 +1311 +1313 +1314 +1320 +1323 +1318 +1323 +1331 +1339 +1340 +1328 +1334 +1336 +1342 +1343 +1350 +1357 +1359 +1377 +1378 +1384 +1368 +1369 +1371 +1380 +1360 +1349 +1374 +1373 +1376 +1372 +1382 +1384 +1391 +1393 +1399 +1403 +1404 +1419 +1427 +1425 +1454 +1455 +1458 +1459 +1479 +1484 +1485 +1487 +1492 +1497 +1499 +1496 +1503 +1528 +1543 +1535 +1546 +1547 +1549 +1546 +1547 +1549 +1550 +1553 +1581 +1583 +1598 +1616 +1618 +1640 +1638 +1655 +1686 +1685 +1671 +1674 +1680 +1673 +1675 +1676 +1673 +1674 +1679 +1681 +1689 +1701 +1702 +1708 +1722 +1723 +1727 +1739 +1742 +1743 +1756 +1759 +1763 +1767 +1768 +1772 +1771 +1775 +1783 +1784 +1794 +1796 +1815 +1811 +1812 +1822 +1820 +1836 +1825 +1828 +1826 +1827 +1832 +1844 +1847 +1854 +1855 +1857 +1864 +1854 +1869 +1868 +1867 +1868 +1872 +1875 +1876 +1880 +1874 +1875 +1876 +1877 +1881 +1882 +1897 +1898 +1903 +1904 +1906 +1904 +1911 +1908 +1909 +1930 +1929 +1928 +1948 +1958 +1963 +1964 +1967 +1971 +1960 +1958 +1968 +1969 +1972 +1973 +1974 +1980 +1981 +1992 +1993 +1999 +1998 +1997 +1996 +1997 +2008 +2007 +1987 +1991 +1992 +1998 +2006 +2007 +2014 +2017 +2022 +2027 +2017 +2020 +2048 +2049 +2050 +2054 +2055 +2067 +2072 +2089 +2075 +2076 +2077 +2078 +2085 +2086 +2088 +2091 +2086 +2094 +2102 +2103 +2105 +2107 +2109 +2111 +2124 +2125 +2127 +2130 +2131 +2133 +2136 +2147 +2148 +2153 +2152 +2158 +2157 +2164 +2165 +2167 +2166 +2200 +2201 +2200 +2206 +2207 +2197 +2208 +2209 +2211 +2217 +2235 +2236 +2243 +2233 +2226 +2238 +2244 +2237 +2232 +2229 +2233 +2242 +2239 +2240 +2241 +2242 +2247 +2248 +2260 +2276 +2273 +2275 +2301 +2317 +2340 +2341 +2328 +2332 +2326 +2322 +2323 +2330 +2334 +2351 +2352 +2360 +2370 +2371 +2370 +2377 +2378 +2381 +2392 +2406 +2385 +2392 +2397 +2395 +2393 +2397 +2395 +2414 +2418 +2424 +2429 +2431 +2455 +2456 +2468 +2478 +2483 +2485 +2484 +2485 +2486 +2475 +2484 +2493 +2494 +2513 +2519 +2529 +2530 +2535 +2537 +2555 +2540 +2541 +2539 +2533 +2534 +2543 +2548 +2551 +2557 +2561 +2563 +2565 +2600 +2601 +2595 +2594 +2609 +2613 +2587 +2591 +2598 +2604 +2564 +2568 +2570 +2576 +2575 +2577 +2595 +2602 +2605 +2613 +2615 +2606 +2601 +2600 +2598 +2599 +2601 +2603 +2617 +2623 +2625 +2626 +2638 +2641 +2642 +2636 +2637 +2630 +2617 +2619 +2616 +2615 +2624 +2633 +2635 +2663 +2666 +2668 +2671 +2672 +2675 +2685 +2686 +2697 +2702 +2704 +2723 +2724 +2729 +2716 +2718 +2727 +2731 +2770 +2761 +2778 +2800 +2801 +2798 +2799 +2800 +2801 +2798 +2794 +2795 +2835 +2836 +2845 +2848 +2858 +2873 +2874 +2892 +2906 +2898 +2927 +2933 +2936 +2940 +2948 +2950 +2945 +2947 +2957 +2949 +2950 +2951 +2957 +2959 +2960 +2962 +2978 +2982 +2983 +2986 +3000 +3002 +3004 +3005 +3002 +3009 +3022 +3009 +3002 +3003 +3022 +3037 +3040 +3041 +3042 +3044 +3045 +3049 +3053 +3057 +3060 +3061 +3059 +3060 +3070 +3071 +3072 +3075 +3076 +3081 +3084 +3081 +3080 +3086 +3098 +3099 +3100 +3105 +3107 +3113 +3121 +3126 +3131 +3136 +3145 +3150 +3153 +3154 +3156 +3157 +3165 +3154 +3155 +3156 +3169 +3176 +3191 +3188 +3190 +3197 +3199 +3221 +3254 +3262 +3263 +3259 +3258 +3259 +3267 +3266 +3268 +3263 +3268 +3269 +3291 +3295 +3294 +3326 +3327 +3335 +3327 +3343 +3346 +3369 +3368 +3372 +3375 +3379 +3386 +3395 +3396 +3397 +3409 +3412 +3416 +3418 +3419 +3418 +3417 +3414 +3424 +3425 +3430 +3431 +3433 +3434 +3435 +3421 +3422 +3424 +3425 +3416 +3429 +3423 +3432 +3444 +3451 +3468 +3469 +3468 +3470 +3471 +3472 +3473 +3471 +3483 +3486 +3495 +3496 +3501 +3505 +3496 +3497 +3507 +3512 +3515 +3519 +3523 +3524 +3525 +3524 +3549 +3551 +3525 +3526 +3534 +3536 +3542 +3545 +3548 +3527 +3529 +3528 +3553 +3555 +3560 +3561 +3580 +3582 +3579 +3582 +3586 +3584 +3588 +3564 +3572 +3568 +3567 +3565 +3583 +3575 +3579 +3581 +3589 +3605 +3613 +3615 +3617 +3643 +3645 +3652 +3654 +3653 +3654 +3659 +3656 +3659 +3653 +3651 +3654 +3657 +3675 +3677 +3679 +3707 +3710 +3717 +3755 +3758 +3759 +3761 +3766 +3768 +3759 +3761 +3762 +3790 +3791 +3793 +3797 +3784 +3785 +3786 +3787 +3790 +3792 +3784 +3789 +3792 +3795 +3789 +3790 +3797 +3783 +3795 +3792 +3801 +3804 +3806 +3810 +3808 +3813 +3793 +3797 +3802 +3810 +3822 +3825 +3830 +3839 +3838 +3837 +3838 +3839 +3840 +3841 +3842 +3862 +3870 +3871 +3886 +3887 +3890 +3882 +3890 +3884 +3885 +3907 +3914 +3926 +3934 +3935 +3944 +3954 +3946 +3951 +3954 +3957 +3958 +3970 +3981 +3988 +3985 +3988 +3989 +3982 +3978 +3979 +3980 +3981 +4001 +4002 +4011 +4016 +4021 +4026 +4024 +4027 +4043 +4044 +4062 +4066 +4069 +4067 +4087 +4099 +4097 +4091 +4093 +4090 +4088 +4094 +4100 +4108 +4109 +4105 +4121 +4138 +4141 +4144 +4145 +4154 +4153 +4156 +4157 +4153 +4151 +4157 +4161 +4162 +4163 +4165 +4162 +4171 +4170 +4177 +4192 +4202 +4203 +4204 +4213 +4217 +4218 +4220 +4221 +4222 +4228 +4258 +4259 +4261 +4262 +4263 +4267 +4269 +4277 +4279 +4278 +4256 +4258 +4277 +4301 +4297 +4336 +4315 +4301 +4302 +4299 +4291 +4294 +4295 +4297 +4291 +4292 +4297 +4303 +4313 +4319 +4327 +4312 +4311 +4316 +4321 +4323 +4335 +4337 +4338 +4348 +4343 +4344 +4345 +4327 +4329 +4331 +4334 +4355 +4356 +4352 +4360 +4366 +4376 +4383 +4391 +4373 +4388 +4376 +4372 +4369 +4366 +4376 +4392 +4397 +4398 +4406 +4405 +4420 +4427 +4426 +4423 +4419 +4420 +4418 +4420 +4418 +4423 +4427 +4428 +4430 +4419 +4420 +4421 +4417 +4418 +4435 +4434 +4448 +4449 +4450 +4451 +4456 +4453 +4456 +4480 +4481 +4504 +4512 +4519 +4527 +4530 +4529 +4530 +4549 +4569 +4572 +4579 +4578 +4583 +4587 +4599 +4604 +4619 +4618 +4619 +4627 +4628 +4626 +4627 +4629 +4628 +4632 +4635 +4636 +4669 +4681 +4684 +4681 +4683 +4682 +4686 +4690 +4689 +4690 +4692 +4695 +4696 +4692 +4691 +4722 +4721 +4720 +4721 +4732 +4735 +4734 +4737 +4736 +4739 +4744 +4775 +4790 +4796 +4769 +4770 +4763 +4765 +4787 +4804 +4792 +4794 +4795 +4793 +4794 +4799 +4817 +4828 +4842 +4844 +4849 +4852 +4876 +4877 +4892 +4896 +4906 +4907 +4910 +4922 +4927 +4930 +4933 +4934 +4935 +4940 +4938 +4951 +4966 +4975 +4987 +4988 +4991 +4992 +4996 +5001 +5002 +5014 +5026 +5031 +5035 +5038 +5037 +5038 +5048 +5049 +5072 +5074 +5100 +5101 +5107 +5116 +5115 +5127 +5125 +5134 +5136 +5140 +5143 +5150 +5148 +5178 +5179 +5181 +5186 +5187 +5191 +5202 +5204 +5202 +5206 +5217 +5214 +5224 +5221 +5236 +5231 +5232 +5235 +5226 +5230 +5231 +5210 +5219 +5223 +5224 +5225 +5229 +5230 +5239 +5254 +5261 +5262 +5265 +5261 +5262 +5263 +5270 +5275 +5274 +5270 +5267 +5263 +5265 +5289 +5290 +5298 +5300 +5303 +5301 +5302 +5305 +5319 +5324 +5348 +5351 +5355 +5356 +5354 +5365 +5359 +5356 +5357 +5380 +5378 +5395 +5403 +5413 +5422 +5421 +5431 +5430 +5446 +5458 +5462 +5466 +5467 +5471 +5472 +5471 +5486 +5494 +5495 +5497 +5500 +5520 +5522 +5525 +5529 +5562 +5563 +5566 +5569 +5572 +5586 +5592 +5594 +5595 +5598 +5603 +5587 +5588 +5592 +5595 +5596 +5605 +5626 +5628 +5629 +5632 +5637 +5639 +5643 +5647 +5629 +5634 +5642 +5643 +5651 +5646 +5662 +5663 +5675 +5677 +5684 +5688 +5700 +5703 +5681 +5720 +5731 +5738 +5741 +5743 +5744 +5754 +5756 +5764 +5770 +5769 +5777 +5780 +5788 +5791 +5812 +5813 +5817 +5830 +5839 +5840 +5866 +5870 +5871 +5864 +5867 +5870 +5873 +5874 +5912 +5914 +5917 +5922 +5931 +5932 +5936 +5937 +5936 +5938 +5959 +5961 +5955 +5960 +5985 +5998 +5997 +5999 +6000 +6003 +6013 +6027 +6028 +6048 +6047 +6049 +6043 +6050 +6073 +6074 +6097 +6098 +6099 +6100 +6102 +6104 +6117 +6116 +6118 +6138 +6139 +6151 +6152 +6150 +6152 +6153 +6163 +6187 +6191 +6187 +6191 +6190 +6202 +6205 +6214 +6213 +6216 +6217 +6219 +6225 +6200 +6201 +6211 +6212 +6222 +6231 +6230 +6249 +6250 +6282 +6309 +6312 +6315 +6310 +6314 +6328 +6335 +6336 +6341 +6348 +6351 +6353 +6358 +6357 +6384 +6385 +6372 +6377 +6382 +6384 +6380 +6382 +6384 +6385 +6388 +6391 +6406 +6405 +6414 +6415 +6417 +6418 +6423 +6424 +6436 +6453 +6460 +6459 +6461 +6475 +6479 +6476 +6477 +6479 +6482 +6481 +6479 +6478 +6491 +6500 +6504 +6505 +6506 +6483 +6473 +6474 +6476 +6477 +6487 +6498 +6500 +6501 +6499 +6497 +6501 +6503 +6512 +6510 +6509 +6496 +6497 +6498 +6513 +6520 +6521 +6523 +6546 +6545 +6548 +6558 +6578 +6579 +6584 +6582 +6588 +6593 +6610 +6616 +6605 +6607 +6629 +6626 +6628 +6648 +6647 +6675 +6674 +6682 +6684 +6691 +6716 +6725 +6726 +6731 +6747 +6764 +6771 +6774 +6780 +6784 +6785 +6789 +6802 +6823 +6838 +6853 +6860 +6847 +6848 +6863 +6862 +6868 +6872 +6873 +6865 +6869 +6870 +6872 +6874 +6898 +6902 +6908 +6907 +6914 +6912 +6913 +6918 +6940 +6942 +6943 +6944 +6945 +6948 +6949 +6950 +6956 +6961 +6978 +6984 +7007 +7011 +7019 +7031 +7038 +7052 +7053 +7059 +7064 +7058 +7064 +7067 +7069 +7063 +7062 +7084 +7086 +7093 +7096 +7088 +7091 +7102 +7099 +7103 +7131 +7132 +7127 +7130 +7131 +7132 +7133 +7134 +7133 +7144 +7145 +7152 +7156 +7157 +7158 +7155 +7169 +7172 +7182 +7184 +7209 +7212 +7180 +7185 +7184 +7185 +7190 +7176 +7178 +7181 +7178 +7186 +7179 +7180 +7183 +7182 +7183 +7179 +7181 +7185 +7187 +7200 +7201 +7202 +7204 +7205 +7213 +7216 +7217 +7219 +7220 +7217 +7234 +7235 +7238 +7239 +7237 +7240 +7241 +7264 +7280 +7278 +7267 +7273 +7283 +7284 +7287 +7289 +7288 +7286 +7311 +7323 +7332 +7333 +7336 +7339 +7343 +7351 +7376 +7380 +7381 +7382 +7392 +7402 +7400 +7402 +7409 +7431 +7435 +7437 +7439 +7455 +7451 +7465 +7468 +7495 +7503 +7504 +7508 +7498 +7502 +7503 +7504 +7496 +7504 +7509 +7517 +7519 +7514 +7532 +7534 +7553 +7551 +7555 +7550 +7551 +7552 +7553 +7554 +7556 +7557 +7558 +7559 +7583 +7588 +7589 +7590 +7589 +7605 +7606 +7608 +7615 +7637 +7652 +7664 +7665 +7667 +7669 +7688 +7690 +7716 +7717 +7720 +7728 +7732 +7738 +7752 +7758 +7780 +7789 +7801 +7839 +7838 +7849 +7848 +7860 +7851 +7844 +7845 +7844 +7849 +7850 +7855 +7853 +7854 +7864 +7865 +7866 +7867 +7875 +7888 +7889 +7895 +7899 +7911 +7906 +7934 +7938 +7941 +7943 +7936 +7935 +7937 +7938 +7940 +7950 +7959 +7958 +7966 +7968 +7992 +7996 +7997 +7991 +7995 +7996 +8005 +8006 +8007 +8010 +8013 +8015 +8014 +8016 +8048 +8053 +8051 +8030 +8032 +8029 +8028 +8029 +8038 +8047 +8069 +8084 +8099 +8095 +8099 +8105 +8096 +8101 +8102 +8107 +8131 +8151 +8154 +8156 +8158 +8177 +8207 +8208 +8187 +8188 +8191 +8168 +8169 +8172 +8179 +8180 +8181 +8183 +8193 +8205 +8245 +8246 +8255 +8247 +8251 +8252 +8251 +8250 +8252 +8258 +8259 +8260 +8267 +8271 +8290 +8305 +8315 +8322 +8335 +8338 +8341 +8342 +8332 +8337 +8345 +8364 +8375 +8362 +8361 +8362 +8354 +8361 +8362 +8377 +8379 +8382 +8406 +8409 +8412 +8413 +8419 +8418 +8419 +8430 +8435 +8429 +8434 +8435 +8417 +8443 +8434 +8447 +8449 +8452 +8459 +8486 +8487 +8489 +8490 +8510 +8508 +8509 +8513 +8514 +8511 +8514 +8493 +8476 +8473 +8487 +8511 +8509 +8517 +8521 +8544 +8549 +8567 +8589 +8594 +8598 +8624 +8650 +8654 +8655 +8663 +8662 +8675 +8676 +8693 +8694 +8691 +8693 +8698 +8699 +8720 +8739 +8740 +8747 +8739 +8740 +8761 +8767 +8761 +8768 +8762 +8752 +8757 +8754 +8756 +8765 +8771 +8775 +8780 +8787 +8774 +8772 +8784 +8778 +8783 +8787 +8789 +8808 +8809 +8819 +8837 +8847 +8850 +8848 +8864 +8862 +8864 +8891 +8892 +8884 +8886 +8887 +8888 +8893 +8894 +8895 diff --git a/1/samplereport.txt b/1/samplereport.txt new file mode 100644 index 0000000..167e291 --- /dev/null +++ b/1/samplereport.txt @@ -0,0 +1,10 @@ +199 +200 +208 +210 +200 +207 +240 +269 +260 +263