aboutsummaryrefslogtreecommitdiff
path: root/src/day1pt2.rs
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksa@vuckovic.cc>2023-12-06 01:45:05 +0100
committerAleksa Vuckovic <aleksa@vuckovic.cc>2023-12-06 01:45:05 +0100
commit8089545c22b1ae4a98e967f070c3e298e6808961 (patch)
tree0f8b13fbdeffc7ae03f3d7bfefbf6ef81bb3fb3a /src/day1pt2.rs
Initial commit
Diffstat (limited to 'src/day1pt2.rs')
-rw-r--r--src/day1pt2.rs51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/day1pt2.rs b/src/day1pt2.rs
new file mode 100644
index 0000000..99407dd
--- /dev/null
+++ b/src/day1pt2.rs
@@ -0,0 +1,51 @@
+use regex::Regex;
+
+fn parse(s: &str) -> u32 {
+ match s {
+ "zero" => 0,
+ "one" => 1,
+ "two" => 2,
+ "three" => 3,
+ "four" => 4,
+ "five" => 5,
+ "six" => 6,
+ "seven" => 7,
+ "eight" => 8,
+ "nine" => 9,
+ br => br.parse().unwrap(),
+ }
+}
+
+fn parse_bw(s: &str) -> u32 {
+ match s {
+ "orez" => 0,
+ "eno" => 1,
+ "owt" => 2,
+ "eerht" => 3,
+ "ruof" => 4,
+ "evif" => 5,
+ "xis" => 6,
+ "neves" => 7,
+ "thgie" => 8,
+ "enin" => 9,
+ br => br.parse().unwrap(),
+ }
+}
+
+pub fn main() {
+ let mut sum: u32 = 0;
+ let re = Regex::new(r"\d|zero|one|two|three|four|five|six|seven|eight|nine").unwrap();
+ let re_bw = Regex::new(r"\d|ozer|eno|owt|eerht|ruof|evif|xis|neves|thgie|enin").unwrap();
+
+ let txt = std::fs::read_to_string("./input/day1.txt").unwrap();
+ for line in txt.lines() {
+ let capt = re.find_iter(line).collect::<Vec<_>>();
+ let str_bw = String::from_iter(line.chars().rev());
+ let capt_bw = re_bw.find_iter(&str_bw).collect::<Vec<_>>();
+
+ let x =
+ parse(capt.get(0).unwrap().as_str()) * 10 + parse_bw(capt_bw.get(0).unwrap().as_str());
+ sum += x;
+ }
+ println!("{}", sum)
+}