feat: implement day05
This commit is contained in:
parent
1107d64d6b
commit
f165c8fa66
97
Cargo.lock
generated
97
Cargo.lock
generated
@ -13,4 +13,101 @@ name = "aoc-2023"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"itertools",
|
||||||
|
"rayon",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "autocfg"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-deque"
|
||||||
|
version = "0.8.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"crossbeam-epoch",
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-epoch"
|
||||||
|
version = "0.9.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"cfg-if",
|
||||||
|
"crossbeam-utils",
|
||||||
|
"memoffset",
|
||||||
|
"scopeguard",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-utils"
|
||||||
|
version = "0.8.16"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "either"
|
||||||
|
version = "1.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.12.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memoffset"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rayon"
|
||||||
|
version = "1.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
"rayon-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rayon-core"
|
||||||
|
version = "1.12.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-deque",
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "scopeguard"
|
||||||
|
version = "1.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||||
|
@ -7,3 +7,5 @@ edition = "2021"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
|
rayon = "1.8.0"
|
||||||
|
itertools = { version = "0.12.0", features = [] }
|
@ -1,17 +1,22 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
use std::time::Instant;
|
||||||
|
|
||||||
pub fn execute_task01(content: &str) {
|
pub fn execute_task01(content: &str) {
|
||||||
|
let start = Instant::now();
|
||||||
let sum_of_numbers = solve_01(content).unwrap();
|
let sum_of_numbers = solve_01(content).unwrap();
|
||||||
|
let duration = start.elapsed();
|
||||||
|
|
||||||
assert_eq!(25231, sum_of_numbers);
|
assert_eq!(25231, sum_of_numbers);
|
||||||
println!("Day04 - Task01 - Sum of correct Numbers: {}", sum_of_numbers)
|
println!("Day04 - Task01 - Duration {duration:?}- Sum of correct Numbers: {}", sum_of_numbers)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn execute_task02(content: &str) {
|
pub fn execute_task02(content: &str) {
|
||||||
|
let start = Instant::now();
|
||||||
let sum_of_numbers = solve_02(content).unwrap();
|
let sum_of_numbers = solve_02(content).unwrap();
|
||||||
|
let duration = start.elapsed();
|
||||||
|
|
||||||
assert_eq!(9721255, sum_of_numbers);
|
assert_eq!(9721255, sum_of_numbers);
|
||||||
println!("Day04 - Task02 - Sum of correct Numbers: {}", sum_of_numbers)
|
println!("Day04 - Task02 - Duration {duration:?} - Sum of correct Numbers: {}", sum_of_numbers)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn solve_01(data: &str) -> anyhow::Result<usize> {
|
pub fn solve_01(data: &str) -> anyhow::Result<usize> {
|
||||||
|
255
src/day05.rs
Normal file
255
src/day05.rs
Normal file
@ -0,0 +1,255 @@
|
|||||||
|
use std::collections::{HashMap};
|
||||||
|
use std::time::Instant;
|
||||||
|
use itertools::Itertools;
|
||||||
|
use rayon::prelude::*;
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
struct MapLine {
|
||||||
|
dest_range_start: u64,
|
||||||
|
source_range_start: u64,
|
||||||
|
range_length: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<String> for MapLine {
|
||||||
|
fn from(value: String) -> Self {
|
||||||
|
let mut numbers = value
|
||||||
|
.split(" ")
|
||||||
|
.map(|number| number.parse::<u64>().unwrap());
|
||||||
|
|
||||||
|
MapLine{
|
||||||
|
dest_range_start: numbers.next().unwrap(),
|
||||||
|
source_range_start: numbers.next().unwrap(),
|
||||||
|
range_length: numbers.next().unwrap(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MapLine {
|
||||||
|
fn is_in_range(&self, number: u64) -> bool {
|
||||||
|
return self.source_range_start <= number && self.source_range_start + self.range_length > number
|
||||||
|
}
|
||||||
|
|
||||||
|
fn convert(&self, number: u64) -> u64 {
|
||||||
|
let diff = number - self.source_range_start;
|
||||||
|
return self.dest_range_start + diff;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn source_start(&self) -> u64 {
|
||||||
|
self.source_range_start
|
||||||
|
}
|
||||||
|
|
||||||
|
fn source_end(&self) -> u64 {
|
||||||
|
self.source_range_start + self.range_length
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
struct ConvertMap {
|
||||||
|
from: String,
|
||||||
|
to: String,
|
||||||
|
|
||||||
|
lines: Vec<MapLine>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ConvertMap {
|
||||||
|
fn new(key: String, data: Vec<&str>) -> Self {
|
||||||
|
let convert_title = key.split_once("-to-").unwrap();
|
||||||
|
|
||||||
|
ConvertMap{
|
||||||
|
from: convert_title.0.to_owned(),
|
||||||
|
to: convert_title.1.to_owned(),
|
||||||
|
lines: data.iter().map(|line| MapLine::from(line.to_string())).collect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn map(&self, data: u64) -> u64 {
|
||||||
|
|
||||||
|
self.lines
|
||||||
|
.iter()
|
||||||
|
.filter(|convert| convert.is_in_range(data))
|
||||||
|
.map(|convert| convert.convert(data))
|
||||||
|
.next().unwrap_or(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn from(&self) -> &str {
|
||||||
|
&self.from
|
||||||
|
}
|
||||||
|
|
||||||
|
fn to(&self) -> &str {
|
||||||
|
&self.to
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub fn execute_task01(content: &str) {
|
||||||
|
let start = Instant::now();
|
||||||
|
let lowest_location = solve_01(content).unwrap();
|
||||||
|
let duration = start.elapsed();
|
||||||
|
|
||||||
|
assert_eq!(322500873, lowest_location);
|
||||||
|
println!("Day05 - Task01 - Duration: {:?} - Lowest Location: {}", duration, lowest_location)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn execute_task02(content: &str) {
|
||||||
|
let start = Instant::now();
|
||||||
|
let lowest_range_location = solve_02(content).unwrap();
|
||||||
|
let duration = start.elapsed();
|
||||||
|
|
||||||
|
assert_eq!(108956227, lowest_range_location);
|
||||||
|
println!("Day05 - Task02 - Duration: {:?} - Lowest Seed Range Location: {}", duration, lowest_range_location)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn solve_01(data: &str) -> anyhow::Result<u64> {
|
||||||
|
let (seeds, convert_maps) = convert_input_to_convert_maps(data);
|
||||||
|
|
||||||
|
Ok(seeds.iter()
|
||||||
|
.map(|seed| convert_maps
|
||||||
|
.iter()
|
||||||
|
.fold(seed.clone(), |acc, map| map.map(acc)))
|
||||||
|
.min().unwrap())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn solve_02(data: &str) -> anyhow::Result<u64> {
|
||||||
|
let (seeds, convert_maps) = convert_input_to_convert_maps(data);
|
||||||
|
|
||||||
|
Ok(seeds
|
||||||
|
.chunks(2)
|
||||||
|
.into_iter()
|
||||||
|
.map(|chunk| chunk.iter().collect_tuple().unwrap())
|
||||||
|
.map(|(start, range)| *start..start+range)
|
||||||
|
.par_bridge()
|
||||||
|
.flat_map(|seed_range| {
|
||||||
|
seed_range.clone().into_par_iter()
|
||||||
|
.map(|seed| convert_maps
|
||||||
|
.iter()
|
||||||
|
.fold(seed, |acc, map| map.map(acc)))
|
||||||
|
})
|
||||||
|
.min().unwrap())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn convert_input_to_convert_maps(input: &str) -> (Vec<u64>, Vec<ConvertMap>) {
|
||||||
|
let mut lines = input.lines();
|
||||||
|
let seed_line = lines.next().unwrap();
|
||||||
|
lines.next();
|
||||||
|
let mut maps: Vec<Vec<&str>> = vec![];
|
||||||
|
|
||||||
|
let mut data = vec![];
|
||||||
|
let mut key = String::new();
|
||||||
|
|
||||||
|
for line in lines {
|
||||||
|
if line.is_empty() {
|
||||||
|
maps.push(data);
|
||||||
|
key = String::new();
|
||||||
|
data = vec![];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if key.is_empty() {
|
||||||
|
key = line.to_owned();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
data.push(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
maps.push(data);
|
||||||
|
|
||||||
|
let mut convert_map: Vec<ConvertMap> = vec![];
|
||||||
|
for map in maps {
|
||||||
|
let map = ConvertMap::new("data-to-data".to_owned(), map);
|
||||||
|
convert_map.push(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
(seed_line
|
||||||
|
.split_once(": ").unwrap().1
|
||||||
|
.split(" ")
|
||||||
|
.map(|data| data.trim())
|
||||||
|
.filter(|data| data.len() > 0)
|
||||||
|
.map(|num| num.parse::<u64>().unwrap())
|
||||||
|
.collect(),
|
||||||
|
convert_map)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn test_solve_01() {
|
||||||
|
let example = r#"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"#;
|
||||||
|
|
||||||
|
let result = solve_01(example).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(35, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn test_solve_02() {
|
||||||
|
let example = r#"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"#;
|
||||||
|
|
||||||
|
let result = solve_02(example).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(46, result);
|
||||||
|
}
|
206
src/input/day05/input.txt
Normal file
206
src/input/day05/input.txt
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
seeds: 1367444651 99920667 3319921504 153335682 67832336 139859832 2322838536 666063790 1591621692 111959634 442852010 119609663 733590868 56288233 2035874278 85269124 4145746192 55841637 864476811 347179760
|
||||||
|
|
||||||
|
seed-to-soil map:
|
||||||
|
873256303 3438158294 3400501
|
||||||
|
3338810960 408700040 99469568
|
||||||
|
876656804 586381004 55967396
|
||||||
|
2937187724 3352513245 85645049
|
||||||
|
3633224442 4294716315 250981
|
||||||
|
4063203128 3993405594 231764168
|
||||||
|
628606346 884567853 85164246
|
||||||
|
1848085960 2225191252 328179324
|
||||||
|
1686068310 2992301693 162017650
|
||||||
|
1456962076 179593806 229106234
|
||||||
|
0 1520731987 239660433
|
||||||
|
2759350898 1833519805 177836826
|
||||||
|
494634602 642348400 67929420
|
||||||
|
3022832773 758696310 125871543
|
||||||
|
3563677889 4225169762 69546553
|
||||||
|
2637775123 710277820 48418490
|
||||||
|
3148704316 969732099 112580498
|
||||||
|
3261284814 2623022420 77526146
|
||||||
|
489910414 174869618 4724188
|
||||||
|
1187482559 2700548566 269479517
|
||||||
|
713770592 2139594657 85596595
|
||||||
|
850982693 2970028083 22273610
|
||||||
|
932624200 2013609609 125985048
|
||||||
|
799367187 1082312597 51615506
|
||||||
|
3633475423 3563677889 429727705
|
||||||
|
562564022 3283192654 66042324
|
||||||
|
2181319395 2553370576 69651844
|
||||||
|
2250971239 1133928103 386803884
|
||||||
|
3438280528 3349234978 3278267
|
||||||
|
2686193613 513223719 73157285
|
||||||
|
239660433 1760392420 73127385
|
||||||
|
487657436 2011356631 2252978
|
||||||
|
312787818 0 174869618
|
||||||
|
1058609248 3154319343 128873311
|
||||||
|
2176265284 508169608 5054111
|
||||||
|
|
||||||
|
soil-to-fertilizer map:
|
||||||
|
297032819 3559164217 26523093
|
||||||
|
323555912 2482284077 316032053
|
||||||
|
74171080 3214516077 10202585
|
||||||
|
3176226661 2368836568 113447509
|
||||||
|
2918425623 1610395638 257801038
|
||||||
|
3933490965 2171144546 103908097
|
||||||
|
1218064889 55976272 92496985
|
||||||
|
2591090931 0 23819721
|
||||||
|
1798514394 148473257 159960710
|
||||||
|
2288143061 1868196676 302947870
|
||||||
|
639587965 3736262447 6060799
|
||||||
|
3609511269 699586127 40962058
|
||||||
|
1575586870 3249692350 47378699
|
||||||
|
1310561874 2798316130 265024996
|
||||||
|
3650473327 2308711439 60125129
|
||||||
|
1958475104 483393073 178493006
|
||||||
|
259332771 661886079 37700048
|
||||||
|
907741932 980768687 228854035
|
||||||
|
1185908338 23819721 32156551
|
||||||
|
3437918904 3874038292 163360770
|
||||||
|
645648764 3297071049 262093168
|
||||||
|
2648569448 1432515231 29635673
|
||||||
|
1647939257 3585687310 150575137
|
||||||
|
3710598456 1209622722 222892509
|
||||||
|
2678205121 740548185 240220502
|
||||||
|
84373665 308433967 174959106
|
||||||
|
2614910652 2275052643 33658796
|
||||||
|
1622965569 3224718662 24973688
|
||||||
|
3289674170 1462150904 148244734
|
||||||
|
3601279674 3791635617 8231595
|
||||||
|
0 3799867212 74171080
|
||||||
|
2136968110 3063341126 151174951
|
||||||
|
1136595967 3742323246 49312371
|
||||||
|
|
||||||
|
fertilizer-to-water map:
|
||||||
|
0 478733437 191375707
|
||||||
|
2494518625 3362803490 180386054
|
||||||
|
1605510969 1985802816 27464898
|
||||||
|
3545871802 2267467733 385725819
|
||||||
|
1580307385 1113809296 8335179
|
||||||
|
2267467733 4179194655 34953467
|
||||||
|
1588642564 52640953 16868405
|
||||||
|
768087626 69509358 314799711
|
||||||
|
2835042306 4002148814 177045841
|
||||||
|
320920516 1122144475 447167110
|
||||||
|
1082887337 670109144 443700152
|
||||||
|
3218018460 3543189544 156036618
|
||||||
|
1921732119 1569311585 321765324
|
||||||
|
1632975867 384309069 40704472
|
||||||
|
1526587489 425013541 53719896
|
||||||
|
3140697718 2802291105 77320742
|
||||||
|
1726321292 1891076909 94725907
|
||||||
|
3070918618 2732512005 69779100
|
||||||
|
1673680339 0 52640953
|
||||||
|
3374055078 3830332090 171816724
|
||||||
|
2755723853 2653193552 79318453
|
||||||
|
3012088147 3242981522 58830471
|
||||||
|
2363412697 3699226162 131105928
|
||||||
|
1821047199 2013267714 100684920
|
||||||
|
2302421200 3301811993 60991497
|
||||||
|
191375707 2113952634 129544809
|
||||||
|
3931597621 2879611847 363369675
|
||||||
|
2674904679 4214148122 80819174
|
||||||
|
|
||||||
|
water-to-light map:
|
||||||
|
3219102205 2181622520 201394006
|
||||||
|
920319894 2563844887 124975374
|
||||||
|
739491533 2383016526 180828361
|
||||||
|
653894144 112244681 85597389
|
||||||
|
3420496211 0 112244681
|
||||||
|
3657404452 197842070 151065180
|
||||||
|
2385949305 1028427888 284402820
|
||||||
|
3532740892 1312830708 124663560
|
||||||
|
379827855 754361599 274066289
|
||||||
|
0 374533744 379827855
|
||||||
|
1070921762 1437494268 744128252
|
||||||
|
1815050014 3237570341 372982025
|
||||||
|
2670352125 2688820261 548750080
|
||||||
|
1045295268 348907250 25626494
|
||||||
|
2188032039 3610552366 197917266
|
||||||
|
|
||||||
|
light-to-temperature map:
|
||||||
|
2153765789 597465407 100160624
|
||||||
|
2781845200 2181361650 40610317
|
||||||
|
667326513 1345068833 191904517
|
||||||
|
2473693610 3180449558 308151590
|
||||||
|
3613083869 2293229230 341401182
|
||||||
|
1062907936 2938916666 34067323
|
||||||
|
1451871003 2221971967 71257263
|
||||||
|
3954485051 4137063579 102141117
|
||||||
|
4192502901 3838513492 49627103
|
||||||
|
1389629967 2876675630 62241036
|
||||||
|
1593277643 2972983989 143397067
|
||||||
|
859231030 2634630412 203676906
|
||||||
|
4056626168 790528713 68145539
|
||||||
|
1523128266 2838307318 38368312
|
||||||
|
503645468 3488601148 84794865
|
||||||
|
1333867367 4239204696 55762600
|
||||||
|
2902105909 1961894500 219467150
|
||||||
|
3268371481 858674252 266627384
|
||||||
|
2253926413 1125301636 219767197
|
||||||
|
4124771707 3888140595 67731194
|
||||||
|
1159014133 3663660258 174853234
|
||||||
|
3121573059 1536973350 56534177
|
||||||
|
4242130004 1593507527 52837292
|
||||||
|
3534998865 697626031 78085004
|
||||||
|
1096975259 503645468 62038874
|
||||||
|
588440333 3116381056 64068502
|
||||||
|
2052224391 3955871789 101541398
|
||||||
|
3178107236 3573396013 90264245
|
||||||
|
1736674710 1646344819 315549681
|
||||||
|
1561496578 565684342 31781065
|
||||||
|
2822455517 4057413187 79650392
|
||||||
|
652508835 775711035 14817678
|
||||||
|
|
||||||
|
temperature-to-humidity map:
|
||||||
|
539306376 906765326 12587914
|
||||||
|
0 164719538 374586838
|
||||||
|
3299714596 2417002864 137882274
|
||||||
|
3574681727 1862289721 10695948
|
||||||
|
1377359247 1111480860 147188226
|
||||||
|
2546515862 3738486436 38563842
|
||||||
|
2519543212 3564238204 26972650
|
||||||
|
1619134727 3777050278 31686173
|
||||||
|
551894290 728868054 177897272
|
||||||
|
3834998050 3919246788 238635651
|
||||||
|
729791562 919353240 625999
|
||||||
|
1524547473 3627710187 94587254
|
||||||
|
2399595894 3277935618 48769514
|
||||||
|
1340859914 3591210854 36499333
|
||||||
|
2585079704 2011159197 185411491
|
||||||
|
3723551203 3452791357 111446847
|
||||||
|
2895131743 2873352765 404582853
|
||||||
|
374586838 0 164719538
|
||||||
|
1776907125 1258669086 373340162
|
||||||
|
2881001532 2859222554 14130211
|
||||||
|
2217932998 2606381854 181662896
|
||||||
|
2166436282 2554885138 51496716
|
||||||
|
2448365408 2788044750 71177804
|
||||||
|
1650820900 3326705132 126086225
|
||||||
|
1110579441 1632009248 230280473
|
||||||
|
3437596870 4157882439 137084857
|
||||||
|
730417561 539306376 189561678
|
||||||
|
4294065877 1110579441 901419
|
||||||
|
2150247287 3722297441 16188995
|
||||||
|
2770491195 3808736451 110510337
|
||||||
|
3585377675 1872985669 138173528
|
||||||
|
4073633701 2196570688 220432176
|
||||||
|
|
||||||
|
humidity-to-location map:
|
||||||
|
3656475570 3037182697 7397903
|
||||||
|
682722270 547529272 780546181
|
||||||
|
266636474 1328075453 316323944
|
||||||
|
1591860664 3642496089 50700992
|
||||||
|
1642561656 266636474 280892798
|
||||||
|
1923454454 1644399397 1264527167
|
||||||
|
3979139381 3408096655 6045369
|
||||||
|
3663873473 4002979627 291987669
|
||||||
|
3955861142 3208017899 23278239
|
||||||
|
582960418 3414142024 99761852
|
||||||
|
3187981621 3231296138 176800517
|
||||||
|
3364782138 3044580600 163437299
|
||||||
|
1463268451 3513903876 128592213
|
||||||
|
3528219437 2908926564 128256133
|
||||||
|
4175159701 3693197081 119807595
|
||||||
|
3985184750 3813004676 189974951
|
@ -3,11 +3,13 @@ mod utils;
|
|||||||
mod day02;
|
mod day02;
|
||||||
mod day03;
|
mod day03;
|
||||||
mod day04;
|
mod day04;
|
||||||
|
mod day05;
|
||||||
|
|
||||||
const CONTENT01: &'static str = include_str!("input/day01/input.txt");
|
const CONTENT01: &'static str = include_str!("input/day01/input.txt");
|
||||||
const CONTENT02: &'static str = include_str!("input/day02/input.txt");
|
const CONTENT02: &'static str = include_str!("input/day02/input.txt");
|
||||||
const CONTENT03: &'static str = include_str!("input/day03/input.txt");
|
const CONTENT03: &'static str = include_str!("input/day03/input.txt");
|
||||||
const CONTENT04: &'static str = include_str!("input/day04/input.txt");
|
const CONTENT04: &'static str = include_str!("input/day04/input.txt");
|
||||||
|
const CONTENT05: &'static str = include_str!("input/day05/input.txt");
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
day01::execute_task01(CONTENT01);
|
day01::execute_task01(CONTENT01);
|
||||||
@ -21,4 +23,7 @@ fn main() {
|
|||||||
println!();
|
println!();
|
||||||
day04::execute_task01(CONTENT04);
|
day04::execute_task01(CONTENT04);
|
||||||
day04::execute_task02(CONTENT04);
|
day04::execute_task02(CONTENT04);
|
||||||
|
println!();
|
||||||
|
day05::execute_task01(CONTENT05);
|
||||||
|
day05::execute_task02(CONTENT05);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user