checkpoint, still not working
This commit is contained in:
parent
aa9dab827f
commit
6ce747054d
1 changed files with 32 additions and 3 deletions
|
@ -8,13 +8,13 @@ fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pt1(stones: &[u128]) -> usize {
|
fn pt1(stones: &[u128]) -> usize {
|
||||||
blink2(stones, 25)
|
blink3(stones.to_vec(), 25)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pt2(stones: &[u128]) -> usize {
|
fn pt2(stones: &[u128]) -> usize {
|
||||||
let mut total = 0;
|
let mut total = 0;
|
||||||
for stone in stones {
|
for stone in stones {
|
||||||
total += blink2(&[*stone], 75);
|
total += blink3(vec![*stone], 75);
|
||||||
}
|
}
|
||||||
total
|
total
|
||||||
}
|
}
|
||||||
|
@ -56,6 +56,35 @@ fn blink2(stones: &[u128], blinks: usize) -> usize {
|
||||||
stones.len()
|
stones.len()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn blink3(mut stones: Vec<u128>, blinks: usize) -> usize {
|
||||||
|
let mut total = stones.len();
|
||||||
|
for blink in 0..blinks {
|
||||||
|
let mut rights = Vec::new();
|
||||||
|
for stone in stones.iter_mut() {
|
||||||
|
let digits = stone.to_string();
|
||||||
|
match stone {
|
||||||
|
0 => {
|
||||||
|
*stone = 1;
|
||||||
|
}
|
||||||
|
_ if digits.len() % 2 == 0 => {
|
||||||
|
let mid = digits.len() / 2;
|
||||||
|
let left = digits[0..mid].parse().unwrap();
|
||||||
|
let right = digits[mid..].parse().unwrap();
|
||||||
|
*stone = left;
|
||||||
|
rights.push(right);
|
||||||
|
total += 1;
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
*stone *= 2024;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
total += blink3(rights, blinks - blink);
|
||||||
|
}
|
||||||
|
|
||||||
|
total
|
||||||
|
}
|
||||||
|
|
||||||
fn parse(input: &str) -> Vec<u128> {
|
fn parse(input: &str) -> Vec<u128> {
|
||||||
input
|
input
|
||||||
.trim()
|
.trim()
|
||||||
|
@ -77,6 +106,6 @@ mod test {
|
||||||
#[test]
|
#[test]
|
||||||
fn p2() {
|
fn p2() {
|
||||||
let stones = parse("125 17");
|
let stones = parse("125 17");
|
||||||
assert_eq!(22, blink2(&stones, 6));
|
assert_eq!(55312, blink3(stones, 25));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue