From 5a9edbcad0407ac4a35caa14cb70e640fd96e396 Mon Sep 17 00:00:00 2001 From: Penguin Date: Mon, 6 Dec 2021 11:38:26 -0600 Subject: [PATCH] day 1 finished --- day1/c/Makefile | 9 + day1/c/aoc_day1 | Bin 0 -> 20944 bytes day1/c/aoc_day1.c | 64 ++ day1/c/aoc_day1.o | Bin 0 -> 10096 bytes day1/c/input.txt | 2000 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 2073 insertions(+) create mode 100644 day1/c/Makefile create mode 100755 day1/c/aoc_day1 create mode 100644 day1/c/aoc_day1.c create mode 100644 day1/c/aoc_day1.o create mode 100644 day1/c/input.txt diff --git a/day1/c/Makefile b/day1/c/Makefile new file mode 100644 index 0000000..1ab322a --- /dev/null +++ b/day1/c/Makefile @@ -0,0 +1,9 @@ +CC=gcc +CFLAGS=-std=gnu99 -O2 -g +PROJECT=aoc_day1 + +%.o: %.c + $(CC) -c -o $@ $< $(CFLAGS) + +$(PROJECT): aoc_day1.o + $(CC) -o aoc_day1 aoc_day1.o diff --git a/day1/c/aoc_day1 b/day1/c/aoc_day1 new file mode 100755 index 0000000000000000000000000000000000000000..9c5bcd6ad096794beec3b1dedcfc7afedd83af19 GIT binary patch literal 20944 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 IkjAqA1u+v5t^fc4 literal 0 HcmV?d00001 diff --git a/day1/c/aoc_day1.c b/day1/c/aoc_day1.c new file mode 100644 index 0000000..70a8ffe --- /dev/null +++ b/day1/c/aoc_day1.c @@ -0,0 +1,64 @@ +#include +#include +#include +#include + +#define INPUT_FILE ("input.txt") +#define ARR_LEN (2000) + +int main(int argc, char** argv) +{ + int measurements[ARR_LEN]; + memset(measurements, 0, ARR_LEN * sizeof(int)); + FILE* fp = fopen(INPUT_FILE, "r"); + if(fp == NULL) + { + printf("File failed to open for reading..."); + exit(-1); + } + + char* line = NULL; + size_t len = 0; + ssize_t rc = 0; + uint16_t ct = 0; + + // counter that keeps track of how many times a depth measurement has increased + int increase_count = 0; + + if((rc = getline(&line, &len, fp)) < 0) + { + printf("Bad read...\n"); + exit(-1); + } + else + { + measurements[ct++] = strtol(line, NULL, 10); + } + + while((rc = getline(&line, &len, fp)) >= 0) + { + measurements[ct] = strtol(line, NULL, 10); + if(measurements[ct] - measurements[ct - 1] > 0) + { + increase_count++; + } + ct++; + } + printf("Increase count: %d\n", increase_count); + + // part 2 + int sum_increase_count = 0; + for(int ind = 2; ind < ARR_LEN - 1; ind++) + { + int sum_one = measurements[ind - 2] + + measurements[ind - 1] + + measurements[ind]; + int sum_two = measurements[ind - 1] + + measurements[ind] + + measurements[ind + 1]; + sum_increase_count += (sum_two > sum_one); + } + printf("Sum increase count: %d\n", sum_increase_count); + + return 0; +} diff --git a/day1/c/aoc_day1.o b/day1/c/aoc_day1.o new file mode 100644 index 0000000000000000000000000000000000000000..7f6a944c07a6c18d811f9d2d306f1afd53d532da GIT binary patch literal 10096 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 literal 0 HcmV?d00001 diff --git a/day1/c/input.txt b/day1/c/input.txt new file mode 100644 index 0000000..db4871b --- /dev/null +++ b/day1/c/input.txt @@ -0,0 +1,2000 @@ +188 +192 +196 +198 +199 +202 +208 +225 +231 +219 +226 +232 +265 +267 +268 +287 +288 +296 +297 +303 +321 +325 +327 +332 +334 +343 +348 +351 +354 +355 +357 +358 +359 +361 +389 +397 +395 +367 +368 +370 +372 +356 +366 +370 +373 +376 +390 +389 +391 +402 +413 +419 +426 +427 +450 +452 +456 +457 +463 +462 +457 +463 +450 +452 +456 +455 +464 +460 +461 +476 +477 +486 +492 +495 +512 +513 +534 +535 +545 +549 +555 +559 +564 +539 +548 +555 +556 +558 +560 +567 +566 +565 +566 +567 +569 +572 +581 +582 +583 +575 +591 +602 +606 +607 +608 +610 +614 +616 +620 +630 +635 +634 +633 +665 +666 +680 +685 +678 +694 +697 +698 +702 +704 +705 +711 +721 +719 +720 +731 +730 +731 +733 +742 +747 +767 +764 +761 +763 +757 +763 +766 +767 +773 +790 +791 +793 +780 +788 +808 +837 +842 +853 +855 +857 +858 +859 +861 +870 +872 +875 +868 +870 +866 +867 +872 +873 +869 +846 +865 +868 +869 +870 +872 +875 +878 +881 +888 +903 +907 +908 +914 +918 +919 +922 +918 +921 +918 +924 +927 +921 +927 +928 +929 +930 +936 +945 +954 +980 +982 +993 +994 +1008 +1010 +1014 +1016 +1017 +1022 +1020 +1023 +1025 +1021 +1019 +1027 +1028 +1031 +1013 +1014 +1023 +1024 +1027 +1028 +1042 +1051 +1030 +1035 +1038 +1020 +1024 +1019 +983 +988 +1002 +1003 +1004 +1001 +1009 +1016 +1017 +1024 +1025 +1034 +1054 +1057 +1063 +1064 +1066 +1087 +1088 +1091 +1094 +1095 +1096 +1105 +1122 +1124 +1125 +1123 +1140 +1130 +1131 +1138 +1141 +1143 +1159 +1163 +1164 +1193 +1218 +1220 +1201 +1200 +1217 +1218 +1231 +1230 +1233 +1241 +1243 +1245 +1260 +1262 +1260 +1286 +1297 +1298 +1307 +1313 +1314 +1313 +1323 +1324 +1332 +1333 +1339 +1357 +1389 +1390 +1394 +1396 +1399 +1392 +1393 +1394 +1407 +1408 +1410 +1422 +1423 +1424 +1434 +1435 +1442 +1462 +1466 +1467 +1469 +1470 +1471 +1485 +1473 +1474 +1476 +1486 +1491 +1496 +1508 +1538 +1547 +1554 +1563 +1574 +1588 +1594 +1591 +1594 +1602 +1606 +1619 +1625 +1626 +1636 +1638 +1641 +1640 +1646 +1642 +1655 +1656 +1650 +1651 +1657 +1659 +1657 +1660 +1675 +1652 +1638 +1641 +1644 +1645 +1647 +1651 +1653 +1660 +1662 +1667 +1668 +1667 +1668 +1669 +1673 +1697 +1701 +1721 +1726 +1727 +1723 +1725 +1732 +1734 +1733 +1736 +1757 +1761 +1772 +1771 +1789 +1790 +1794 +1804 +1806 +1807 +1811 +1822 +1812 +1810 +1812 +1814 +1791 +1789 +1781 +1776 +1781 +1798 +1802 +1817 +1820 +1809 +1807 +1820 +1825 +1823 +1835 +1834 +1835 +1839 +1843 +1844 +1824 +1839 +1844 +1851 +1853 +1887 +1895 +1899 +1904 +1903 +1901 +1896 +1903 +1904 +1909 +1910 +1915 +1920 +1932 +1942 +1944 +1926 +1951 +1961 +1962 +1972 +1975 +1977 +1984 +1987 +1993 +2001 +2003 +2006 +2013 +2034 +2046 +2050 +2058 +2063 +2060 +2044 +2050 +2051 +2045 +2049 +2078 +2060 +2063 +2064 +2065 +2081 +2082 +2092 +2098 +2099 +2107 +2108 +2134 +2135 +2157 +2159 +2158 +2168 +2167 +2173 +2179 +2204 +2208 +2218 +2221 +2238 +2234 +2235 +2236 +2239 +2243 +2247 +2248 +2249 +2264 +2265 +2266 +2261 +2262 +2248 +2256 +2258 +2270 +2280 +2284 +2292 +2293 +2298 +2299 +2309 +2332 +2340 +2341 +2342 +2343 +2350 +2353 +2358 +2359 +2363 +2365 +2357 +2359 +2363 +2370 +2375 +2374 +2390 +2384 +2402 +2405 +2409 +2412 +2422 +2428 +2429 +2432 +2417 +2410 +2401 +2418 +2419 +2420 +2421 +2417 +2418 +2422 +2424 +2436 +2462 +2471 +2480 +2478 +2481 +2505 +2510 +2518 +2545 +2546 +2549 +2564 +2569 +2577 +2609 +2605 +2604 +2614 +2596 +2613 +2629 +2631 +2632 +2635 +2634 +2663 +2664 +2678 +2712 +2689 +2688 +2697 +2706 +2708 +2714 +2715 +2718 +2739 +2743 +2745 +2754 +2752 +2754 +2794 +2796 +2797 +2798 +2801 +2804 +2807 +2819 +2838 +2839 +2840 +2841 +2842 +2843 +2848 +2853 +2883 +2889 +2905 +2906 +2912 +2935 +2925 +2924 +2957 +2958 +2980 +2972 +2973 +2959 +2964 +2965 +2976 +2977 +2978 +2981 +3000 +3002 +3009 +2996 +3000 +2999 +3001 +3002 +3008 +3009 +3011 +3014 +3015 +3019 +3037 +3046 +3048 +3049 +3050 +3049 +3050 +3060 +3056 +3053 +3065 +3067 +3068 +3067 +3073 +3075 +3076 +3079 +3086 +3072 +3076 +3079 +3103 +3104 +3117 +3120 +3111 +3127 +3128 +3130 +3129 +3134 +3137 +3138 +3140 +3143 +3159 +3162 +3188 +3201 +3204 +3206 +3216 +3217 +3196 +3208 +3210 +3215 +3216 +3220 +3236 +3237 +3227 +3231 +3249 +3251 +3255 +3258 +3261 +3262 +3271 +3274 +3270 +3272 +3281 +3282 +3303 +3300 +3317 +3323 +3358 +3359 +3360 +3361 +3364 +3366 +3370 +3376 +3377 +3379 +3380 +3384 +3385 +3394 +3401 +3391 +3392 +3425 +3414 +3423 +3428 +3448 +3454 +3464 +3465 +3466 +3469 +3474 +3476 +3478 +3488 +3482 +3483 +3484 +3486 +3485 +3498 +3504 +3505 +3506 +3514 +3520 +3523 +3529 +3534 +3535 +3537 +3538 +3545 +3513 +3515 +3522 +3527 +3528 +3537 +3541 +3542 +3543 +3548 +3535 +3537 +3553 +3590 +3588 +3596 +3591 +3598 +3602 +3606 +3607 +3608 +3614 +3612 +3616 +3618 +3623 +3624 +3644 +3645 +3650 +3651 +3652 +3654 +3656 +3660 +3678 +3680 +3684 +3685 +3703 +3709 +3710 +3717 +3754 +3755 +3756 +3727 +3755 +3761 +3759 +3765 +3774 +3775 +3779 +3786 +3788 +3800 +3801 +3802 +3813 +3841 +3847 +3856 +3859 +3866 +3872 +3869 +3870 +3890 +3905 +3906 +3907 +3908 +3920 +3921 +3928 +3939 +3956 +3967 +3968 +3974 +3989 +3995 +3996 +4000 +4007 +4015 +4022 +4019 +4029 +4030 +4031 +4040 +4043 +4044 +4045 +4054 +4056 +4075 +4084 +4085 +4086 +4088 +4086 +4093 +4101 +4111 +4110 +4111 +4102 +4103 +4101 +4102 +4103 +4110 +4111 +4121 +4122 +4142 +4143 +4142 +4152 +4155 +4157 +4132 +4137 +4141 +4136 +4138 +4141 +4143 +4167 +4169 +4170 +4171 +4179 +4180 +4191 +4194 +4193 +4181 +4180 +4181 +4185 +4191 +4192 +4194 +4196 +4200 +4204 +4208 +4219 +4223 +4216 +4219 +4222 +4228 +4218 +4224 +4226 +4248 +4246 +4249 +4238 +4237 +4247 +4263 +4264 +4268 +4271 +4277 +4282 +4283 +4290 +4291 +4292 +4300 +4299 +4300 +4301 +4302 +4304 +4305 +4306 +4310 +4325 +4327 +4325 +4338 +4341 +4343 +4342 +4343 +4345 +4346 +4348 +4362 +4364 +4365 +4362 +4370 +4374 +4377 +4379 +4385 +4389 +4407 +4418 +4422 +4426 +4429 +4428 +4450 +4452 +4445 +4446 +4454 +4458 +4476 +4479 +4486 +4500 +4498 +4499 +4498 +4505 +4508 +4509 +4518 +4520 +4523 +4522 +4530 +4544 +4545 +4568 +4572 +4565 +4582 +4585 +4586 +4601 +4587 +4596 +4612 +4628 +4629 +4633 +4634 +4635 +4640 +4642 +4641 +4637 +4638 +4641 +4637 +4640 +4641 +4653 +4658 +4635 +4644 +4653 +4654 +4655 +4681 +4682 +4681 +4696 +4689 +4691 +4697 +4698 +4708 +4711 +4713 +4714 +4725 +4728 +4731 +4723 +4725 +4715 +4724 +4759 +4762 +4763 +4764 +4774 +4777 +4779 +4780 +4788 +4787 +4807 +4828 +4829 +4830 +4832 +4833 +4836 +4830 +4846 +4827 +4828 +4831 +4832 +4837 +4839 +4842 +4844 +4845 +4857 +4835 +4839 +4840 +4843 +4841 +4855 +4856 +4882 +4891 +4897 +4890 +4904 +4912 +4931 +4932 +4933 +4946 +4952 +4953 +4970 +4974 +4975 +4969 +4971 +4972 +4971 +4972 +4968 +4983 +4999 +5001 +5010 +5012 +5027 +5025 +5033 +5036 +5051 +5032 +5023 +5024 +5029 +5043 +5045 +5049 +5055 +5071 +5070 +5072 +5084 +5085 +5086 +5092 +5100 +5099 +5101 +5113 +5120 +5111 +5139 +5146 +5152 +5149 +5151 +5128 +5145 +5132 +5153 +5181 +5193 +5197 +5203 +5236 +5237 +5235 +5240 +5241 +5275 +5270 +5271 +5287 +5309 +5313 +5316 +5317 +5318 +5319 +5322 +5323 +5319 +5322 +5323 +5326 +5331 +5323 +5331 +5326 +5328 +5329 +5330 +5331 +5333 +5334 +5335 +5329 +5330 +5332 +5333 +5334 +5337 +5338 +5337 +5338 +5341 +5340 +5338 +5339 +5346 +5347 +5348 +5334 +5330 +5331 +5334 +5342 +5373 +5374 +5366 +5367 +5377 +5381 +5387 +5414 +5390 +5394 +5395 +5378 +5382 +5385 +5378 +5387 +5386 +5387 +5388 +5389 +5373 +5374 +5377 +5386 +5408 +5411 +5412 +5414 +5408 +5426 +5425 +5458 +5478 +5479 +5481 +5482 +5492 +5496 +5497 +5502 +5480 +5481 +5488 +5503 +5504 +5470 +5475 +5476 +5479 +5480 +5487 +5491 +5492 +5491 +5494 +5496 +5497 +5495 +5506 +5508 +5510 +5509 +5507 +5515 +5509 +5510 +5512 +5528 +5522 +5530 +5531 +5544 +5547 +5548 +5563 +5571 +5595 +5597 +5613 +5634 +5639 +5648 +5653 +5656 +5663 +5675 +5676 +5671 +5678 +5681 +5690 +5711 +5714 +5721 +5732 +5737 +5738 +5760 +5759 +5769 +5770 +5771 +5781 +5783 +5786 +5784 +5785 +5787 +5800 +5802 +5799 +5800 +5803 +5808 +5842 +5838 +5843 +5844 +5846 +5855 +5862 +5865 +5881 +5904 +5909 +5910 +5911 +5914 +5915 +5920 +5930 +5956 +5973 +5981 +5991 +5993 +6002 +6024 +6028 +6031 +6037 +6031 +6032 +6035 +6038 +6065 +6074 +6076 +6078 +6079 +6084 +6086 +6087 +6076 +6080 +6068 +6070 +6081 +6086 +6097 +6119 +6125 +6127 +6125 +6117 +6124 +6121 +6124 +6127 +6134 +6129 +6131 +6145 +6147 +6143 +6144 +6151 +6150 +6155 +6156 +6158 +6159 +6160 +6172 +6190 +6191 +6193 +6192 +6208 +6225 +6228 +6234 +6235 +6236 +6237 +6242 +6247 +6248 +6250 +6241 +6255 +6257 +6260 +6261 +6264 +6263 +6286 +6265 +6290 +6295 +6297 +6322 +6344 +6359 +6362 +6371 +6385 +6388 +6394 +6395 +6413 +6425 +6422 +6423 +6448 +6450 +6441 +6444 +6443 +6446 +6450 +6468 +6470 +6473 +6474 +6480 +6473 +6474 +6485 +6484 +6486 +6498 +6506 +6518 +6517 +6535 +6533 +6559 +6564 +6565 +6544 +6554 +6566 +6567 +6561 +6574 +6575 +6609 +6610 +6633 +6635 +6639 +6643 +6645 +6648 +6652 +6649 +6615 +6620 +6633 +6640 +6641 +6642 +6645 +6644 +6648 +6654 +6656 +6654 +6664 +6665 +6668 +6687 +6692 +6712 +6713 +6721 +6710 +6707 +6706 +6714 +6718 +6731 +6742 +6748 +6749 +6759 +6726 +6733 +6736 +6748 +6749 +6746 +6743 +6749 +6752 +6781 +6777 +6764 +6763 +6778 +6781 +6782 +6807 +6829 +6831 +6842 +6850 +6866 +6867 +6884 +6891 +6881 +6883 +6892 +6905 +6867 +6859 +6862 +6863 +6847 +6848 +6844 +6845 +6874 +6894 +6901 +6894 +6911 +6935 +6941 +6948 +6956 +6955 +6964 +6969 +6968 +6969 +6972 +6974 +6975 +6983 +6989 +7009 +7014 +7016 +7028 +7024 +7028 +7029 +7024 +7042 +7055 +7059 +7092 +7095 +7100 +7109 +7112 +7110 +7111 +7110 +7128 +7129 +7131 +7133 +7135 +7163 +7165 +7175 +7176 +7177 +7178 +7188 +7199 +7181 +7195 +7200 +7201 +7203 +7212 +7224 +7225 +7234 +7251 +7252 +7245 +7246 +7254 +7256 +7251 +7252 +7253 +7254 +7257 +7256 +7246 +7245 +7248 +7261 +7247 +7246 +7247 +7254 +7248 +7256 +7258 +7259 +7260 +7261 +7262 +7277 +7297 +7300 +7299 +7301 +7306 +7314 +7309 +7313 +7316 +7318 +7328 +7329 +7335 +7323 +7324 +7331 +7333 +7334 +7348 +7330 +7334 +7335 +7346 +7348 +7351 +7356 +7352 +7356 +7364 +7372 +7377 +7378 +7380 +7387 +7390 +7388 +7401 +7403 +7408 +7427 +7425 +7429 +7433 +7457 +7463 +7474 +7492 +7493 +7496 +7495 +7496 +7502 +7524 +7532 +7529 +7535 +7536 +7544 +7548 +7549 +7571 +7585 +7586 +7589 +7590 +7595 +7610 +7611 +7616 +7621 +7624 +7659 +7662 +7635 +7653 +7639 +7642 +7643 +7645 +7658 +7656 +7665 +7669 +7668 +7658 +7686 +7668 +7667 +7672 +7675 +7699 +7703 +7699 +7710 +7712 +7738 +7760 +7759 +7760 +7762 +7763 +7770 +7789 +7791 +7782 +7779 +7782 +7779 +7802 +7795 +7791 +7808 +7809 +7821 +7822 +7829 +7830 +7853 +7859 +7860 +7861 +7864 +7868 +7852 +7864 +7865 +7866 +7863 +7866 +7862 +7853 +7863 +7862 +7864 +7866 +7868 +7872 +7874 +7875 +7895 +7894 +7896 +7887 +7891 +7890 +7891 +7888 +7889 +7904 +7905 +7901 +7922 +7912 +7911 +7912 +7911 +7914 +7915 +7918 +7923 +7933 +7924 +7927 +7930 +7946 +7948 +7964 +7966 +7968 +7972 +7969 +7968 +7960 +7968 +7974 +7975 +7974 +7953 +7950 +7944 +7949 +7955 +7953 +7954 +7956 +7959 +7961 +7962 +7964 +7968 +7969 +7985 +7991 +8006 +8007 +8008 +8009 +8029 +8005 +8006 +8008 +8015 +8019 +8012 +8020 +8021 +8022 +8028 +8038 +8037 +8055 +8065 +8067 +8061 +8088 +8095 +8099 +8100 +8102 +8105 +8092 +8093 +8097 +8102 +8111 +8112 +8130 +8141 +8137 +8140 +8156 +8157 +8165 +8168 +8175 +8189 +8202 +8205 +8203 +8208 +8211 +8223 +8228 +8229 +8226 +8242 +8245 +8246 +8254 +8257 +8258 +8259 +8264 +8269 +8270 +8271 +8272 +8259 +8264 +8267 +8284 +8285 +8297 +8299 +8300 +8301 +8305 +8306 +8307 +8308 +8310 +8311 +8308 +8312 +8297 +8302 +8300 +8303 +8304 +8309 +8307 +8316 +8317 +8310 +8312 +8317 +8319 +8327 +8329 +8340 +8329 +8339 +8338 +8339 +8345 +8335 +8332 +8348 +8349 +8350 +8349 +8351 +8364 +8365 +8368 +8371 +8372 +8384 +8386 +8383 +8397 +8428 +8433 +8449 +8469 +8472 +8483 +8491 +8481 +8483 +8482 +8483 +8484 +8486 +8487 +8497 +8498 +8499 +8501 +8509 +8514 +8517 +8516 +8518 +8526 +8528 +8505 +8509 +8523 +8524 +8525 +8526 +8531 +8518 +8517 +8520 +8521 +8542 +8514 +8517 +8518 +8528 +8559 +8562 +8592 +8617 +8622 +8632 +8639 +8640 +8659 +8660 +8655 +8665 +8666 +8661 +8679 +8687 +8688 +8676 +8704 +8711 +8710