From 8b177dfcce7b91f45463412faa67ba0e6368f536 Mon Sep 17 00:00:00 2001 From: ari melody Date: Sat, 2 Dec 2023 13:36:50 +0000 Subject: [PATCH] day 1 (working but incorrect??) --- day1-trebuchet/src/main.rs | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/day1-trebuchet/src/main.rs b/day1-trebuchet/src/main.rs index 0633f66..0510a33 100644 --- a/day1-trebuchet/src/main.rs +++ b/day1-trebuchet/src/main.rs @@ -2,24 +2,19 @@ fn main () { let data: String = std::fs::read_to_string("input").unwrap(); let lines = data.lines(); - let new_lines = lines - .map(|raw_line| replace_numbers(raw_line)) - .fold(String::new(), |a, b| format!("{a}{b}\n")); - std::fs::write("new_lines", new_lines); - - // let sum: u32 = lines.map(|line| { get_calibration_values(line) }).sum(); - // println!("the sum of all calibration values is {sum}!"); + let sum: u32 = lines.map(|line| { get_calibration_values(line) }).sum(); + println!("the sum of all calibration values is {sum}!"); } -fn replace_numbers(raw_line: &str) -> String { +fn replace_numbers<'a>(line: &str) -> String { let numbers: [&str; 10] = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]; - let mut line: String = raw_line.to_string(); + let mut processed: String = String::from(line); loop { let mut clean = false; for i in 0..numbers.len() { - let old_line = line.clone(); - line = line.replace(numbers[i], i.to_string().as_str()); - if line.eq(&old_line) { + let old_line = processed.clone(); + processed = processed.replace(numbers[i], i.to_string().as_str()); + if processed == old_line { clean = true; } } @@ -27,11 +22,11 @@ fn replace_numbers(raw_line: &str) -> String { break; } } - line + processed } -fn get_calibration_values(mut line: &str) -> u32 { - line = replace_numbers(line).clone().as_str(); +fn get_calibration_values(raw_line: &str) -> u32 { + let line: String = replace_numbers(raw_line); let first: u32 = line.chars().find_map(|ch| { ch.to_digit(10) }).unwrap(); let last: u32 = line.chars().rev().find_map(|ch| { ch.to_digit(10) }).unwrap(); @@ -41,4 +36,4 @@ fn get_calibration_values(mut line: &str) -> u32 { // first * 10 + last result -} \ No newline at end of file +}