Compare commits
No commits in common. "92d5b896237ea3ff3bc3dd0db0df7da396d73399" and "1404c330c7a2fc647c7050b755681fefeff8a69d" have entirely different histories.
92d5b89623
...
1404c330c7
7
Cargo.lock
generated
7
Cargo.lock
generated
@ -14,7 +14,6 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"itertools",
|
"itertools",
|
||||||
"md5",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -31,9 +30,3 @@ checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"either",
|
"either",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "md5"
|
|
||||||
version = "0.7.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
|
|
||||||
|
|||||||
@ -6,4 +6,3 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0.93"
|
anyhow = "1.0.93"
|
||||||
itertools = "0.13.0"
|
itertools = "0.13.0"
|
||||||
md5 = "0.7.0"
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ pub mod d1;
|
|||||||
pub mod d2;
|
pub mod d2;
|
||||||
pub mod d3;
|
pub mod d3;
|
||||||
pub mod d4;
|
pub mod d4;
|
||||||
pub mod d5;
|
// pub mod d5;
|
||||||
// pub mod d6;
|
// pub mod d6;
|
||||||
// pub mod d7;
|
// pub mod d7;
|
||||||
// pub mod d8;
|
// pub mod d8;
|
||||||
|
|||||||
@ -43,7 +43,9 @@ fn _silver (data: &I) -> O {
|
|||||||
|
|
||||||
fn _gold (data: &I) -> O {
|
fn _gold (data: &I) -> O {
|
||||||
*_solve(data).find(|(s, num)| {
|
*_solve(data).find(|(s, num)| {
|
||||||
|
|
||||||
let mut s = s.chars().collect_vec();
|
let mut s = s.chars().collect_vec();
|
||||||
|
|
||||||
for c in s.iter_mut() {
|
for c in s.iter_mut() {
|
||||||
match *c {
|
match *c {
|
||||||
' ' => (),
|
' ' => (),
|
||||||
|
|||||||
@ -1,74 +0,0 @@
|
|||||||
use crate::prelude::*;
|
|
||||||
|
|
||||||
pub type I = &'static str;
|
|
||||||
pub type O = String;
|
|
||||||
|
|
||||||
fn _silver (data: I) -> O {
|
|
||||||
let mut s = s!("");
|
|
||||||
|
|
||||||
for i in 0.. {
|
|
||||||
let st = format!("{data}{i}");
|
|
||||||
let hash = md5::compute(st);
|
|
||||||
|
|
||||||
let repr = format!("{:x}", hash);
|
|
||||||
|
|
||||||
if repr.starts_with("00000") {
|
|
||||||
s.push_str(&repr[5..=5]);
|
|
||||||
if s.len() == 8 {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
s
|
|
||||||
}
|
|
||||||
|
|
||||||
fn _gold (data: I) -> O {
|
|
||||||
let mut s = ['\0'; 8];
|
|
||||||
|
|
||||||
for i in 0.. {
|
|
||||||
let st = format!("{data}{i}");
|
|
||||||
let hash = md5::compute(st);
|
|
||||||
|
|
||||||
let repr = format!("{:x}", hash);
|
|
||||||
|
|
||||||
if repr.starts_with("00000") {
|
|
||||||
let idx = (&repr[5..=5]).parse::<usize>().unwrap_or(usize::MAX);
|
|
||||||
let val = (&repr[6..=6]).chars().next().unwrap();
|
|
||||||
|
|
||||||
if idx < s.len() && s[idx] == '\0' {
|
|
||||||
s[idx] = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
if s.iter().all(|&e| e != '\0') { break; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
s.into_iter().collect()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod test {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
fn read () -> I {
|
|
||||||
"abbhdwsy"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn silver () {
|
|
||||||
let data = read();
|
|
||||||
let ans = _silver(data);
|
|
||||||
|
|
||||||
assert_eq!(ans, s!("801b56a7"))
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn gold () {
|
|
||||||
let data = read();
|
|
||||||
let ans = _gold(data);
|
|
||||||
|
|
||||||
assert_eq!(ans, s!("424a0197"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user