Finish up day 4

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2019-12-04 17:32:55 -05:00
parent 1ca0ee331a
commit f61194c231

View File

@@ -3,14 +3,8 @@ fn main() {
part2(246515, 739105);
}
fn digit_count(n: usize) -> u32 {
if n == 0 { 1 } else { (n as f64).log10().floor() as u32 + 1 }
}
fn digit_n(digit: u32, n: usize) -> usize {
let digit_count = digit_count(n);
println!("{} {} {}", n, digit_count, digit);
let place = 10usize.pow(digit_count - digit);
let place = 10usize.pow(5 - digit);
(n / place) % 10
}
@@ -26,8 +20,7 @@ fn is_increasing(n: usize) -> bool {
}
fn has_double(n: usize) -> bool {
let digit_count = digit_count(n);
for digit in 0 .. digit_count {
for digit in 0 .. 5 {
let this = digit_n(digit, n);
let next = digit_n(digit + 1, n);
if next == this {
@@ -38,7 +31,15 @@ fn has_double(n: usize) -> bool {
}
fn has_strict_double(n: usize) -> bool {
false
let mut doubles: [usize; 10] = Default::default();
for digit in 0 .. 5 {
let this = digit_n(digit, n);
let next = digit_n(digit + 1, n);
if next == this {
doubles[this] += 1;
}
}
doubles.contains(&1)
}
fn part1(lower: usize, upper: usize) {
@@ -53,11 +54,6 @@ fn part1(lower: usize, upper: usize) {
fn part2(lower: usize, upper: usize) {
let mut count = 0;
for n in &[112233, 123444, 111122, 144455, 114444] {
println!("{} has_strict_double: {}", n, has_strict_double(*n));
}
for n in lower ..= upper {
if is_increasing(n) && has_strict_double(n) {
count += 1;