This commit is contained in:
george
2023-12-03 22:54:20 +00:00
commit 51459c17c6
10 changed files with 362 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "aho-corasick"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
dependencies = [
"memchr",
]
[[package]]
name = "day01"
version = "0.1.0"
dependencies = [
"regex",
]
[[package]]
name = "memchr"
version = "2.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
[[package]]
name = "regex"
version = "1.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata",
"regex-syntax",
]
[[package]]
name = "regex-automata"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+9
View File
@@ -0,0 +1,9 @@
[package]
name = "day01"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
regex = "1.10.2"
+45
View File
@@ -0,0 +1,45 @@
use std::io::{stdin, BufRead};
const NUM_TEST: [(&str, &str); 9] = [
("one", "1"),
("two", "2"),
("three", "3"),
("four", "4"),
("five", "5"),
("six", "6"),
("seven", "7"),
("eight", "8"),
("nine", "9"),
];
fn main() {
let input = stdin().lock().lines().map(|l| l.unwrap());
let mut part_one_total = 0;
let mut part_two_total = 0;
for line in input {
part_one_total += part_one_calc(&line);
part_two_total += part_two_calc(&line);
}
println!("P1: {} P2: {}", part_one_total, part_two_total);
}
fn part_two_calc(line: &str) -> usize {
let mut line = String::from(line);
for str in NUM_TEST {
if line.contains(str.0) {
let swap = str.0.to_string() + str.1 + str.0;
line = line.replace(str.0, &swap);
}
}
part_one_calc(&line)
}
fn part_one_calc(line: &str) -> usize {
let mut nums = line.chars().filter(|c| c.is_numeric());
let first = nums.next().unwrap_or('0');
let last = nums.last().unwrap_or(first);
format!("{}{}", first, last).parse().unwrap()
}