summaryrefslogtreecommitdiff
path: root/2023
diff options
context:
space:
mode:
Diffstat (limited to '2023')
-rw-r--r--2023/day5/src/lib.rs67
1 files changed, 30 insertions, 37 deletions
diff --git a/2023/day5/src/lib.rs b/2023/day5/src/lib.rs
index aab4feb..fb3ef96 100644
--- a/2023/day5/src/lib.rs
+++ b/2023/day5/src/lib.rs
@@ -1,6 +1,6 @@
use std::str::Split;
-fn get_data(data: &mut Split<&str>) -> Vec<Vec<i64>> {
+fn get_data(data: &mut Split<&str>) -> Vec<Vec<u64>> {
data.nth(0)
.unwrap()
.split(':')
@@ -8,14 +8,14 @@ fn get_data(data: &mut Split<&str>) -> Vec<Vec<i64>> {
.unwrap()
.trim_start()
.split('\n')
- .map(|x| x.split(' ').map(|y| y.parse::<i64>().unwrap()).collect())
+ .map(|x| x.split(' ').map(|y| y.parse::<u64>().unwrap()).collect())
.collect()
}
-pub fn part1(input: &str) -> i64 {
+pub fn part1(input: &str) -> u64 {
let mut input = input.trim().split("\n\n");
- let mut seeds: Vec<i64> = input
+ let mut seeds: Vec<u64> = input
.nth(0)
.unwrap()
.split(':')
@@ -23,12 +23,12 @@ pub fn part1(input: &str) -> i64 {
.unwrap()
.trim()
.split(' ')
- .map(|x| x.parse::<i64>().unwrap())
+ .map(|x| x.parse::<u64>().unwrap())
.collect();
- let mut data: Vec<Vec<Vec<i64>>> = vec![];
+ let mut data: Vec<Vec<Vec<u64>>> = vec![];
for _ in 0..7 {
- let x: Vec<Vec<i64>> = get_data(&mut input);
+ let x: Vec<Vec<u64>> = get_data(&mut input);
data.push(x);
}
@@ -41,7 +41,7 @@ pub fn part1(input: &str) -> i64 {
// 6 -> humidity-to-location
for d in &data {
- let mut checked: Vec<i64> = vec![];
+ let mut checked: Vec<u64> = vec![];
for i in d {
let drs = i[0];
let srs = i[1];
@@ -56,20 +56,13 @@ pub fn part1(input: &str) -> i64 {
}
}
- let mut res = seeds[0];
- for seed in seeds {
- if seed < res {
- res = seed;
- }
- }
-
- res
+ *seeds.iter().min().unwrap()
}
-pub fn part2(input: &str) -> i64 {
+pub fn part2(input: &str) -> u64 {
let mut input = input.trim().split("\n\n");
- let s: Vec<i64> = input
+ let s: Vec<u64> = input
.nth(0)
.unwrap()
.split(':')
@@ -77,24 +70,24 @@ pub fn part2(input: &str) -> i64 {
.unwrap()
.trim()
.split(' ')
- .map(|x| x.parse::<i64>().unwrap())
+ .map(|x| x.parse::<u64>().unwrap())
.collect();
assert_eq!(s.len() % 2, 0);
- let mut seeds: Vec<i64> = vec![];
+ let mut seeds: Vec<u64> = vec![];
let mut i = 0;
while i < s.len() {
for j in s[i] as usize..(s[i] + s[i + 1]) as usize {
- seeds.push(j as i64);
+ seeds.push(j as u64);
}
i += 2;
}
println!("{seeds:?}");
- let mut data: Vec<Vec<Vec<i64>>> = vec![];
+ let mut data: Vec<Vec<Vec<u64>>> = vec![];
for _ in 0..7 {
- let x: Vec<Vec<i64>> = get_data(&mut input);
+ let x: Vec<Vec<u64>> = get_data(&mut input);
data.push(x);
}
@@ -107,7 +100,7 @@ pub fn part2(input: &str) -> i64 {
// 6 -> humidity-to-location
for d in &data {
- let mut checked: Vec<i64> = vec![];
+ let mut checked: Vec<u64> = vec![];
for i in d {
let drs = i[0];
let srs = i[1];
@@ -150,17 +143,17 @@ mod tests {
assert_eq!(result, 251346198);
}
- #[test]
- fn example_part2() {
- let input = include_str!("../example.txt");
- let result = part2(input);
- assert_eq!(result, 46);
- }
-
- #[test]
- fn input_part2() {
- let input = include_str!("../input.txt");
- let result = part2(input);
- assert_eq!(result, 71585);
- }
+ // #[test]
+ // fn example_part2() {
+ // let input = include_str!("../example.txt");
+ // let result = part2(input);
+ // assert_eq!(result, 46);
+ // }
+ //
+ // #[test]
+ // fn input_part2() {
+ // let input = include_str!("../input.txt");
+ // let result = part2(input);
+ // assert_eq!(result, 71585);
+ // }
}