File tree Expand file tree Collapse file tree 1 file changed +15
-5
lines changed Expand file tree Collapse file tree 1 file changed +15
-5
lines changed Original file line number Diff line number Diff line change @@ -11,10 +11,20 @@ const blinkStone = (stone) => {
11
11
return [ 2024 * stone ] ;
12
12
} ;
13
13
14
- const blink = ( stones ) => stones . flatMap ( s => blinkStone ( s ) ) ;
14
+ const cache = { } ;
15
+ const numberAfterBlinks = ( stone , blinks ) => {
16
+ const key = `${ stone } .${ blinks } ` ;
17
+ if ( cache [ key ] ) return cache [ key ] ;
18
+ if ( blinks == 0 ) return 1 ;
19
+ const stones = blinkStone ( stone ) ;
20
+ const ret = stones . map ( s => numberAfterBlinks ( s , blinks - 1 ) ) . reduce ( ( a , b ) => a + b ) ;
21
+ cache [ key ] = ret ;
22
+ return ret ;
23
+ }
15
24
16
- let afterBlink = stones ;
17
- for ( let i = 0 ; i < 25 ; i ++ ) {
18
- afterBlink = blink ( afterBlink ) ;
25
+ const stonesAfterBlinks = ( stones , blinks ) => {
26
+ return stones . map ( s => numberAfterBlinks ( s , blinks ) ) . reduce ( ( a , b ) => a + b ) ;
19
27
}
20
- console . log ( afterBlink . length ) ;
28
+
29
+ console . log ( `part1: ${ stonesAfterBlinks ( stones , 25 ) } ` ) ;
30
+ console . log ( `part2: ${ stonesAfterBlinks ( stones , 75 ) } ` ) ;
You can’t perform that action at this time.
0 commit comments