Day 5 Part 1 complete
This commit is contained in:
parent
1f8afe5af0
commit
916e52783a
@ -5,5 +5,6 @@ edition = "2021"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
fancy-regex = "0.12.0"
|
fancy-regex = "0.12.0"
|
||||||
|
itertools = "0.12.0"
|
||||||
strum = "0.25.0"
|
strum = "0.25.0"
|
||||||
strum_macros = "0.25.3"
|
strum_macros = "0.25.3"
|
||||||
|
239
src/input/day05
239
src/input/day05
@ -0,0 +1,239 @@
|
|||||||
|
seeds: 91926764 235794528 3279509610 325625103 2781720183 218217413 1315129829 102999617 3995609239 143268116 358337926 185836835 1543999077 241888600 1795811745 806228439 2616560939 56204204 869828854 224520829
|
||||||
|
|
||||||
|
seed-to-soil map:
|
||||||
|
2076625497 3385713231 258448094
|
||||||
|
933162806 1124446801 128749435
|
||||||
|
744984268 625015359 188178538
|
||||||
|
551924411 211563684 96582495
|
||||||
|
2664738738 2072311374 297142807
|
||||||
|
1406760174 813193897 14102104
|
||||||
|
0 1274151473 331435427
|
||||||
|
403777493 976299883 148146918
|
||||||
|
1987639580 2783535044 88985917
|
||||||
|
4074594902 3332858447 52854784
|
||||||
|
1484055780 86124597 125439087
|
||||||
|
331435427 371339681 72342066
|
||||||
|
1146768491 1605586900 152911849
|
||||||
|
3283022369 2992105862 70998045
|
||||||
|
648506906 528537997 96477362
|
||||||
|
1609494867 827296001 149003882
|
||||||
|
3685297224 3111036616 121638972
|
||||||
|
1420862278 308146179 63193502
|
||||||
|
2961881545 3644161325 321140824
|
||||||
|
1061912241 443681747 56957522
|
||||||
|
4127449686 2872520961 119584901
|
||||||
|
3806936196 2497318144 139794743
|
||||||
|
3585114365 3232675588 100182859
|
||||||
|
1118869763 500639269 27898728
|
||||||
|
2335073591 3965302149 329665147
|
||||||
|
3984585308 2407308550 90009594
|
||||||
|
1320635577 0 86124597
|
||||||
|
1841217423 2637112887 146422157
|
||||||
|
4247034587 3063103907 47932709
|
||||||
|
1299680340 1253196236 20955237
|
||||||
|
3354020414 1841217423 231093951
|
||||||
|
3946730939 2369454181 37854369
|
||||||
|
|
||||||
|
soil-to-fertilizer map:
|
||||||
|
3384134166 1995234330 176305237
|
||||||
|
1155226403 855999534 411447090
|
||||||
|
2208613005 3459130785 737289315
|
||||||
|
3115190977 2188772380 56379264
|
||||||
|
3046023331 2245151644 69167646
|
||||||
|
3287350250 3362346869 96783916
|
||||||
|
0 688893976 167105558
|
||||||
|
199962926 1300303992 576627555
|
||||||
|
1566673493 0 380943110
|
||||||
|
1995234330 2314319290 213378675
|
||||||
|
776590481 380943110 307950866
|
||||||
|
3560439403 2527697965 734527893
|
||||||
|
2945902320 3262225858 100121011
|
||||||
|
1084541347 1876931547 70685056
|
||||||
|
3229639031 4196420100 40478406
|
||||||
|
3270117437 2171539567 17232813
|
||||||
|
167105558 1267446624 32857368
|
||||||
|
3171570241 4236898506 58068790
|
||||||
|
|
||||||
|
fertilizer-to-water map:
|
||||||
|
2261570026 3454758517 88568015
|
||||||
|
1802864872 1796719466 196521844
|
||||||
|
1029796290 924285105 94936250
|
||||||
|
1502956048 1019221355 34573577
|
||||||
|
1675836952 4234138393 33837263
|
||||||
|
383249040 0 273576862
|
||||||
|
1124732540 457794332 53985776
|
||||||
|
2350138041 2091507351 48912742
|
||||||
|
1674136750 1795019264 1700202
|
||||||
|
3859927050 2781536522 163983633
|
||||||
|
90982234 273576862 129799649
|
||||||
|
1537529625 511780108 260859
|
||||||
|
2488789087 1993241310 98266041
|
||||||
|
2196492990 3543326532 49319261
|
||||||
|
2254009624 2694827028 7560402
|
||||||
|
2587055128 3111811340 69748037
|
||||||
|
2002799677 4168500219 65638174
|
||||||
|
840643879 512040967 108011574
|
||||||
|
1390364751 688875858 8559931
|
||||||
|
1398924682 721632529 104031366
|
||||||
|
656825902 620052541 68823317
|
||||||
|
1709674215 3189756750 73094246
|
||||||
|
2068437851 1671843595 123175669
|
||||||
|
73501861 906804732 17480373
|
||||||
|
2656803165 3853597757 225164158
|
||||||
|
3592079857 3612742204 240855553
|
||||||
|
2191613520 2945520155 4879470
|
||||||
|
2881967323 2950399625 161411715
|
||||||
|
0 1085334645 69517503
|
||||||
|
725649219 697435789 24196740
|
||||||
|
2245812251 3181559377 8197373
|
||||||
|
220781883 1375323327 162467157
|
||||||
|
3270779999 2140420093 321299858
|
||||||
|
2399050783 4078761915 89738304
|
||||||
|
4023910683 2702387430 79149092
|
||||||
|
69517503 1053794932 3984358
|
||||||
|
1782768461 3592645793 20096411
|
||||||
|
1308391575 1057779290 27555355
|
||||||
|
749845959 1154852148 61727890
|
||||||
|
1671843595 2692533873 2293155
|
||||||
|
1335946930 403376511 54417821
|
||||||
|
3832935410 4267975656 26991640
|
||||||
|
3043379038 2461719951 227400961
|
||||||
|
948655453 825663895 81140837
|
||||||
|
4103059775 3262850996 191907521
|
||||||
|
1999386716 2689120912 3412961
|
||||||
|
1178718316 1216580038 129673259
|
||||||
|
811573849 1346253297 29070030
|
||||||
|
|
||||||
|
water-to-light map:
|
||||||
|
12536522 803922375 381092756
|
||||||
|
1034093555 2274122448 375903462
|
||||||
|
4046347183 3727145496 30218294
|
||||||
|
1644177017 1468743601 210972620
|
||||||
|
2033158562 0 65899273
|
||||||
|
3918690677 4044943223 48984895
|
||||||
|
3252369528 2650025910 46811980
|
||||||
|
3846317697 4159436488 72372980
|
||||||
|
825337225 701230416 92775221
|
||||||
|
708443948 3110054761 116893277
|
||||||
|
4281152040 4231809468 13815256
|
||||||
|
4076565477 3945094008 99849215
|
||||||
|
467053271 262914333 56912139
|
||||||
|
457136533 794005637 9916738
|
||||||
|
4176414692 3757363790 104737348
|
||||||
|
1960807084 319826472 72351478
|
||||||
|
3983208893 4096298198 63138290
|
||||||
|
2099057835 2696837890 179036871
|
||||||
|
3400708401 4093928118 2370080
|
||||||
|
393629278 2210615193 63507255
|
||||||
|
2278094706 1723463860 487151333
|
||||||
|
3351365829 4245624724 49342572
|
||||||
|
523965410 65899273 184478538
|
||||||
|
1855149637 595572969 105657447
|
||||||
|
2765246039 1185015131 283728470
|
||||||
|
961860085 3226948038 72233470
|
||||||
|
3967675572 3711612175 15533321
|
||||||
|
3486071351 3351365829 360246346
|
||||||
|
3403078481 3862101138 82992870
|
||||||
|
918112446 1679716221 43747639
|
||||||
|
1409997017 2875874761 234180000
|
||||||
|
0 250377811 12536522
|
||||||
|
3048974509 392177950 203395019
|
||||||
|
|
||||||
|
light-to-temperature map:
|
||||||
|
3663115998 2273256818 16619810
|
||||||
|
1779396221 3140211126 35421643
|
||||||
|
1671064478 2289876628 5675989
|
||||||
|
2459496143 2164474153 65282060
|
||||||
|
1676740467 3228344832 68171740
|
||||||
|
3108268812 3396614149 34367621
|
||||||
|
0 1247024027 117995309
|
||||||
|
3142636433 2302123739 520479565
|
||||||
|
3914906966 3296516572 48028032
|
||||||
|
1451315146 20271696 29756177
|
||||||
|
3962934998 1685507004 235533336
|
||||||
|
3679735808 3872604190 235171158
|
||||||
|
201522431 0 20271696
|
||||||
|
2606764356 2257434699 15822119
|
||||||
|
1095940165 930151315 235007724
|
||||||
|
2092197835 2032400258 15603728
|
||||||
|
1814817864 4107775348 187191948
|
||||||
|
2107801563 3430981770 351694580
|
||||||
|
221794127 50027873 874146038
|
||||||
|
2524778203 2082488000 81986153
|
||||||
|
4205039456 3811944039 60660151
|
||||||
|
2622586475 1921040340 111359918
|
||||||
|
3051554215 3344544604 52069545
|
||||||
|
1605883623 1648004635 37502369
|
||||||
|
3103623760 1643359583 4645052
|
||||||
|
1412812877 1442569054 38502269
|
||||||
|
2039485772 3175632769 52712063
|
||||||
|
123972713 1365019336 77549718
|
||||||
|
1744912207 2048003986 34484014
|
||||||
|
4198468334 2295552617 6571122
|
||||||
|
2733946393 2822603304 317607822
|
||||||
|
117995309 924173911 5977404
|
||||||
|
1330947889 1165159039 81864988
|
||||||
|
2002009812 1605883623 37475960
|
||||||
|
4265699607 3782676350 29267689
|
||||||
|
1643385992 2229756213 27678486
|
||||||
|
|
||||||
|
temperature-to-humidity map:
|
||||||
|
1358631653 987873070 147949589
|
||||||
|
2413964705 2097965649 70341317
|
||||||
|
816457527 972386794 15486276
|
||||||
|
2080824412 2168306966 250363611
|
||||||
|
958855341 2055074721 42890928
|
||||||
|
1948315905 1968747613 86327108
|
||||||
|
1810667112 2669632213 137648793
|
||||||
|
2484306022 857156868 115229926
|
||||||
|
1001746269 1523646763 356885384
|
||||||
|
1641013697 687503453 169653415
|
||||||
|
2698691839 0 56146061
|
||||||
|
4138641394 2975929973 156325902
|
||||||
|
831943803 2418670577 38696072
|
||||||
|
3039761928 4068116224 226851072
|
||||||
|
870639875 1880532147 88215466
|
||||||
|
2975929973 3132255875 63831955
|
||||||
|
3839900820 3497181952 298740574
|
||||||
|
3567707122 3795922526 272193698
|
||||||
|
3266613000 3203991608 293190344
|
||||||
|
83162889 56146061 361318942
|
||||||
|
1506581242 553070998 134432455
|
||||||
|
2754837900 500627892 52443106
|
||||||
|
2034643013 1135822659 46181399
|
||||||
|
786124536 2556522540 30332991
|
||||||
|
2599535948 2457366649 99155891
|
||||||
|
3559803344 3196087830 7903778
|
||||||
|
0 417465003 83162889
|
||||||
|
444481831 1182004058 341642705
|
||||||
|
2331188023 2586855531 82776682
|
||||||
|
|
||||||
|
humidity-to-location map:
|
||||||
|
1050996268 1532072704 311260544
|
||||||
|
3180071790 2724566227 289337188
|
||||||
|
4221284312 3899164493 35309413
|
||||||
|
3807278034 2656088631 16719113
|
||||||
|
1362256812 2203016881 453071750
|
||||||
|
338253566 1843333248 359683633
|
||||||
|
697937199 1009396889 40111814
|
||||||
|
2970507299 3589172780 195028044
|
||||||
|
2338906915 3808103383 1357317
|
||||||
|
1879134746 3052743004 5325923
|
||||||
|
1815328562 346829408 63806184
|
||||||
|
3899164493 3972847477 185700981
|
||||||
|
2340264232 0 83356697
|
||||||
|
2610350026 3013903415 38839589
|
||||||
|
0 671143323 338253566
|
||||||
|
2423620929 3402443683 186729097
|
||||||
|
738049013 1049508703 312947255
|
||||||
|
1884460669 561071833 110071490
|
||||||
|
3714686766 254238140 92591268
|
||||||
|
3469408978 1362455958 169616746
|
||||||
|
2799625856 83356697 170881443
|
||||||
|
3639025724 3784200824 23902559
|
||||||
|
4084865474 4158548458 136418838
|
||||||
|
1994532159 3058068927 344374756
|
||||||
|
4256593725 3934473906 38373571
|
||||||
|
3165535343 3809460700 14536447
|
||||||
|
2649189615 410635592 150436241
|
||||||
|
3662928283 2672807744 51758483
|
@ -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
|
@ -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
|
0
src/input/day06
Normal file
0
src/input/day06
Normal file
0
src/input/day06_test1
Normal file
0
src/input/day06_test1
Normal file
0
src/input/day06_test2
Normal file
0
src/input/day06_test2
Normal file
@ -1,7 +1,7 @@
|
|||||||
mod solutions;
|
mod solutions;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
use std::{error::Error, sync::{Arc, Mutex}};
|
use std::error::Error;
|
||||||
|
|
||||||
use solutions::*;
|
use solutions::*;
|
||||||
|
|
||||||
|
@ -1,13 +1,23 @@
|
|||||||
use super::Solution;
|
use super::Solution;
|
||||||
|
use itertools::Itertools;
|
||||||
|
|
||||||
pub struct Day05 {}
|
pub struct Day05 {}
|
||||||
|
|
||||||
impl Solution for Day05 {
|
impl Solution for Day05 {
|
||||||
fn part1(
|
fn part1(
|
||||||
&self,
|
&self,
|
||||||
_input: &mut Vec<String>,
|
input: &mut Vec<String>,
|
||||||
) -> Result<Box<dyn std::fmt::Display>, Box<dyn std::error::Error>> {
|
) -> Result<Box<dyn std::fmt::Display>, Box<dyn std::error::Error>> {
|
||||||
Ok(Box::new("Ready"))
|
let (seeds, maps) = self.get_mappings(input)?;
|
||||||
|
let locations = maps.iter().fold(seeds, |seeds, mappings|
|
||||||
|
seeds.iter().map(|&seed|
|
||||||
|
mappings.iter()
|
||||||
|
.find(|&&(_, src, range)| (src..src+range).contains(&seed))
|
||||||
|
.map(|(dst, src, _)| dst + seed - src)
|
||||||
|
.unwrap_or(seed)
|
||||||
|
).collect()
|
||||||
|
);
|
||||||
|
Ok(Box::new(*locations.iter().min().unwrap()))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part2(
|
fn part2(
|
||||||
@ -22,7 +32,26 @@ impl Solution for Day05 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Day05 {}
|
impl Day05 {
|
||||||
|
fn get_mappings(&self, input: &Vec<String>) -> Result<(Vec<usize>, Vec<Vec<(usize, usize, usize)>>), Box<dyn std::error::Error>> {
|
||||||
|
let seeds: Vec<usize> = input[0].split_whitespace()
|
||||||
|
.skip(1)
|
||||||
|
.map(|s| s.parse().unwrap())
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let maps: Vec<Vec<(usize, usize, usize)>> = input[2..input.len()].join("\n")
|
||||||
|
.split("\n\n").map(|s|
|
||||||
|
s.split('\n').skip(1).map(|l|
|
||||||
|
l.split_whitespace()
|
||||||
|
.map(|s| s.parse().unwrap())
|
||||||
|
.collect_tuple()
|
||||||
|
.unwrap()
|
||||||
|
).collect::<Vec<_>>()
|
||||||
|
).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
Ok((seeds, maps))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Test from puzzle input
|
/// Test from puzzle input
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -44,7 +73,7 @@ mod test {
|
|||||||
.unwrap()
|
.unwrap()
|
||||||
.to_string();
|
.to_string();
|
||||||
|
|
||||||
assert_eq!(answer, "Ready");
|
assert_eq!(answer, "35");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -18,7 +18,7 @@ impl Solution for Day06 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_day(&self) -> u8 {
|
fn get_day(&self) -> u8 {
|
||||||
5
|
6
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user