@@ -55,16 +55,8 @@ fn amount_of_stones(num: u64, blinks_left: u64, cach: &mut HashMap<(u64, u64), u
5555 1 ..=9 => amount_of_stones ( num * 2024 , blinks_left - 1 , cach) ,
5656 10 ..=99 => {
5757 let r = LUT [ num as usize ] ;
58- println ! (
59- "{} -> {} and {}" ,
60- num,
61- r & ( 2u64 . pow( 32 ) - 1 ) ,
62- ( r >> 32 ) & ( 2u64 . pow( 32 ) - 1 )
63- ) ;
64- // amount_of_stones(r & (2u64.pow(32) - 1), blinks_left - 1, cach)
65- // + amount_of_stones((r >> 32) & (2u64.pow(32) - 1), blinks_left - 1, cach)
66- amount_of_stones ( num / 10 , blinks_left - 1 , cach)
67- + amount_of_stones ( num % 10 , blinks_left - 1 , cach)
58+ amount_of_stones ( r & ( 2u64 . pow ( 32 ) - 1 ) , blinks_left - 1 , cach)
59+ + amount_of_stones ( ( r >> 32 ) & ( 2u64 . pow ( 32 ) - 1 ) , blinks_left - 1 , cach)
6860 }
6961 100 ..=999 => amount_of_stones ( num * 2024 , blinks_left - 1 , cach) ,
7062 1000 ..=9999 => {
@@ -114,41 +106,8 @@ fn amount_of_stones(num: u64, blinks_left: u64, cach: &mut HashMap<(u64, u64), u
114106 10000000000000000000 ..=u64:: MAX => {
115107 amount_of_stones ( num / 10000000000 , blinks_left - 1 , cach)
116108 + amount_of_stones ( num % 10000000000 , blinks_left - 1 , cach)
117- } // _ => {
118- // if num.ilog10() % 2 == 1 {
119- // let num_digits = num.ilog10() + 1;
120- // let tens = 10u64.pow(num_digits / 2);
121-
122- // amount_of_stones(num / tens, blinks_left - 1, cach)
123- // + amount_of_stones(num % tens, blinks_left - 1, cach)
124- // } else {
125- // amount_of_stones(num * 2024, blinks_left - 1, cach)
126- // }
127- // }
109+ }
128110 } ;
129- // let r = if num < LUT_SIZE {
130- // let r = LUT[num as usize];
131- // if r & 1 << 63 != 0 {
132- // // println!(
133- // // "{num} -> {} and {}",
134- // // r & (2u64.pow(32) - 1),
135- // // (r >> 32) & (2u64.pow(31) - 1)
136- // // );
137- // amount_of_stones(r & (2u64.pow(32) - 1), blinks_left - 1, cach)
138- // + amount_of_stones((r >> 32) & (2u64.pow(31) - 1), blinks_left - 1, cach)
139- // } else {
140- // amount_of_stones(r, blinks_left - 1, cach)
141- // }
142- // } else if num <= 99999 {
143- // amount_of_stones(num * 2024, blinks_left - 1, cach)
144- // } else if
145- // let num_digits = num.ilog10() + 1;
146- // let tens = 10u64.pow(num_digits / 2);
147-
148- // amount_of_stones(num / tens, blinks_left - 1, cach)
149- // + amount_of_stones(num % tens, blinks_left - 1, cach)
150- // } else {
151- // };
152111 cach. insert ( ( num, blinks_left) , r) ;
153112 r
154113}
0 commit comments