Rust Day 1 Part 1

This commit is contained in:
Tobias Berger 2023-12-01 13:27:51 +01:00
parent 8384c6406d
commit 0dffb33f3b
Signed by: toby
GPG key ID: 2D05EFAB764D6A88
7 changed files with 1074 additions and 2 deletions

2
rust/Cargo.lock generated
View file

@ -4,4 +4,4 @@ version = 3
[[package]] [[package]]
name = "advent-of-code" name = "advent-of-code"
version = "23.0.0" version = "23.1.1"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "advent-of-code" name = "advent-of-code"
version = "23.0.0" version = "23.1.1"
[profile.release] [profile.release]
strip = "symbols" strip = "symbols"
@ -22,3 +22,7 @@ name = "template"
# day00 for alphabetic sorting # day00 for alphabetic sorting
path = "src/day00/main.rs" path = "src/day00/main.rs"
test = false test = false
[[bin]]
name = "day01"
path = "src/day01/main.rs"

1000
rust/src/day01/input.txt Normal file

File diff suppressed because it is too large Load diff

11
rust/src/day01/main.rs Normal file
View file

@ -0,0 +1,11 @@
const INPUT: &str = include_str!("input.txt");
mod part_1;
use part_1::part_1;
mod part_2;
use part_2::part_2;
fn main() {
println!("{}", part_1(INPUT));
println!("{}", part_2(INPUT));
}

29
rust/src/day01/part_1.rs Normal file
View file

@ -0,0 +1,29 @@
pub(crate) fn part_1(input: &'static str) -> u64 {
input
.lines()
.map(|line| {
let mut digits = line.chars().filter(char::is_ascii_digit);
let first_digit = digits.next().expect("At least 1 digit should be present");
let last_digit = digits.last().unwrap_or(first_digit);
format!("{first_digit}{last_digit}")
.parse::<u64>()
.expect("Two digits should make a number")
})
.sum()
}
#[cfg(test)]
mod tests {
const SAMPLE_INPUT: &str = include_str!("sample_input.txt");
#[test]
fn test_with_sample_solution() {
assert_eq!(super::part_1(SAMPLE_INPUT), 142)
}
#[test]
fn test_with_solution() {
assert_eq!(super::part_1(crate::INPUT), 55488);
}
}

24
rust/src/day01/part_2.rs Normal file
View file

@ -0,0 +1,24 @@
pub(crate) fn part_2(_input: &'static str) -> u64 {
todo!("Part 2")
}
#[cfg(test)]
mod tests {
const SAMPLE_INPUT: &str = include_str!("sample_input.txt");
#[test]
fn test_with_sample_solution() {
assert_eq!(
super::part_2(SAMPLE_INPUT),
todo!("Add result from example part 2")
);
}
#[test]
fn test_with_solution() {
assert_eq!(
super::part_2(crate::INPUT),
todo!("Add result for solved part 2")
);
}
}

View file

@ -0,0 +1,4 @@
1bc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet