add day 5
This commit is contained in:
Generated
+16
@@ -0,0 +1,16 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "day05"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"md5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "md5"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ae960838283323069879657ca3de837e9f7bbb4c7bf6ea7f1b290d5e9476d2e0"
|
||||
@@ -0,0 +1,7 @@
|
||||
[package]
|
||||
name = "day05"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
md5 = "0.8"
|
||||
@@ -0,0 +1,69 @@
|
||||
use std::io::Write;
|
||||
|
||||
#[cfg(debug_assertions)]
|
||||
const INPUT: &str = "abc";
|
||||
#[cfg(not(debug_assertions))]
|
||||
const INPUT: &str = "cxdnnyjw";
|
||||
// const INPUT: &str = "abc";
|
||||
|
||||
fn main() {
|
||||
part1();
|
||||
|
||||
println!();
|
||||
|
||||
part2();
|
||||
}
|
||||
|
||||
fn part2() {
|
||||
let mut result = [' '; 8];
|
||||
|
||||
for i in 0_i64.. {
|
||||
let s = format!("{INPUT}{i}");
|
||||
let digest = md5::compute(s);
|
||||
|
||||
let result_string = format!("{:x}", digest);
|
||||
|
||||
if result_string.chars().take(5).all(|c| c == '0') {
|
||||
let mut chars = result_string.chars();
|
||||
let the_position = chars.nth(5).unwrap();
|
||||
let the_char = chars.next().unwrap();
|
||||
|
||||
if ('0'..'8').contains(&the_position) {
|
||||
let position = the_position.to_string().parse::<usize>().unwrap();
|
||||
if result[position] == ' ' {
|
||||
result[position] = the_char;
|
||||
println!("{}", result.iter().collect::<String>());
|
||||
}
|
||||
}
|
||||
if !result.contains(&' ') {
|
||||
break;
|
||||
}
|
||||
};
|
||||
}
|
||||
println!();
|
||||
}
|
||||
|
||||
fn part1() {
|
||||
let mut result = vec![];
|
||||
for i in 0_i64.. {
|
||||
let s = format!("{INPUT}{i}");
|
||||
let digest = md5::compute(s);
|
||||
|
||||
let result_string = format!("{:x}", digest);
|
||||
|
||||
if let Some(the_char) = result_string
|
||||
.chars()
|
||||
.take(5)
|
||||
.all(|c| c == '0')
|
||||
.then(|| result_string.chars().nth(5).unwrap())
|
||||
{
|
||||
print!("{the_char}");
|
||||
std::io::stdout().flush().unwrap();
|
||||
result.push(the_char);
|
||||
if result.len() == 8 {
|
||||
break;
|
||||
}
|
||||
};
|
||||
}
|
||||
println!();
|
||||
}
|
||||
Reference in New Issue
Block a user