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"
|
||||
dependencies = [
|
||||
"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]
|
||||
anyhow = "1.0"
|
||||
rayon = "1.8.0"
|
||||
itertools = { version = "0.12.0", features = [] }
|
@ -1,17 +1,22 @@
|
||||
use std::collections::HashMap;
|
||||
use std::time::Instant;
|
||||
|
||||
pub fn execute_task01(content: &str) {
|
||||
let start = Instant::now();
|
||||
let sum_of_numbers = solve_01(content).unwrap();
|
||||
let duration = start.elapsed();
|
||||
|
||||
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) {
|
||||
let start = Instant::now();
|
||||
let sum_of_numbers = solve_02(content).unwrap();
|
||||
let duration = start.elapsed();
|
||||
|
||||
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> {
|
||||
|
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 day03;
|
||||
mod day04;
|
||||
mod day05;
|
||||
|
||||
const CONTENT01: &'static str = include_str!("input/day01/input.txt");
|
||||
const CONTENT02: &'static str = include_str!("input/day02/input.txt");
|
||||
const CONTENT03: &'static str = include_str!("input/day03/input.txt");
|
||||
const CONTENT04: &'static str = include_str!("input/day04/input.txt");
|
||||
const CONTENT05: &'static str = include_str!("input/day05/input.txt");
|
||||
|
||||
fn main() {
|
||||
day01::execute_task01(CONTENT01);
|
||||
@ -21,4 +23,7 @@ fn main() {
|
||||
println!();
|
||||
day04::execute_task01(CONTENT04);
|
||||
day04::execute_task02(CONTENT04);
|
||||
println!();
|
||||
day05::execute_task01(CONTENT05);
|
||||
day05::execute_task02(CONTENT05);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user