@@ -9,22 +9,29 @@ const {
9
9
} = require ( './recipes' )
10
10
11
11
describe ( '--- Day 14: Chocolate Charts ---' , ( ) => {
12
+ let recipes
13
+ let elves
12
14
describe ( 'Part 1:' , ( ) => {
15
+ beforeEach ( ( ) => {
16
+ elves = [ 3 , 7 ]
17
+ recipes = new Recipes ( elves )
18
+ elves [ 0 ] = recipes . tail
19
+ elves [ 1 ] = recipes . head
20
+ } )
13
21
describe ( 'new Recipes()' , ( ) => {
14
22
it ( 'builds a linked list' , ( ) => {
15
- const recipes = new Recipes ( 0 )
23
+ expect ( recipes . head . value ) . to . equal ( 7 )
16
24
for ( let x = 1 ; x <= 5 ; x ++ ) {
17
25
recipes . addRecipe ( x )
18
26
}
19
- expect ( recipes . length ) . to . equal ( 6 )
27
+ expect ( recipes . length ) . to . equal ( 7 )
20
28
expect ( recipes . head . value ) . to . equal ( 5 )
21
- expect ( recipes . tail . value ) . to . equal ( 0 )
29
+ expect ( recipes . tail . value ) . to . equal ( 3 )
22
30
expect ( recipes . tail . prev ) . to . equal ( recipes . head ) // circular linked list for prev
23
31
expect ( recipes . head . next ) . to . equal ( recipes . tail ) // circular linked list for next
24
32
} )
25
33
describe ( 'scoreRecipes()' , ( ) => {
26
34
it ( 'adds new recipes based on the provided score' , ( ) => {
27
- const recipes = new Recipes ( 0 )
28
35
for ( let x = 1 ; x <= 5 ; x ++ ) {
29
36
recipes . addRecipe ( x )
30
37
}
@@ -47,18 +54,8 @@ describe('--- Day 14: Chocolate Charts ---', () => {
47
54
describe ( 'loopRecipeForEleves()' , ( ) => {
48
55
it ( 'loops through the recipe object for the specified elves the specified number of times' , ( ) => {
49
56
const expected = '37101012451589167792' // list of recipe values in the last iteration of the example
50
- const elves = [ 3 , 7 ]
51
- const recipes = new Recipes ( elves [ 0 ] )
52
57
let actual = ''
53
58
54
- elves . forEach ( ( elf , idx ) => {
55
- if ( idx === 0 ) {
56
- elves [ 0 ] = recipes . head
57
- } else {
58
- elves [ idx ] = recipes . addRecipe ( elf )
59
- }
60
- } )
61
-
62
59
loopRecipesForElves ( elves , recipes , 15 )
63
60
64
61
let iterator = recipes . tail . next
@@ -73,139 +70,43 @@ describe('--- Day 14: Chocolate Charts ---', () => {
73
70
} )
74
71
describe ( 'calculateXAfterY(x, y, recipe, elves)' , ( ) => {
75
72
it ( 'predicts the next X results after the elves have executed Y' , ( ) => {
76
- const elves = [ 3 , 7 ]
77
- const recipes = new Recipes ( elves [ 0 ] )
78
- let actual = ''
79
-
80
- elves . forEach ( ( elf , idx ) => {
81
- if ( idx === 0 ) {
82
- elves [ 0 ] = recipes . head
83
- } else {
84
- elves [ idx ] = recipes . addRecipe ( elf )
85
- }
86
- } )
87
-
88
- actual = calculateXAfterY ( 10 , 9 , recipes , elves )
73
+ let actual = calculateXAfterY ( 10 , 9 , recipes , elves )
89
74
expect ( actual ) . to . equal ( '5158916779' )
90
75
} )
91
76
it ( 'predicts the next X results after the elves have executed Y' , ( ) => {
92
- const elves = [ 3 , 7 ]
93
- const recipes = new Recipes ( elves [ 0 ] )
94
- let actual = ''
95
-
96
- elves . forEach ( ( elf , idx ) => {
97
- if ( idx === 0 ) {
98
- elves [ 0 ] = recipes . head
99
- } else {
100
- elves [ idx ] = recipes . addRecipe ( elf )
101
- }
102
- } )
103
-
104
- actual = calculateXAfterY ( 10 , 5 , recipes , elves )
77
+ const actual = calculateXAfterY ( 10 , 5 , recipes , elves )
105
78
expect ( actual ) . to . equal ( '0124515891' )
106
79
} )
107
80
it ( 'predicts the next X results after the elves have executed Y' , ( ) => {
108
- const elves = [ 3 , 7 ]
109
- const recipes = new Recipes ( elves [ 0 ] )
110
- let actual = ''
111
-
112
- elves . forEach ( ( elf , idx ) => {
113
- if ( idx === 0 ) {
114
- elves [ 0 ] = recipes . head
115
- } else {
116
- elves [ idx ] = recipes . addRecipe ( elf )
117
- }
118
- } )
119
-
120
- actual = calculateXAfterY ( 10 , 18 , recipes , elves )
81
+ const actual = calculateXAfterY ( 10 , 18 , recipes , elves )
121
82
expect ( actual ) . to . equal ( '9251071085' )
122
83
} )
123
84
it ( 'predicts the next X results after the elves have executed Y' , ( ) => {
124
- const elves = [ 3 , 7 ]
125
- const recipes = new Recipes ( elves [ 0 ] )
126
- let actual = ''
127
-
128
- elves . forEach ( ( elf , idx ) => {
129
- if ( idx === 0 ) {
130
- elves [ 0 ] = recipes . head
131
- } else {
132
- elves [ idx ] = recipes . addRecipe ( elf )
133
- }
134
- } )
135
-
136
- actual = calculateXAfterY ( 10 , 2018 , recipes , elves )
85
+ const actual = calculateXAfterY ( 10 , 2018 , recipes , elves )
137
86
expect ( actual ) . to . equal ( '5941429882' )
138
87
} )
139
88
} )
140
89
describe ( 'findPattern()' , ( ) => {
141
90
it ( 'counts the number of recipes to the left of the specified pattern' , ( ) => {
142
- const elves = [ 3 , 7 ]
143
- const recipes = new Recipes ( elves [ 0 ] )
144
- let actual = ''
145
-
146
- elves . forEach ( ( elf , idx ) => {
147
- if ( idx === 0 ) {
148
- elves [ 0 ] = recipes . head
149
- } else {
150
- elves [ idx ] = recipes . addRecipe ( elf )
151
- }
152
- } )
153
-
154
- actual = findPattern ( '51589' , recipes , elves )
91
+ const actual = findPattern ( '51589' , recipes , elves )
155
92
expect ( actual ) . to . equal ( 9 )
156
93
} )
157
94
} )
158
95
describe ( 'findPattern()' , ( ) => {
159
96
it ( 'counts the number of recipes to the left of the specified pattern' , ( ) => {
160
- const elves = [ 3 , 7 ]
161
- const recipes = new Recipes ( elves [ 0 ] )
162
- let actual = ''
163
-
164
- elves . forEach ( ( elf , idx ) => {
165
- if ( idx === 0 ) {
166
- elves [ 0 ] = recipes . head
167
- } else {
168
- elves [ idx ] = recipes . addRecipe ( elf )
169
- }
170
- } )
171
-
172
- actual = findPattern ( '01245' , recipes , elves )
97
+ const actual = findPattern ( '01245' , recipes , elves )
173
98
expect ( actual ) . to . equal ( 5 )
174
99
} )
175
100
} )
176
101
describe ( 'findPattern()' , ( ) => {
177
102
it ( 'counts the number of recipes to the left of the specified pattern' , ( ) => {
178
- const elves = [ 3 , 7 ]
179
- const recipes = new Recipes ( elves [ 0 ] )
180
- let actual = ''
181
-
182
- elves . forEach ( ( elf , idx ) => {
183
- if ( idx === 0 ) {
184
- elves [ 0 ] = recipes . head
185
- } else {
186
- elves [ idx ] = recipes . addRecipe ( elf )
187
- }
188
- } )
189
-
190
- actual = findPattern ( '92510' , recipes , elves )
103
+ const actual = findPattern ( '92510' , recipes , elves )
191
104
expect ( actual ) . to . equal ( 18 )
192
105
} )
193
106
} )
194
107
describe ( 'findPattern()' , ( ) => {
195
108
it ( 'counts the number of recipes to the left of the specified pattern' , ( ) => {
196
- const elves = [ 3 , 7 ]
197
- const recipes = new Recipes ( elves [ 0 ] )
198
- let actual = ''
199
-
200
- elves . forEach ( ( elf , idx ) => {
201
- if ( idx === 0 ) {
202
- elves [ 0 ] = recipes . head
203
- } else {
204
- elves [ idx ] = recipes . addRecipe ( elf )
205
- }
206
- } )
207
-
208
- actual = findPattern ( '59414' , recipes , elves )
109
+ const actual = findPattern ( '59414' , recipes , elves )
209
110
expect ( actual ) . to . equal ( 2018 )
210
111
} )
211
112
} )
0 commit comments