Cleaned up Day 1
This commit is contained in:
parent
3ff45cae13
commit
acb8170222
@ -28,7 +28,7 @@ impl Solution for Day01 {
|
|||||||
const REG: &str = r#"[0-9]"#;
|
const REG: &str = r#"[0-9]"#;
|
||||||
let mut total: u32 = 0;
|
let mut total: u32 = 0;
|
||||||
for line in input {
|
for line in input {
|
||||||
total += self.regex_get_num(REG, line);
|
total += self.regex_get_num(REG, line)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(Box::new(total))
|
Ok(Box::new(total))
|
||||||
@ -41,7 +41,7 @@ impl Solution for Day01 {
|
|||||||
const REG: &str = r#"[0-9]|one|two|three|four|five|six|seven|eight|nine"#;
|
const REG: &str = r#"[0-9]|one|two|three|four|five|six|seven|eight|nine"#;
|
||||||
let mut total: u32 = 0;
|
let mut total: u32 = 0;
|
||||||
for line in input {
|
for line in input {
|
||||||
total += self.regex_get_num(REG, line);
|
total += self.regex_get_num(REG, line)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(Box::new(total))
|
Ok(Box::new(total))
|
||||||
@ -53,9 +53,10 @@ impl Solution for Day01 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Day01 {
|
impl Day01 {
|
||||||
fn regex_get_num(&self, regex: &str, input: &mut String) -> u32 {
|
fn regex_get_num(&self, regex: &str, input: &mut String) -> Result<u32, Box<dyn std::error::Error>> {
|
||||||
let re = Regex::new(regex).unwrap();
|
let re = Regex::new(regex).unwrap();
|
||||||
|
|
||||||
|
// Really don't like this :(
|
||||||
let input = input.replace("oneight", "oneeight");
|
let input = input.replace("oneight", "oneeight");
|
||||||
let input = input.replace("threeight", "threeeight");
|
let input = input.replace("threeight", "threeeight");
|
||||||
let input = input.replace("fiveight", "fiveeight");
|
let input = input.replace("fiveight", "fiveeight");
|
||||||
@ -75,14 +76,15 @@ impl Day01 {
|
|||||||
for m in matches.clone() {
|
for m in matches.clone() {
|
||||||
match Day01::convert_written_number(m) {
|
match Day01::convert_written_number(m) {
|
||||||
Some(n) => nums.push(n),
|
Some(n) => nums.push(n),
|
||||||
None => nums.push(m.parse::<u32>().unwrap_or(0))
|
None => nums.push(m.parse::<u32>()?)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// First number represents the tens, second represents the ones
|
||||||
let mut num: u32 = nums.first().unwrap_or(&0) * 10;
|
let mut num: u32 = nums.first().unwrap_or(&0) * 10;
|
||||||
num += nums.last().unwrap_or(&0);
|
num += nums.last().unwrap_or(&0);
|
||||||
|
|
||||||
num
|
Ok(num)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn convert_written_number(number_str: &str) -> Option<u32> {
|
fn convert_written_number(number_str: &str) -> Option<u32> {
|
||||||
|
Loading…
Reference in New Issue
Block a user