@@ -9,22 +9,29 @@ const {
99} = require ( './recipes' )
1010
1111describe ( '--- Day 14: Chocolate Charts ---' , ( ) => {
12+ let recipes
13+ let elves
1214 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+ } )
1321 describe ( 'new Recipes()' , ( ) => {
1422 it ( 'builds a linked list' , ( ) => {
15- const recipes = new Recipes ( 0 )
23+ expect ( recipes . head . value ) . to . equal ( 7 )
1624 for ( let x = 1 ; x <= 5 ; x ++ ) {
1725 recipes . addRecipe ( x )
1826 }
19- expect ( recipes . length ) . to . equal ( 6 )
27+ expect ( recipes . length ) . to . equal ( 7 )
2028 expect ( recipes . head . value ) . to . equal ( 5 )
21- expect ( recipes . tail . value ) . to . equal ( 0 )
29+ expect ( recipes . tail . value ) . to . equal ( 3 )
2230 expect ( recipes . tail . prev ) . to . equal ( recipes . head ) // circular linked list for prev
2331 expect ( recipes . head . next ) . to . equal ( recipes . tail ) // circular linked list for next
2432 } )
2533 describe ( 'scoreRecipes()' , ( ) => {
2634 it ( 'adds new recipes based on the provided score' , ( ) => {
27- const recipes = new Recipes ( 0 )
2835 for ( let x = 1 ; x <= 5 ; x ++ ) {
2936 recipes . addRecipe ( x )
3037 }
@@ -47,18 +54,8 @@ describe('--- Day 14: Chocolate Charts ---', () => {
4754 describe ( 'loopRecipeForEleves()' , ( ) => {
4855 it ( 'loops through the recipe object for the specified elves the specified number of times' , ( ) => {
4956 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 ] )
5257 let actual = ''
5358
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-
6259 loopRecipesForElves ( elves , recipes , 15 )
6360
6461 let iterator = recipes . tail . next
@@ -73,139 +70,43 @@ describe('--- Day 14: Chocolate Charts ---', () => {
7370 } )
7471 describe ( 'calculateXAfterY(x, y, recipe, elves)' , ( ) => {
7572 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 )
8974 expect ( actual ) . to . equal ( '5158916779' )
9075 } )
9176 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 )
10578 expect ( actual ) . to . equal ( '0124515891' )
10679 } )
10780 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 )
12182 expect ( actual ) . to . equal ( '9251071085' )
12283 } )
12384 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 )
13786 expect ( actual ) . to . equal ( '5941429882' )
13887 } )
13988 } )
14089 describe ( 'findPattern()' , ( ) => {
14190 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 )
15592 expect ( actual ) . to . equal ( 9 )
15693 } )
15794 } )
15895 describe ( 'findPattern()' , ( ) => {
15996 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 )
17398 expect ( actual ) . to . equal ( 5 )
17499 } )
175100 } )
176101 describe ( 'findPattern()' , ( ) => {
177102 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 )
191104 expect ( actual ) . to . equal ( 18 )
192105 } )
193106 } )
194107 describe ( 'findPattern()' , ( ) => {
195108 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 )
209110 expect ( actual ) . to . equal ( 2018 )
210111 } )
211112 } )
0 commit comments