2019-12-04 16:22:10 -05:00
|
|
|
fn main() {
|
|
|
|
|
part1(246515, 739105);
|
2019-12-04 17:02:36 -05:00
|
|
|
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);
|
|
|
|
|
(n / place) % 10
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn is_increasing(n: usize) -> bool {
|
|
|
|
|
for digit in 0 .. 5 {
|
|
|
|
|
let this = digit_n(digit, n);
|
|
|
|
|
let next = digit_n(digit + 1, n);
|
|
|
|
|
if next < this {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn has_double(n: usize) -> bool {
|
|
|
|
|
let digit_count = digit_count(n);
|
|
|
|
|
for digit in 0 .. digit_count {
|
|
|
|
|
let this = digit_n(digit, n);
|
|
|
|
|
let next = digit_n(digit + 1, n);
|
|
|
|
|
if next == this {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn has_strict_double(n: usize) -> bool {
|
|
|
|
|
false
|
2019-12-04 16:22:10 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn part1(lower: usize, upper: usize) {
|
2019-12-04 17:02:36 -05:00
|
|
|
let mut count = 0;
|
|
|
|
|
for n in lower ..= upper {
|
|
|
|
|
if is_increasing(n) && has_double(n) {
|
|
|
|
|
count += 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
println!("Part 1: {}", count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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));
|
|
|
|
|
}
|
2019-12-04 16:22:10 -05:00
|
|
|
|
2019-12-04 17:02:36 -05:00
|
|
|
for n in lower ..= upper {
|
|
|
|
|
if is_increasing(n) && has_strict_double(n) {
|
|
|
|
|
count += 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
println!("Part 2: {}", count);
|
2019-12-04 16:22:10 -05:00
|
|
|
}
|