Compare commits
3 Commits
b8bacd133b
...
513448bbbd
Author | SHA1 | Date |
---|---|---|
kenobi | 513448bbbd | |
kenobi | b57ebdc97f | |
kenobi | b8439282b0 |
|
@ -0,0 +1,16 @@
|
||||||
|
[package]
|
||||||
|
name = "day-01"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "part1"
|
||||||
|
path = "src/part1.rs"
|
||||||
|
[[bin]]
|
||||||
|
name = "part2"
|
||||||
|
path = "src/part2.rs"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
regex = "1.10.2"
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,35 @@
|
||||||
|
fn main() {
|
||||||
|
let input = include_str!("./input.txt");
|
||||||
|
let output = process(input);
|
||||||
|
println!("{}", output);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn process(input: &str) -> i32 {
|
||||||
|
let lines: i32 = input
|
||||||
|
.lines()
|
||||||
|
.into_iter()
|
||||||
|
.map(|line| {
|
||||||
|
let line_vec = line
|
||||||
|
.chars()
|
||||||
|
.filter(|c| c.is_digit(10))
|
||||||
|
.collect::<Vec<char>>();
|
||||||
|
let first = line_vec.clone().into_iter().nth(0);
|
||||||
|
let last = line_vec.clone().into_iter().nth_back(0);
|
||||||
|
[first.unwrap(), last.unwrap()].into_iter().collect()
|
||||||
|
})
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
.iter()
|
||||||
|
.map(|x| x.parse::<i32>().unwrap())
|
||||||
|
.sum();
|
||||||
|
lines
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
#[test]
|
||||||
|
fn test_logic() {
|
||||||
|
let input = include_str!("./testinput.txt");
|
||||||
|
assert_eq!(process(input), 142);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
use regex::Regex;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let input = include_str!("./input.txt");
|
||||||
|
let output = process(input);
|
||||||
|
println!("{}", output);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn process(input: &str) -> i32 {
|
||||||
|
let lines: i32 = input
|
||||||
|
.lines()
|
||||||
|
.into_iter()
|
||||||
|
.map(|x| replacer(x))
|
||||||
|
.map(|line| {
|
||||||
|
println!("{line}");
|
||||||
|
let line_vec = line
|
||||||
|
.chars()
|
||||||
|
.filter(|c| c.is_digit(10))
|
||||||
|
.collect::<Vec<char>>();
|
||||||
|
let first = line_vec.clone().into_iter().nth(0);
|
||||||
|
let last = line_vec.clone().into_iter().nth_back(0);
|
||||||
|
[first.unwrap(), last.unwrap()].into_iter().collect()
|
||||||
|
})
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
.iter()
|
||||||
|
.map(|x| x.parse::<i32>().unwrap())
|
||||||
|
.sum();
|
||||||
|
lines
|
||||||
|
}
|
||||||
|
|
||||||
|
fn replacer(x: &str) -> String {
|
||||||
|
let re = Regex::new("(one|two|three|four|five|six|seven|eight|nine)");
|
||||||
|
|
||||||
|
x.replace("one", "1")
|
||||||
|
.replace("two", "2")
|
||||||
|
.replace("three", "3")
|
||||||
|
.replace("four", "4")
|
||||||
|
.replace("five", "5")
|
||||||
|
.replace("six", "6")
|
||||||
|
.replace("seven", "7")
|
||||||
|
.replace("eight", "8")
|
||||||
|
.replace("nine", "9")
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
#[test]
|
||||||
|
fn test_logic() {
|
||||||
|
let input = include_str!("./testinput2.txt");
|
||||||
|
assert_eq!(process(input), 281);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
1abc2
|
||||||
|
pqr3stu8vwx
|
||||||
|
a1b2c3d4e5f
|
||||||
|
treb7uchet
|
|
@ -0,0 +1,7 @@
|
||||||
|
two1nine
|
||||||
|
eightwothree
|
||||||
|
abcone2threexyz
|
||||||
|
xtwone3four
|
||||||
|
4nineeightseven2
|
||||||
|
zoneight234
|
||||||
|
7pqrstsixteen
|
Loading…
Reference in New Issue