day 5 literally first try babey
This commit is contained in:
parent
a77e50f4e7
commit
6d63be40ed
|
@ -0,0 +1,76 @@
|
||||||
|
#lang curly-fn racket
|
||||||
|
|
||||||
|
(require "scripts/aoc.rkt")
|
||||||
|
|
||||||
|
;; solution for day 5
|
||||||
|
|
||||||
|
(struct rngmap [dst src len] #:transparent)
|
||||||
|
|
||||||
|
(define (transform-layer num mapping)
|
||||||
|
(or
|
||||||
|
(for/first ([entry (in-list mapping)]
|
||||||
|
#:do [(match-define (rngmap dst src len) entry)]
|
||||||
|
#:when (>= num src)
|
||||||
|
#:when (< num (+ src len)))
|
||||||
|
(+ dst (- num src)))
|
||||||
|
num))
|
||||||
|
|
||||||
|
(define (transform-all num mappings)
|
||||||
|
(for/fold ([cur-num num]) ([mapping (in-list mappings)])
|
||||||
|
(transform-layer cur-num mapping)))
|
||||||
|
|
||||||
|
(define (part1 input)
|
||||||
|
(apply min
|
||||||
|
(for/list ([num (in-list (first input))])
|
||||||
|
(transform-all num (rest input)))))
|
||||||
|
|
||||||
|
(define (part2-transform-layer iset mapping)
|
||||||
|
(define-values [rem-src dst]
|
||||||
|
(for/fold ([cur-src iset] [cur-dst (is:make-integer-set '())])
|
||||||
|
([entry (in-list mapping)]
|
||||||
|
#:do [(match-define (rngmap dst src len) entry)])
|
||||||
|
(define entry-src (is:make-range src (+ src (sub1 len))))
|
||||||
|
(define captured-values (is:intersect cur-src entry-src))
|
||||||
|
(define captured-wfs (is:integer-set-contents captured-values))
|
||||||
|
(define transformed-wfs
|
||||||
|
(for/list ([wfs-entry (in-list captured-wfs)])
|
||||||
|
(cons (+ dst (- (car wfs-entry) src))
|
||||||
|
(+ dst (- (cdr wfs-entry) src)))))
|
||||||
|
(define transformed-iset (is:make-integer-set transformed-wfs))
|
||||||
|
(values (is:subtract cur-src entry-src) (is:union cur-dst transformed-iset))))
|
||||||
|
(is:union rem-src dst))
|
||||||
|
|
||||||
|
(define (part2-transform-all iset mappings)
|
||||||
|
(for/fold ([cur-iset iset]) ([mapping (in-list mappings)])
|
||||||
|
(part2-transform-layer cur-iset mapping)))
|
||||||
|
|
||||||
|
(define (part2 input)
|
||||||
|
(define ranges (first input))
|
||||||
|
(define ranges-iset
|
||||||
|
(for/fold ([is (is:make-integer-set '())])
|
||||||
|
([chunk (in-slice 2 (in-list ranges))])
|
||||||
|
(is:union is
|
||||||
|
(is:make-range (first chunk) (+ (first chunk) (sub1 (second chunk)))))))
|
||||||
|
(define mappings (rest input))
|
||||||
|
(define ranges-out (part2-transform-all ranges-iset mappings))
|
||||||
|
(car (first (is:integer-set-contents ranges-out))))
|
||||||
|
|
||||||
|
(define (parse fname)
|
||||||
|
(match-define (cons initial mappings) (string-split (file->string fname) "\n\n"))
|
||||||
|
(define initial-nums (map string->number (rest (string-split initial " "))))
|
||||||
|
(define mapping-nums
|
||||||
|
(for/list ([map-str (in-list mappings)])
|
||||||
|
(define entries (rest (string-split map-str "\n")))
|
||||||
|
(for/list ([entry (in-list entries)])
|
||||||
|
(match-define (list dst src len) (map string->number (string-split entry " ")))
|
||||||
|
(rngmap dst src len))))
|
||||||
|
(cons initial-nums mapping-nums))
|
||||||
|
|
||||||
|
; (part2 (parse "inputs/5-test1"))
|
||||||
|
; (error)
|
||||||
|
|
||||||
|
(module+ main
|
||||||
|
(define input (parse "inputs/5"))
|
||||||
|
(answer 5 1 (time (part1 input)))
|
||||||
|
(answer 5 2 (time (part2 input)))
|
||||||
|
(displayln "meow"))
|
|
@ -0,0 +1,197 @@
|
||||||
|
seeds: 1972667147 405592018 1450194064 27782252 348350443 61862174 3911195009 181169206 626861593 138786487 2886966111 275299008 825403564 478003391 514585599 6102091 2526020300 15491453 3211013652 546191739
|
||||||
|
|
||||||
|
seed-to-soil map:
|
||||||
|
325190047 421798005 78544109
|
||||||
|
4034765382 1473940091 137996533
|
||||||
|
403734156 658668780 288666603
|
||||||
|
2574766003 2624114227 17352982
|
||||||
|
1931650757 2203381572 98211987
|
||||||
|
4263596455 2843660329 31370841
|
||||||
|
1614547845 2641467209 55121215
|
||||||
|
3441604278 2032673361 170708211
|
||||||
|
692400759 563703672 94965108
|
||||||
|
2992851755 3824700930 114550818
|
||||||
|
3957953582 2540115966 24844899
|
||||||
|
0 500342114 59804107
|
||||||
|
4172761915 2577017231 47096996
|
||||||
|
2029862744 3548344768 52256082
|
||||||
|
2620304610 2875031170 99567251
|
||||||
|
3982798481 3939251748 51966901
|
||||||
|
2325101894 1616388089 203150170
|
||||||
|
3612312489 1611936624 4451465
|
||||||
|
787365867 0 77461445
|
||||||
|
1341614907 4162572181 132395115
|
||||||
|
2542801978 3468402968 31964025
|
||||||
|
223387052 947335383 59156225
|
||||||
|
2297805420 1819538259 27296474
|
||||||
|
2082118826 3991218649 171353532
|
||||||
|
3374211778 3040047171 67392500
|
||||||
|
2592118985 1341614907 28185625
|
||||||
|
2253472358 2495782904 44333062
|
||||||
|
4219858911 3780963386 43737544
|
||||||
|
59804107 560146221 3557451
|
||||||
|
3107402573 3600600850 64973479
|
||||||
|
1669669060 3115086052 235712356
|
||||||
|
2719871861 1369800532 104139559
|
||||||
|
3172376052 2301593559 194189345
|
||||||
|
2980795389 2564960865 12056366
|
||||||
|
1905381416 3350798408 26269341
|
||||||
|
63361558 261772511 160025494
|
||||||
|
2824011420 3377067749 91335219
|
||||||
|
3366565397 3107439671 7646381
|
||||||
|
282543277 77461445 42646770
|
||||||
|
3713793353 2696588424 147071905
|
||||||
|
2528252064 1877585624 14549914
|
||||||
|
3927202691 1846834733 30750891
|
||||||
|
3665815578 3500366993 47977775
|
||||||
|
1474010022 1892135538 140537823
|
||||||
|
3616763954 3665574329 49051624
|
||||||
|
2915346639 2974598421 65448750
|
||||||
|
864827312 120108215 141664296
|
||||||
|
3860865258 3714625953 66337433
|
||||||
|
|
||||||
|
soil-to-fertilizer map:
|
||||||
|
3835605444 4098164436 1662218
|
||||||
|
682286299 0 63480553
|
||||||
|
396476124 2072802434 285810175
|
||||||
|
1644893571 655614677 162631098
|
||||||
|
3625179075 4099826654 40627721
|
||||||
|
1431211762 1859120625 213681809
|
||||||
|
2853687843 4140454375 103601386
|
||||||
|
1390165578 2358612609 41046184
|
||||||
|
2405285827 3959200676 138963760
|
||||||
|
900243562 1478767251 170015757
|
||||||
|
3727732722 3084190064 107872722
|
||||||
|
893948759 1084467374 6294803
|
||||||
|
210337617 818245775 186138507
|
||||||
|
1807524669 63480553 592134124
|
||||||
|
825849944 1090762177 68098815
|
||||||
|
3837267662 3192062786 457699634
|
||||||
|
0 1648783008 210337617
|
||||||
|
3665806796 2405285827 61925926
|
||||||
|
1070259319 1158860992 319906259
|
||||||
|
745766852 1004384282 80083092
|
||||||
|
2957289229 4244055761 50911535
|
||||||
|
2544249587 3649762420 309438256
|
||||||
|
3008200764 2467211753 616978311
|
||||||
|
|
||||||
|
fertilizer-to-water map:
|
||||||
|
1169336944 3024036226 46676171
|
||||||
|
1263157944 1445876546 148868263
|
||||||
|
2080390054 2683279801 65621604
|
||||||
|
949040795 1266013203 61140343
|
||||||
|
2146011658 2793621589 110265098
|
||||||
|
525510412 2618124082 65155719
|
||||||
|
2977122301 3122211455 179751286
|
||||||
|
3885825304 713560214 409141992
|
||||||
|
1081017627 4124851079 88319317
|
||||||
|
590666131 2039951828 38597255
|
||||||
|
3596454634 1981772613 58179215
|
||||||
|
2256276756 2078549083 315165891
|
||||||
|
1639631621 1122702206 143310997
|
||||||
|
2858399301 1327153546 118723000
|
||||||
|
3654633849 3301962741 72039868
|
||||||
|
749412925 3549292249 161128796
|
||||||
|
1412026207 541983534 151190298
|
||||||
|
1054901322 4268850991 26116305
|
||||||
|
1829368778 3374002609 175289640
|
||||||
|
1216013115 2570979253 47144829
|
||||||
|
2806900243 3070712397 51499058
|
||||||
|
1563216505 3760425124 76415116
|
||||||
|
1782942618 3710421045 29953038
|
||||||
|
629263386 2903886687 120149539
|
||||||
|
2060339013 3740374083 20051041
|
||||||
|
3156873587 3836840240 52553243
|
||||||
|
2693038006 4010988842 113862237
|
||||||
|
3726673717 2411827666 159151587
|
||||||
|
2004658418 4213170396 55680595
|
||||||
|
1812895656 525510412 16473122
|
||||||
|
1010181138 2748901405 44720184
|
||||||
|
910541721 693173832 20386382
|
||||||
|
930928103 2393714974 18112692
|
||||||
|
3209426830 1594744809 387027804
|
||||||
|
2571442647 3889393483 121595359
|
||||||
|
|
||||||
|
water-to-light map:
|
||||||
|
555269773 2142838063 230952411
|
||||||
|
2879443939 2889030006 80512763
|
||||||
|
192641991 2686257040 106620606
|
||||||
|
786222184 967781117 56662479
|
||||||
|
3467110983 4162792381 132174915
|
||||||
|
1955778230 0 505352386
|
||||||
|
2461130616 1138855522 99691153
|
||||||
|
1436321461 1403321335 440861327
|
||||||
|
2625559119 1024443596 104825859
|
||||||
|
1255310011 2792877646 96152360
|
||||||
|
1877182788 697994377 78595442
|
||||||
|
3732975066 3467110983 374194949
|
||||||
|
842884663 2373790474 56459390
|
||||||
|
299262597 2430249864 256007176
|
||||||
|
3599285898 3841305932 133689168
|
||||||
|
4107170015 3974995100 187797281
|
||||||
|
0 505352386 192641991
|
||||||
|
1090535351 1238546675 164774660
|
||||||
|
2959956702 1129269455 9586067
|
||||||
|
1351462371 1844182662 84859090
|
||||||
|
2730384978 1929041752 149058961
|
||||||
|
899344053 776589819 191191298
|
||||||
|
2560821769 2078100713 64737350
|
||||||
|
|
||||||
|
light-to-temperature map:
|
||||||
|
4103141199 3912772142 105835099
|
||||||
|
1994281004 833968687 112844016
|
||||||
|
4208976298 1124841590 85990998
|
||||||
|
3756966983 4018607241 111390720
|
||||||
|
3868357703 1907239336 234783496
|
||||||
|
2368591640 1210832588 293667703
|
||||||
|
882426579 2320467318 1111854425
|
||||||
|
3064998388 717457244 33489309
|
||||||
|
3578938096 946812703 178028887
|
||||||
|
2107125020 750946553 83022134
|
||||||
|
3157760738 3432321743 421177358
|
||||||
|
717457244 4129997961 164969335
|
||||||
|
2190147154 2142022832 178444486
|
||||||
|
3098487697 3853499101 59273041
|
||||||
|
2662259343 1504500291 402739045
|
||||||
|
|
||||||
|
temperature-to-humidity map:
|
||||||
|
0 1820412620 129662806
|
||||||
|
613828383 2855382935 55943394
|
||||||
|
4004726464 3519717349 290240832
|
||||||
|
769767991 99996214 1720416406
|
||||||
|
3126066249 3043992795 475724554
|
||||||
|
2490184397 2434241003 421141932
|
||||||
|
129662806 1950075426 484165577
|
||||||
|
689805485 0 79962506
|
||||||
|
669771777 79962506 20033708
|
||||||
|
3601790803 3809958181 402935661
|
||||||
|
3043992795 4212893842 82073454
|
||||||
|
|
||||||
|
humidity-to-location map:
|
||||||
|
1305211417 3371927062 89487200
|
||||||
|
947159122 0 358052295
|
||||||
|
324330151 2021970861 8067408
|
||||||
|
332397559 654359706 174171341
|
||||||
|
506568900 3311893445 60033617
|
||||||
|
11065691 828531047 45586147
|
||||||
|
3556729147 369117986 26689998
|
||||||
|
3583419145 395807984 258551722
|
||||||
|
2356886904 984938593 400606547
|
||||||
|
1394698617 874117194 110821399
|
||||||
|
566602517 3946624826 164852367
|
||||||
|
2998901322 2301963630 256425441
|
||||||
|
0 358052295 11065691
|
||||||
|
3331964991 3087129289 34908052
|
||||||
|
1505520016 2106676497 195287133
|
||||||
|
56651838 2819450976 267678313
|
||||||
|
3366873043 3293025783 18867662
|
||||||
|
3385740705 3122037341 170988442
|
||||||
|
2281795782 2799796942 19654034
|
||||||
|
2301449816 1966533773 55437088
|
||||||
|
3992934054 3677118500 118543139
|
||||||
|
3255326763 2030038269 76638228
|
||||||
|
3849868384 3803559156 143065670
|
||||||
|
2757493451 2558389071 241407871
|
||||||
|
3841970867 3795661639 7897517
|
||||||
|
1700807149 1385545140 580988633
|
||||||
|
731454884 3461414262 215704238
|
|
@ -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
|
Loading…
Reference in New Issue