wip
This commit is contained in:
parent
88e2e2fdf7
commit
84d8230517
64
day5/day5.py
Normal file
64
day5/day5.py
Normal file
@ -0,0 +1,64 @@
|
||||
from itertools import zip_longest
|
||||
|
||||
|
||||
def grouper(n, iterable, fillvalue=None):
|
||||
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
|
||||
args = [iter(iterable)] * n
|
||||
return zip_longest(fillvalue=fillvalue, *args)
|
||||
|
||||
|
||||
def part1(sections):
|
||||
# consume seed section
|
||||
_, seeds = next(sections)
|
||||
seeds = [int(s) for s in seeds]
|
||||
print(seeds)
|
||||
|
||||
for name, numbers in sections:
|
||||
# item: range_start, len, offset
|
||||
#mapping = []
|
||||
#for dst, src, length in grouper(3, numbers):
|
||||
#mapping.append((src, lenght, dst))
|
||||
#src = range(int(src), int(src) + int(length))
|
||||
#dst = range(int(dst), int(dst) + int(length))
|
||||
#for k, v in zip(src, dst):
|
||||
# mapping[k] = v
|
||||
|
||||
# apply current mapping on input (using linear search)
|
||||
new_seeds = []
|
||||
for seed in seeds:
|
||||
for dst, src, length in grouper(3, numbers):
|
||||
src, length, dst = int(src), int(length), int(dst)
|
||||
end = dst + (length - 1)
|
||||
if src <= seed < end:
|
||||
new_seed = seed + (dst-src)
|
||||
new_seeds.append(new_seed)
|
||||
break
|
||||
else:
|
||||
new_seeds.append(seed)
|
||||
seeds = new_seeds
|
||||
|
||||
print(seeds)
|
||||
|
||||
|
||||
|
||||
#seeds = [mapping.get(s, None) or s for s in seeds]
|
||||
|
||||
print(f"Part 1, lowest location number = {min(seeds)}")
|
||||
|
||||
def parse_input(infile):
|
||||
with open(infile) as f:
|
||||
sections = f.read().split("\n\n")
|
||||
sections = ((title, numbers) for title, numbers in (s.split(":") for s in sections))
|
||||
sections = ((title, numbers.split()) for title, numbers in sections)
|
||||
return sections
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
import os
|
||||
SCRIPTPATH = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
infile = next(iter(sys.argv[1:]), None)
|
||||
sections = parse_input(infile or os.path.join(SCRIPTPATH, "example.txt"))
|
||||
part1(sections)
|
||||
|
33
day5/example.txt
Normal file
33
day5/example.txt
Normal file
@ -0,0 +1,33 @@
|
||||
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
|
183
day5/input.txt
Normal file
183
day5/input.txt
Normal file
@ -0,0 +1,183 @@
|
||||
seeds: 629551616 310303897 265998072 58091853 3217788227 563748665 2286940694 820803307 1966060902 108698829 190045874 3206262 4045963015 223661537 1544688274 293696584 1038807941 31756878 1224711373 133647424
|
||||
|
||||
seed-to-soil map:
|
||||
3809825462 2725979505 339457863
|
||||
3359244708 2085610478 450580754
|
||||
652041572 2536191232 189788273
|
||||
841829845 3346349446 343599367
|
||||
1408035723 73701258 732851393
|
||||
2140887116 3689948813 88205018
|
||||
0 3778153831 371129494
|
||||
2953980724 0 73701258
|
||||
3027681982 1754047752 331562726
|
||||
2229092134 1029159162 724888590
|
||||
1185429212 806552651 222606511
|
||||
371129494 3065437368 280912078
|
||||
|
||||
soil-to-fertilizer map:
|
||||
201390752 0 263005475
|
||||
772560454 263005475 186665885
|
||||
3597849741 3228095269 216867970
|
||||
959226339 951560560 85171934
|
||||
2882237029 3813801625 34286208
|
||||
0 586356609 16090261
|
||||
1460387186 1189054013 136970257
|
||||
2511361703 2581174071 147006778
|
||||
201110502 1477157137 280250
|
||||
3582774663 3444963239 15075078
|
||||
2073881675 2245158204 30510333
|
||||
3127914126 3163440286 64654983
|
||||
1724767985 602446870 349113690
|
||||
1597357443 1036732494 127410542
|
||||
1044398273 1164143036 24910977
|
||||
635875205 449671360 136685249
|
||||
2916523237 2728180849 211390889
|
||||
1069309250 1854080268 391077936
|
||||
167223128 1820192894 33887374
|
||||
4168481019 2454687794 126486277
|
||||
3496254979 4048626015 86519684
|
||||
2454687794 4238293387 56673909
|
||||
2104392008 1648916365 171276529
|
||||
3814717711 3460038317 353763308
|
||||
464396227 1477437387 171478978
|
||||
2658368481 2939571738 223868548
|
||||
16090261 1326024270 151132867
|
||||
3393107291 4135145699 103147688
|
||||
3192569109 3848087833 200538182
|
||||
|
||||
fertilizer-to-water map:
|
||||
357701033 441924316 54941059
|
||||
2047098412 1574732688 106451110
|
||||
2414997091 2961420861 217583761
|
||||
3647103220 3202843177 147888878
|
||||
1781607871 3397471081 265490541
|
||||
433955285 629676938 29320532
|
||||
3280739425 2494455782 366363795
|
||||
2818710889 1426835569 147897119
|
||||
1120892574 3179004622 23838555
|
||||
1539573533 3662961622 195295312
|
||||
3794992098 1820059317 63264836
|
||||
0 84223283 357701033
|
||||
1144731129 1702496991 117562326
|
||||
2153549522 2046878176 261447569
|
||||
593734757 726830618 239035306
|
||||
987137385 83279657 943626
|
||||
2966608008 0 83279657
|
||||
1734868845 3350732055 46739026
|
||||
1438972249 2860819577 100601284
|
||||
2632580852 2308325745 186130037
|
||||
1262293455 965865924 108845646
|
||||
412642092 1681183798 21313193
|
||||
472462518 1305563330 121272239
|
||||
988081011 496865375 132811563
|
||||
463275817 2037691475 9186701
|
||||
3049887665 1074711570 230851760
|
||||
832770063 1883324153 154367322
|
||||
1371139101 658997470 67833148
|
||||
|
||||
water-to-light map:
|
||||
4062286509 3839153068 91029970
|
||||
1610728246 3827168971 11474903
|
||||
2753947407 2725849236 1101319735
|
||||
2525484879 1829977386 228462528
|
||||
657837215 1095779595 241604827
|
||||
1895347620 1337384422 492592964
|
||||
1425623249 4009599599 185104997
|
||||
2446068318 3930183038 79416561
|
||||
1894838426 3838643874 509194
|
||||
2389619503 896001044 56448815
|
||||
3855267142 2058439914 207019367
|
||||
1187459420 657837215 238163829
|
||||
1622203149 2467395620 172372577
|
||||
2387940584 952449859 1678919
|
||||
985523081 2265459281 201936339
|
||||
4153316479 954128778 141650817
|
||||
1794575726 4194704596 100262700
|
||||
899442042 2688664470 37184766
|
||||
936626808 2639768197 48896273
|
||||
|
||||
light-to-temperature map:
|
||||
0 2682471120 43545350
|
||||
2829609407 2423668531 227914183
|
||||
3685065657 3821208881 65673550
|
||||
1319277847 0 33132672
|
||||
818263707 3091863377 5216721
|
||||
3144636417 670795080 1340457
|
||||
1352410519 895535914 570572224
|
||||
2709351136 1662268878 120258271
|
||||
115643652 2726016470 93054822
|
||||
455333494 1538206440 124062438
|
||||
3839611769 4030334543 30664857
|
||||
3750739207 4258515305 36451991
|
||||
2070721515 33132672 155555065
|
||||
3132740473 2067641423 5192544
|
||||
4147162986 3685065657 58311172
|
||||
4278703737 3743376829 16263559
|
||||
1070098598 2174489282 249179249
|
||||
716608392 2072833967 101655315
|
||||
43545350 1466108138 72098302
|
||||
3057523590 3016646494 75216883
|
||||
2700979566 887164344 8371570
|
||||
4205474158 4060999400 73229579
|
||||
2226276580 188687737 474702986
|
||||
1971879519 1968799427 98841996
|
||||
3931845119 4134228979 124286326
|
||||
579395932 2819071292 137212460
|
||||
3137933017 672135537 6703400
|
||||
1062694241 663390723 7404357
|
||||
3787191198 3886882431 52420571
|
||||
269061216 1782527149 186272278
|
||||
1031805835 2651582714 30888406
|
||||
823480428 678838937 208325407
|
||||
3870276626 3759640388 61568493
|
||||
4056131445 3939303002 91031541
|
||||
1922982743 3097080098 48896776
|
||||
208698474 2956283752 60362742
|
||||
|
||||
temperature-to-humidity map:
|
||||
219529182 731674447 232727899
|
||||
2748076784 2771987989 46463882
|
||||
2514344851 4061235363 233731933
|
||||
0 1369964423 219529182
|
||||
452257081 362359049 21789881
|
||||
4243457964 2720478657 51509332
|
||||
3085663754 3109574959 64704581
|
||||
1639319644 384148930 347525517
|
||||
3150368335 3626166922 251414834
|
||||
1986845161 0 139120377
|
||||
1382707786 1339581093 30383330
|
||||
1413091116 1113352565 226228528
|
||||
2794540666 2818451871 291123088
|
||||
2125965538 338187591 24171458
|
||||
474046962 139120377 157229612
|
||||
2361125570 1100881680 12470885
|
||||
631276574 296349989 41837602
|
||||
3401783169 3428035243 198131679
|
||||
3989702261 3174279540 253755703
|
||||
2224646236 964402346 136479334
|
||||
2150136996 2299087215 74509240
|
||||
3806048654 3877581756 183653607
|
||||
3599914848 2514344851 206133806
|
||||
673114176 1589493605 709593610
|
||||
|
||||
humidity-to-location map:
|
||||
4029426902 1202474782 191291587
|
||||
2764446301 708692227 493782555
|
||||
2188304413 3350514524 33021460
|
||||
3318755823 4213528230 67155117
|
||||
2000392671 620732246 87959981
|
||||
3754724301 3075811923 274702601
|
||||
3258228856 1393766369 60526967
|
||||
2088352652 4113576469 99951761
|
||||
363515622 1849258760 614077493
|
||||
1213242541 342257124 11129119
|
||||
1733046668 353386243 267346003
|
||||
1224371660 4280683347 14283949
|
||||
2577070088 2888435710 187376213
|
||||
4220718489 2832149614 56286096
|
||||
324294413 1810037551 39221209
|
||||
3385910940 2463336253 368813361
|
||||
977593115 3383535984 235649426
|
||||
1238655609 3619185410 494391059
|
||||
4277004585 324294413 17962711
|
||||
2221325873 1454293336 355744215
|
Loading…
Reference in New Issue
Block a user