diff --git a/python/2023/README.org b/python/2023/README.org index 6b7b001..92e1b2b 100644 --- a/python/2023/README.org +++ b/python/2023/README.org @@ -44,24 +44,3 @@ where =avg-time= is [[https://stackoverflow.com/a/54920339][this bit of ~awk~]] *** Answers 19135 5704953 - -** Day 5 -*** Answers -324724204 -104070862 - -#+begin_src shell - -> date -Iseconds; cat src/andy_aoc_2023/BIG_INPUTS | xargs -P 0 -I '%' python src/andy_aoc_2023/day5.py src/andy_aoc_2023/BIG_MAPS %; date -Iseconds - 2023-12-05T12:55:55-05:00 - 856496588 - 547766656 - 990928320 - 104899384 - 516299014 - 104070862 <-- This is the min aka the answer - 324724204 - 344671053 - 114257961 - 146071405 - 2023-12-05T14:46:41-05:00 -#+end_src diff --git a/python/2023/src/andy_aoc_2023/BIG_INPUTS b/python/2023/src/andy_aoc_2023/BIG_INPUTS deleted file mode 100644 index b7c088e..0000000 --- a/python/2023/src/andy_aoc_2023/BIG_INPUTS +++ /dev/null @@ -1,10 +0,0 @@ -4106085912 135215567 -529248892 159537194 -1281459911 114322341 -1857095529 814584370 -2999858074 50388481 -3362084117 37744902 -3471634344 240133599 -3737494864 346615684 -1585884643 142273098 -917169654 286257440 diff --git a/python/2023/src/andy_aoc_2023/BIG_MAPS b/python/2023/src/andy_aoc_2023/BIG_MAPS deleted file mode 100644 index ff012ac..0000000 --- a/python/2023/src/andy_aoc_2023/BIG_MAPS +++ /dev/null @@ -1 +0,0 @@ -[[[1640984363, 3136305987, 77225710], [3469528922, 1857474741, 56096642], [278465165, 2901870617, 105516220], [1442950910, 1913571383, 198033453], [463085535, 1458252975, 13696838], [1718210073, 1686050230, 171424511], [383981385, 3064707638, 71598349], [1267048154, 3759577328, 175902756], [3262934306, 1479455614, 206594616], [2493001016, 200414015, 157177749], [3885112776, 411057950, 157348766], [4042461542, 1181162257, 199039568], [476782373, 2111604836, 790265781], [455579734, 1471949813, 7505801], [1889634584, 3213531697, 546045631], [4241501110, 357591764, 53466186], [3525625564, 3935480084, 359487212], [2650178765, 568406716, 612755541], [200414015, 1380201825, 78051150], [2435680215, 3007386837, 57320801]], [[513693437, 1166448955, 406316429], [3977989337, 1831898517, 148449061], [2857616419, 1749713256, 55966993], [2245899978, 767737007, 398711948], [3462028551, 3402487827, 258322330], [1207747701, 2246116788, 274586148], [1857449833, 2520702936, 106524473], [950443356, 290304833, 224196260], [2913583412, 1805680249, 26218268], [290304833, 3849361293, 119346889], [3720350881, 3244527156, 157960671], [920009866, 1634093064, 30433490], [409651722, 2627227409, 104041715], [3916661657, 1572765384, 61327680], [1624788708, 2115889182, 130227606], [1963974306, 3695907849, 9066861], [1755016314, 1980347578, 102433519], [1973041167, 3151152620, 93374536], [1482333849, 710468850, 57268157], [2644611926, 2899798022, 213004493], [1539602006, 1664526554, 85186702], [2210802286, 3660810157, 35097692], [3135769437, 3968708182, 326259114], [1174639616, 2082781097, 33108085], [3878311552, 3112802515, 38350105], [2066415703, 3704974710, 144386583], [2939801680, 514501093, 195967757], [4126438398, 2731269124, 168528898]], [[1274667249, 2789153677, 35498097], [1119124697, 1423189114, 4201717], [1775973674, 127038866, 409949870], [2636872711, 677641697, 238584014], [998550357, 2708616519, 80537158], [1613168083, 3037802277, 162805591], [1123326414, 2618446916, 90169603], [2516959328, 2034731526, 119913383], [3879305887, 3993605604, 147788774], [1213496017, 2616229293, 2217623], [3412445194, 3202949622, 62545934], [2875456725, 2194682091, 362593593], [1079087515, 2154644909, 40037182], [2468026227, 3426058027, 48933101], [0, 1427390831, 607340695], [2185923544, 0, 127038866], [1310165346, 916225711, 76820908], [2312962410, 993046619, 155063817], [607340695, 1369464790, 53724324], [1389328008, 536988736, 140652961], [1386986254, 3200607868, 2341754], [4241108893, 3701026057, 53858403], [661065019, 2824651774, 213150503], [1529980969, 3342870913, 83187114], [921175000, 3265495556, 77375357], [874215522, 1148110436, 46959478], [4180667579, 3914761609, 60441314], [3238050318, 1195069914, 174394876], [3701026057, 3754884460, 159877149], [4027094661, 4141394378, 153572918], [3860903206, 3975202923, 18402681], [1215713640, 2557275684, 58953609]], [[3346671099, 2139469351, 253535694], [3600206793, 4187771498, 107195798], [1271601308, 936374322, 163567625], [3890528820, 1799438963, 144160054], [1731948725, 3256631615, 148580525], [3859991790, 2573461247, 250171], [389304550, 1099941947, 124474859], [2322259245, 1445947039, 39679535], [1544278612, 1943599017, 46211136], [1124738947, 789511961, 146862361], [3860946526, 2109887057, 29582294], [891137223, 173339870, 233601724], [3044858977, 1485626574, 301812122], [627354019, 0, 173339870], [800693889, 1224416806, 90443334], [4046689141, 2034661517, 75225540], [4166766045, 4059570247, 128201251], [0, 1314860140, 120308793], [4034688874, 1787438696, 12000267], [2294392242, 2393005045, 27867003], [2361938780, 2573711418, 682920197], [4121914681, 1989810153, 44851364], [1674653431, 3705039670, 14123300], [1445242474, 3719162970, 99036138], [513779409, 406941594, 113574610], [3707402591, 2420872048, 152589199], [2053021103, 3818199108, 241371139], [3860241961, 1445242474, 704565], [1880529250, 3489375823, 172491853], [1688776731, 3661867676, 43171994], [120308793, 520516204, 268995757], [1590489748, 3405212140, 84163683]], [[1711282888, 1572780528, 87721767], [154126417, 0, 43277112], [950353983, 1343526858, 179094373], [2607445049, 2714989532, 110883165], [197403529, 400138402, 104876963], [302280492, 43277112, 202734873], [2990325458, 1942480091, 22763517], [2203652414, 1550069916, 22710612], [3347561974, 4075093920, 130901113], [1328424170, 3514387681, 17133869], [3187047160, 4220120429, 74846867], [3555672228, 4205995033, 676520], [555737175, 2292503071, 178861674], [936905107, 4206671553, 13448876], [2718328214, 2825872697, 25755942], [2042629442, 945726244, 118907923], [2161537365, 3027858084, 42115049], [1657501024, 1888698227, 53781864], [2943656210, 3804007444, 46669248], [2226363026, 2004226072, 108596129], [0, 246011985, 154126417], [734598849, 2928837780, 99020304], [833619153, 1660502295, 103285954], [2744084156, 3436875901, 77511780], [1299692440, 2112822201, 28731730], [2821595936, 782812975, 122060274], [1799004655, 2471364745, 95185072], [3082783503, 1965243608, 38982464], [2334959155, 3531521550, 272485894], [3121765967, 2227221878, 65281193], [1392230801, 3850676692, 224417228], [3013088975, 528288490, 69694528], [1616648029, 904873249, 40852995], [1345558039, 3069973133, 46672762], [3681258726, 1064634167, 278892691], [1894189727, 2566549817, 148439715], [1129448356, 597983018, 170244084], [3261894027, 2141553931, 85667947], [3478463087, 2851628639, 77209141], [3556348748, 1763788249, 124909978], [4280381423, 768227102, 14585873], [528288490, 1522621231, 27448685], [3960151417, 3116645895, 320230006]], [[2401309547, 2063893326, 5931150], [4081820678, 1536756293, 195703517], [3389837279, 4114880485, 97950323], [67647704, 537880870, 95615044], [3487787602, 2069824476, 16209316], [212366581, 0, 210367924], [0, 470233166, 67647704], [163262748, 331958016, 49103833], [3921228390, 3754997923, 26024946], [1883070873, 986328296, 29590327], [1844673227, 4256569650, 38397646], [422734505, 381061849, 89171317], [3835004067, 4212830808, 43738842], [1753523088, 1732459810, 63479835], [4277524195, 3781022869, 17443101], [926010074, 3798465970, 316414515], [511905822, 210367924, 31838014], [3565158997, 3485152853, 269845070], [3878742909, 776643827, 42485481], [3352296690, 1795939645, 37540589], [2877358153, 2512426556, 474938537], [1419995251, 1068661114, 304321846], [1348461498, 705110074, 71533753], [1724317097, 1372982960, 29205991], [1974916783, 2086033792, 426392764], [2407240697, 3015035397, 470117456], [1242424589, 880291387, 106036909], [642854491, 1833480234, 230413092], [3503996918, 819129308, 61162079], [543743836, 242205938, 89752078], [873267583, 1015918623, 52742491], [1817002923, 2987365093, 27670304], [1912661200, 642854491, 62255583], [3947253336, 1402188951, 134567342]], [[2955816171, 2260659770, 927037009], [1906648752, 2188942242, 71717528], [848878920, 35928575, 8026852], [4100692468, 1994667414, 194274828], [2066384942, 3405536067, 889431229], [559945395, 1052613350, 288933525], [3882853180, 3187696779, 217839288], [856905772, 1341546875, 164300625], [0, 528596530, 524016820], [1978366280, 1723924810, 88018662], [1044385850, 67134880, 400987760], [524016820, 0, 35928575], [1021206397, 43955427, 23179453], [1445373610, 468122640, 60473890], [1723924810, 1811943472, 182723942]]] diff --git a/python/2023/src/andy_aoc_2023/day5.py b/python/2023/src/andy_aoc_2023/day5.py deleted file mode 100644 index a246bbb..0000000 --- a/python/2023/src/andy_aoc_2023/day5.py +++ /dev/null @@ -1,101 +0,0 @@ -from collections import defaultdict -from pprint import pprint -import re -import sys - - -def parse_raw_input(lines): - chunks = [] - input_map = [] - for line in lines: - if (matches := re.match(r"(\d+) (\d+) (\d+)", line)): - dest, source, range_length = map(int, matches.groups()) - input_map.append((dest, source, range_length)) - else: - if input_map: - chunks.append(input_map) - input_map = [] - - # Need to get the last lines processed - if input_map: - chunks.append(input_map) - - return chunks - - -def part1(seeds, input_maps, states): - for seed in seeds: - state = seed - for input_map in input_maps: - new_state = state - for partition in input_map: - dest, source, range_length = partition - if source <= state < source + range_length: - offset = dest - source - new_state = state + offset - break - state = new_state - states.append(state) - - return min(states) - # print(f"{min(states)}") - - -# input_file = sys.argv[1] - -# with open(input_file) as infile: -# seeds = infile.readline().strip().split(": ")[1].split(" ") -# input_maps = parse_raw_input(infile.readlines()) - -# part1(map(int, seeds), input_maps, []) - -def partition(input, size): - for i in range(0, len(input), size): - yield input[i: i + size] - - - -# states = [] -# for start, size in partition(list(int(s) for s in seeds), 2): -# print(start) -# seed_range = range(start, start + size) - -# part1(seed_range, input_maps, states) -# # part1((start, start + size), input_maps, states) -# print(f"{states} : {min(states)}") - -# print(f"{min(states)}") - -# for start, size in partition(list(int(s) for s in seeds), 2): -# print(start, size) - -import json -# print(json.dumps(input_maps)) -with open(sys.argv[1]) as infile: - input_maps = json.load(infile) -start, length = map(int, sys.argv[2].split(" ")) -# length = sys.argv[3] - -# print(f"Would run with maps {len(input_maps)} {start} {length}") -seed_range = range(start, start + length) -print(part1(seed_range, input_maps, [])) - -#print(input_maps) - - - - -# for seed in map(int, seeds): -# state = seed -# for input_map in input_maps: -# new_state = state -# for partition in input_map: -# dest, source, range_length = partition -# if source <= state < source + range_length: -# offset = dest - source -# new_state = state + offset -# break -# state = new_state -# states.append(state) - -# print(f"{min(states)}") diff --git a/python/2023/src/andy_aoc_2023/day5_big b/python/2023/src/andy_aoc_2023/day5_big deleted file mode 100644 index 3a01983..0000000 --- a/python/2023/src/andy_aoc_2023/day5_big +++ /dev/null @@ -1,219 +0,0 @@ -seeds: 4106085912 135215567 529248892 159537194 1281459911 114322341 1857095529 814584370 2999858074 50388481 3362084117 37744902 3471634344 240133599 3737494864 346615684 1585884643 142273098 917169654 286257440 - -seed-to-soil map: -1640984363 3136305987 77225710 -3469528922 1857474741 56096642 -278465165 2901870617 105516220 -1442950910 1913571383 198033453 -463085535 1458252975 13696838 -1718210073 1686050230 171424511 -383981385 3064707638 71598349 -1267048154 3759577328 175902756 -3262934306 1479455614 206594616 -2493001016 200414015 157177749 -3885112776 411057950 157348766 -4042461542 1181162257 199039568 -476782373 2111604836 790265781 -455579734 1471949813 7505801 -1889634584 3213531697 546045631 -4241501110 357591764 53466186 -3525625564 3935480084 359487212 -2650178765 568406716 612755541 -200414015 1380201825 78051150 -2435680215 3007386837 57320801 - -soil-to-fertilizer map: -513693437 1166448955 406316429 -3977989337 1831898517 148449061 -2857616419 1749713256 55966993 -2245899978 767737007 398711948 -3462028551 3402487827 258322330 -1207747701 2246116788 274586148 -1857449833 2520702936 106524473 -950443356 290304833 224196260 -2913583412 1805680249 26218268 -290304833 3849361293 119346889 -3720350881 3244527156 157960671 -920009866 1634093064 30433490 -409651722 2627227409 104041715 -3916661657 1572765384 61327680 -1624788708 2115889182 130227606 -1963974306 3695907849 9066861 -1755016314 1980347578 102433519 -1973041167 3151152620 93374536 -1482333849 710468850 57268157 -2644611926 2899798022 213004493 -1539602006 1664526554 85186702 -2210802286 3660810157 35097692 -3135769437 3968708182 326259114 -1174639616 2082781097 33108085 -3878311552 3112802515 38350105 -2066415703 3704974710 144386583 -2939801680 514501093 195967757 -4126438398 2731269124 168528898 - -fertilizer-to-water map: -1274667249 2789153677 35498097 -1119124697 1423189114 4201717 -1775973674 127038866 409949870 -2636872711 677641697 238584014 -998550357 2708616519 80537158 -1613168083 3037802277 162805591 -1123326414 2618446916 90169603 -2516959328 2034731526 119913383 -3879305887 3993605604 147788774 -1213496017 2616229293 2217623 -3412445194 3202949622 62545934 -2875456725 2194682091 362593593 -1079087515 2154644909 40037182 -2468026227 3426058027 48933101 -0 1427390831 607340695 -2185923544 0 127038866 -1310165346 916225711 76820908 -2312962410 993046619 155063817 -607340695 1369464790 53724324 -1389328008 536988736 140652961 -1386986254 3200607868 2341754 -4241108893 3701026057 53858403 -661065019 2824651774 213150503 -1529980969 3342870913 83187114 -921175000 3265495556 77375357 -874215522 1148110436 46959478 -4180667579 3914761609 60441314 -3238050318 1195069914 174394876 -3701026057 3754884460 159877149 -4027094661 4141394378 153572918 -3860903206 3975202923 18402681 -1215713640 2557275684 58953609 - -water-to-light map: -3346671099 2139469351 253535694 -3600206793 4187771498 107195798 -1271601308 936374322 163567625 -3890528820 1799438963 144160054 -1731948725 3256631615 148580525 -3859991790 2573461247 250171 -389304550 1099941947 124474859 -2322259245 1445947039 39679535 -1544278612 1943599017 46211136 -1124738947 789511961 146862361 -3860946526 2109887057 29582294 -891137223 173339870 233601724 -3044858977 1485626574 301812122 -627354019 0 173339870 -800693889 1224416806 90443334 -4046689141 2034661517 75225540 -4166766045 4059570247 128201251 -0 1314860140 120308793 -4034688874 1787438696 12000267 -2294392242 2393005045 27867003 -2361938780 2573711418 682920197 -4121914681 1989810153 44851364 -1674653431 3705039670 14123300 -1445242474 3719162970 99036138 -513779409 406941594 113574610 -3707402591 2420872048 152589199 -2053021103 3818199108 241371139 -3860241961 1445242474 704565 -1880529250 3489375823 172491853 -1688776731 3661867676 43171994 -120308793 520516204 268995757 -1590489748 3405212140 84163683 - -light-to-temperature map: -1711282888 1572780528 87721767 -154126417 0 43277112 -950353983 1343526858 179094373 -2607445049 2714989532 110883165 -197403529 400138402 104876963 -302280492 43277112 202734873 -2990325458 1942480091 22763517 -2203652414 1550069916 22710612 -3347561974 4075093920 130901113 -1328424170 3514387681 17133869 -3187047160 4220120429 74846867 -3555672228 4205995033 676520 -555737175 2292503071 178861674 -936905107 4206671553 13448876 -2718328214 2825872697 25755942 -2042629442 945726244 118907923 -2161537365 3027858084 42115049 -1657501024 1888698227 53781864 -2943656210 3804007444 46669248 -2226363026 2004226072 108596129 -0 246011985 154126417 -734598849 2928837780 99020304 -833619153 1660502295 103285954 -2744084156 3436875901 77511780 -1299692440 2112822201 28731730 -2821595936 782812975 122060274 -1799004655 2471364745 95185072 -3082783503 1965243608 38982464 -2334959155 3531521550 272485894 -3121765967 2227221878 65281193 -1392230801 3850676692 224417228 -3013088975 528288490 69694528 -1616648029 904873249 40852995 -1345558039 3069973133 46672762 -3681258726 1064634167 278892691 -1894189727 2566549817 148439715 -1129448356 597983018 170244084 -3261894027 2141553931 85667947 -3478463087 2851628639 77209141 -3556348748 1763788249 124909978 -4280381423 768227102 14585873 -528288490 1522621231 27448685 -3960151417 3116645895 320230006 - -temperature-to-humidity map: -2401309547 2063893326 5931150 -4081820678 1536756293 195703517 -3389837279 4114880485 97950323 -67647704 537880870 95615044 -3487787602 2069824476 16209316 -212366581 0 210367924 -0 470233166 67647704 -163262748 331958016 49103833 -3921228390 3754997923 26024946 -1883070873 986328296 29590327 -1844673227 4256569650 38397646 -422734505 381061849 89171317 -3835004067 4212830808 43738842 -1753523088 1732459810 63479835 -4277524195 3781022869 17443101 -926010074 3798465970 316414515 -511905822 210367924 31838014 -3565158997 3485152853 269845070 -3878742909 776643827 42485481 -3352296690 1795939645 37540589 -2877358153 2512426556 474938537 -1419995251 1068661114 304321846 -1348461498 705110074 71533753 -1724317097 1372982960 29205991 -1974916783 2086033792 426392764 -2407240697 3015035397 470117456 -1242424589 880291387 106036909 -642854491 1833480234 230413092 -3503996918 819129308 61162079 -543743836 242205938 89752078 -873267583 1015918623 52742491 -1817002923 2987365093 27670304 -1912661200 642854491 62255583 -3947253336 1402188951 134567342 - -humidity-to-location map: -2955816171 2260659770 927037009 -1906648752 2188942242 71717528 -848878920 35928575 8026852 -4100692468 1994667414 194274828 -2066384942 3405536067 889431229 -559945395 1052613350 288933525 -3882853180 3187696779 217839288 -856905772 1341546875 164300625 -0 528596530 524016820 -1978366280 1723924810 88018662 -1044385850 67134880 400987760 -524016820 0 35928575 -1021206397 43955427 23179453 -1445373610 468122640 60473890 -1723924810 1811943472 182723942 diff --git a/python/2023/src/andy_aoc_2023/day5_small b/python/2023/src/andy_aoc_2023/day5_small deleted file mode 100644 index f756727..0000000 --- a/python/2023/src/andy_aoc_2023/day5_small +++ /dev/null @@ -1,33 +0,0 @@ -seeds: 79 14 55 13 - -seed-to-soil map: -50 98 2 -52 50 48 - -soil-to-fertilizer map: -0 15 37 -37 52 2 -39 0 15 - -fertilizer-to-water map: -49 53 8 -0 11 42 -42 0 7 -57 7 4 - -water-to-light map: -88 18 7 -18 25 70 - -light-to-temperature map: -45 77 23 -81 45 19 -68 64 13 - -temperature-to-humidity map: -0 69 1 -1 0 69 - -humidity-to-location map: -60 56 37 -56 93 4 diff --git a/python/2023/src/andy_aoc_2023/day6.py b/python/2023/src/andy_aoc_2023/day6.py deleted file mode 100644 index 080b151..0000000 --- a/python/2023/src/andy_aoc_2023/day6.py +++ /dev/null @@ -1,90 +0,0 @@ -from collections import defaultdict -from functools import reduce -import math -from pprint import pprint -import re -import sys - - -def parse_raw_input(lines): - return [ - re.split( - r"\s+", - re.split(r":\s+", line)[1].strip() - ) - for line in lines - ] - -def distance_traveled(pressed, total_time): - return pressed * (total_time - pressed) - -def part1(lines): - - data = [] - for line in lines: - data.append([int(num) for num in line]) - - races = list( - map(lambda *args: list(args), - *data) - ) - - outputs = defaultdict(lambda : 0) - for i, (total_time, record) in enumerate(races): - for pressed in range(total_time + 1): - d = distance_traveled(pressed, total_time) - if d > record: - outputs[i] += 1 - - pprint(dict(outputs)) - print(reduce(lambda x,y: x*y, outputs.values(), 1)) - - -def distance_between_roots(b, c): - """Because we pass in non-zero `c`, this isn't a root, just the intersection""" - # y = -x**2 + bx + 0 - # a = -1 , b = b, c = -c - - # x = -b +- sqrt(b**2 - 4ac) / 2a - root = math.sqrt( b**2 - (4 * c) ) - x1 = (-b + root) / (-2) - x2 = (-b - root) / (-2) - print(f" root {root}, x1 {x1}, x2 {x2}") - return int(x2) - int(x1) - -def part2(input): - total_time, record = [int("".join(line)) for line in input] - - # x = -b +- sqrt(b**2 - 4ac) / 2a - root = math.sqrt( total_time**2 - (4 * record) ) - x1 = (-total_time + root) // (-2) - x2 = (-total_time - root) // (-2) - print(f" root {root}, x1 {x1}, x2 {x2}") - print(int(x2) - int(x1)) - - -with open(sys.argv[1]) as infile: - input = parse_raw_input(infile.readlines()) - -part1(input) -part2(input) - -print("--- EXPERIMENTAL ---") - -data = [] -for line in input: - data.append([int(num) for num in line]) - -races = list( - map(lambda *args: list(args), - *data) -) - -outputs = {} -for i, (total_time, record) in enumerate(races): - print(f"time {total_time}, record {record}") - outputs[i] = distance_between_roots(total_time, record) - -pprint(outputs) - -print(reduce(lambda x,y: x*y, outputs.values(), 1))