@@ -6,7 +6,7 @@ const input = fs
6
6
. split ( "\n" )
7
7
. filter ( ( line ) => line !== "" ) ;
8
8
9
- const play = ( time , record ) => {
9
+ const calculateWinningStrategies = ( time , record ) => {
10
10
const strategies = [ ] ;
11
11
for ( let i = 0 ; i < time ; i ++ ) {
12
12
const speed = i ;
@@ -20,6 +20,21 @@ const play = (time, record) => {
20
20
} ;
21
21
22
22
const part1 = ( lines ) => {
23
+ const play = ( times , distances ) => {
24
+ let result = 1 ;
25
+
26
+ for ( let i = 0 ; i < times . length ; i ++ ) {
27
+ const distance = distances [ i ] ;
28
+ const time = times [ i ] ;
29
+
30
+ const strategies = calculateWinningStrategies ( time , distance ) ;
31
+
32
+ result *= strategies . length ;
33
+ }
34
+
35
+ return result ;
36
+ } ;
37
+
23
38
const times = lines [ 0 ]
24
39
. split ( ":" ) [ 1 ]
25
40
. trim ( )
@@ -32,18 +47,34 @@ const part1 = (lines) => {
32
47
. split ( / + / )
33
48
. map ( ( num ) => Number . parseInt ( num . trim ( ) , 0 ) ) ;
34
49
35
- let result = 1 ;
50
+ return play ( times , distances ) ;
51
+ } ;
36
52
37
- for ( let i = 0 ; i < times . length ; i ++ ) {
38
- const distance = distances [ i ] ;
39
- const time = times [ i ] ;
53
+ const part2 = ( lines ) => {
54
+ const play = ( times , distances ) => {
55
+ let strategies = [ ] ;
40
56
41
- const strategies = play ( time , distance ) ;
57
+ const distance = distances [ 0 ] ;
58
+ const time = times [ 0 ] ;
42
59
43
- result *= strategies . length ;
44
- }
60
+ return calculateWinningStrategies ( time , distance ) . length ;
61
+ } ;
62
+ const times = lines [ 0 ]
63
+ . split ( ":" ) [ 1 ]
64
+ . trim ( )
65
+ . replace ( / + / g, "" )
66
+ . split ( )
67
+ . map ( ( num ) => Number . parseInt ( num . trim ( ) , 0 ) ) ;
68
+
69
+ const distances = lines [ 1 ]
70
+ . split ( ":" ) [ 1 ]
71
+ . trim ( )
72
+ . replace ( / + / g, "" )
73
+ . split ( )
74
+ . map ( ( num ) => Number . parseInt ( num . trim ( ) , 0 ) ) ;
45
75
46
- return result ;
76
+ return play ( times , distances ) ;
47
77
} ;
48
78
49
79
console . log ( part1 ( input ) ) ;
80
+ console . log ( part2 ( input ) ) ;
0 commit comments