Completed day 4

This commit is contained in:
Tyler Hallada 2019-12-05 23:32:45 -05:00
parent 3b06ca1c64
commit 7845628111
3 changed files with 87 additions and 0 deletions

6
day4/Cargo.lock generated Normal file
View File

@ -0,0 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "day4"
version = "0.1.0"

9
day4/Cargo.toml Normal file
View File

@ -0,0 +1,9 @@
[package]
name = "day4"
version = "0.1.0"
authors = ["Tyler Hallada <tyler@hallada.net>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

72
day4/src/main.rs Normal file
View File

@ -0,0 +1,72 @@
const INPUT_MIN: u32 = 245318;
const INPUT_MAX: u32 = 765747;
fn solve_part1() -> u32 {
let mut counter = 0;
for num in INPUT_MIN..=INPUT_MAX {
let num_string = num.to_string();
let mut previous = None;
let mut has_double = false;
let mut decreasing = false;
for c in num_string.chars() {
match previous {
None => previous = Some(c),
Some(p) => {
if p == c {
has_double = true;
}
if p.to_digit(10) > c.to_digit(10) {
decreasing = true;
break;
}
previous = Some(c);
}
}
}
if has_double && !decreasing {
counter += 1;
}
}
counter
}
fn solve_part2() -> u32 {
// too lazy to DRY it up
let mut counter = 0;
for num in INPUT_MIN..=INPUT_MAX {
let num_string = num.to_string();
let mut previous = None;
let mut has_double = false;
let mut matching_group_count = 1;
let mut decreasing = false;
for c in num_string.chars() {
match previous {
None => previous = Some(c),
Some(p) => {
if p == c {
matching_group_count += 1;
} else {
if matching_group_count == 2 {
has_double = true;
}
matching_group_count = 1;
}
if p.to_digit(10) > c.to_digit(10) {
decreasing = true;
break;
}
previous = Some(c);
}
}
}
if (matching_group_count == 2 || has_double) && !decreasing {
counter += 1;
}
}
counter
}
fn main() {
println!("Part 1: {}", solve_part1());
println!("Part 2: {}", solve_part2());
}