@@ -175,29 +175,121 @@ function howManyTimes(wordList, searchWord) {
175
175
176
176
// Iteration #8: Bonus
177
177
const matrix = [
178
- [ 8 , 2 , 22 , 97 , 38 , 15 , 0 , 40 , 0 , 75 , 4 , 5 , 7 , 78 , 52 , 12 , 50 , 77 , 91 , 8 ] ,
179
- [ 49 , 49 , 99 , 40 , 17 , 81 , 18 , 57 , 60 , 87 , 17 , 40 , 98 , 43 , 69 , 48 , 4 , 56 , 62 , 0 ] ,
180
- [ 81 , 49 , 31 , 73 , 55 , 79 , 14 , 29 , 93 , 71 , 40 , 67 , 53 , 88 , 30 , 3 , 49 , 13 , 36 , 65 ] ,
181
- [ 52 , 70 , 95 , 23 , 4 , 60 , 11 , 42 , 69 , 24 , 68 , 56 , 1 , 32 , 56 , 71 , 37 , 2 , 36 , 91 ] ,
178
+ [ 8 , 2 , 22 , 97 , 38 , 15 , 0 , 40 , 0 , 75 , 4 , 5 , 7 , 78 , 52 , 12 , 50 , 77 , 91 , 8 ] ,
179
+ [ 49 , 49 , 99 , 40 , 17 , 81 , 18 , 57 , 60 , 87 , 17 , 40 , 98 , 43 , 69 , 48 , 4 , 56 , 62 , 0 ] ,
180
+ [ 81 , 49 , 31 , 73 , 55 , 79 , 14 , 29 , 93 , 71 , 40 , 67 , 53 , 88 , 30 , 3 , 49 , 13 , 36 , 65 ] ,
181
+ [ 52 , 70 , 95 , 23 , 4 , 60 , 11 , 42 , 69 , 24 , 68 , 56 , 1 , 32 , 56 , 71 , 37 , 2 , 36 , 91 ] ,
182
182
[ 22 , 31 , 16 , 71 , 51 , 67 , 63 , 89 , 41 , 92 , 36 , 54 , 22 , 40 , 40 , 28 , 66 , 33 , 13 , 80 ] ,
183
- [ 24 , 47 , 32 , 60 , 99 , 3 , 45 , 2 , 44 , 75 , 33 , 53 , 78 , 36 , 84 , 20 , 35 , 17 , 12 , 50 ] ,
183
+ [ 24 , 47 , 32 , 60 , 99 , 3 , 45 , 2 , 44 , 75 , 33 , 53 , 78 , 36 , 84 , 20 , 35 , 17 , 12 , 50 ] ,
184
184
[ 32 , 98 , 81 , 28 , 64 , 23 , 67 , 10 , 26 , 38 , 40 , 67 , 59 , 54 , 70 , 66 , 18 , 38 , 64 , 70 ] ,
185
- [ 67 , 26 , 20 , 68 , 2 , 62 , 12 , 20 , 95 , 63 , 94 , 39 , 63 , 8 , 40 , 91 , 66 , 49 , 94 , 21 ] ,
186
- [ 24 , 55 , 58 , 5 , 66 , 73 , 99 , 26 , 97 , 17 , 78 , 78 , 96 , 83 , 14 , 88 , 34 , 89 , 63 , 72 ] ,
187
- [ 21 , 36 , 23 , 9 , 75 , 0 , 76 , 44 , 20 , 45 , 35 , 14 , 0 , 61 , 33 , 97 , 34 , 31 , 33 , 95 ] ,
188
- [ 78 , 17 , 53 , 28 , 22 , 75 , 31 , 67 , 15 , 94 , 3 , 80 , 4 , 62 , 16 , 14 , 9 , 53 , 56 , 92 ] ,
189
- [ 16 , 39 , 5 , 42 , 96 , 35 , 31 , 47 , 55 , 58 , 88 , 24 , 0 , 17 , 54 , 24 , 36 , 29 , 85 , 57 ] ,
190
- [ 86 , 56 , 0 , 48 , 35 , 71 , 89 , 7 , 5 , 44 , 44 , 37 , 44 , 60 , 21 , 58 , 51 , 54 , 17 , 58 ] ,
191
- [ 19 , 80 , 81 , 68 , 5 , 94 , 47 , 69 , 28 , 73 , 92 , 13 , 86 , 52 , 17 , 77 , 4 , 89 , 55 , 40 ] ,
192
- [ 4 , 52 , 8 , 83 , 97 , 35 , 99 , 16 , 7 , 97 , 57 , 32 , 16 , 26 , 26 , 79 , 33 , 27 , 98 , 66 ] ,
193
- [ 88 , 36 , 68 , 87 , 57 , 62 , 20 , 72 , 3 , 46 , 33 , 67 , 46 , 55 , 12 , 32 , 63 , 93 , 53 , 69 ] ,
194
- [ 4 , 42 , 16 , 73 , 38 , 25 , 39 , 11 , 24 , 94 , 72 , 18 , 8 , 46 , 29 , 32 , 40 , 62 , 76 , 36 ] ,
195
- [ 20 , 69 , 36 , 41 , 72 , 30 , 23 , 88 , 34 , 62 , 99 , 69 , 82 , 67 , 59 , 85 , 74 , 4 , 36 , 16 ] ,
196
- [ 20 , 73 , 35 , 29 , 78 , 31 , 90 , 1 , 74 , 31 , 49 , 71 , 48 , 86 , 81 , 16 , 23 , 57 , 5 , 54 ] ,
197
- [ 1 , 70 , 54 , 71 , 83 , 51 , 54 , 69 , 16 , 92 , 33 , 48 , 61 , 43 , 52 , 1 , 89 , 19 , 67 , 48 ]
185
+ [ 67 , 26 , 20 , 68 , 2 , 62 , 12 , 20 , 95 , 63 , 94 , 39 , 63 , 8 , 40 , 91 , 66 , 49 , 94 , 21 ] ,
186
+ [ 24 , 55 , 58 , 5 , 66 , 73 , 99 , 26 , 97 , 17 , 78 , 78 , 96 , 83 , 14 , 88 , 34 , 89 , 63 , 72 ] ,
187
+ [ 21 , 36 , 23 , 9 , 75 , 0 , 76 , 44 , 20 , 45 , 35 , 14 , 0 , 61 , 33 , 97 , 34 , 31 , 33 , 95 ] ,
188
+ [ 78 , 17 , 53 , 28 , 22 , 75 , 31 , 67 , 15 , 94 , 3 , 80 , 4 , 62 , 16 , 14 , 9 , 53 , 56 , 92 ] ,
189
+ [ 16 , 39 , 5 , 42 , 96 , 35 , 31 , 47 , 55 , 58 , 88 , 24 , 0 , 17 , 54 , 24 , 36 , 29 , 85 , 57 ] ,
190
+ [ 86 , 56 , 0 , 48 , 35 , 71 , 89 , 7 , 5 , 44 , 44 , 37 , 44 , 60 , 21 , 58 , 51 , 54 , 17 , 58 ] ,
191
+ [ 19 , 80 , 81 , 68 , 5 , 94 , 47 , 69 , 28 , 73 , 92 , 13 , 86 , 52 , 17 , 77 , 4 , 89 , 55 , 40 ] ,
192
+ [ 4 , 52 , 8 , 83 , 97 , 35 , 99 , 16 , 7 , 99 , 99 , 0 , 0 , 26 , 26 , 79 , 33 , 27 , 98 , 66 ] ,
193
+ [ 88 , 36 , 68 , 87 , 57 , 62 , 20 , 72 , 3 , 99 , 0 , 67 , 46 , 55 , 12 , 32 , 63 , 93 , 53 , 69 ] ,
194
+ [ 4 , 42 , 16 , 73 , 38 , 25 , 39 , 11 , 24 , 0 , 72 , 90 , 8 , 46 , 29 , 32 , 40 , 62 , 76 , 99 ] ,
195
+ [ 20 , 69 , 36 , 41 , 72 , 30 , 23 , 88 , 34 , 0 , 99 , 69 , 99 , 67 , 59 , 85 , 74 , 4 , 0 , 16 ] ,
196
+ [ 20 , 73 , 35 , 29 , 78 , 31 , 90 , 1 , 74 , 31 , 49 , 71 , 48 , 86 , 81 , 16 , 23 , 0 , 5 , 54 ] ,
197
+ [ 1 , 70 , 54 , 71 , 83 , 51 , 54 , 69 , 16 , 92 , 33 , 48 , 61 , 43 , 52 , 1 , 0 , 19 , 67 , 48 ]
198
198
] ;
199
199
200
- function greatestProduct ( ) { }
200
+ function greatestProduct ( matrix ) {
201
+
202
+ // Get row length
203
+ const rowLength = matrix [ 0 ] . length ;
204
+ console . log ( rowLength ) ;
205
+
206
+ // Get number of rows and columns
207
+ const rowNumber = matrix . length ;
208
+ const columnNumber = matrix . length ;
209
+ console . log ( rowNumber ) ;
210
+
211
+ // Dissolve two-dimensional array into one array
212
+ let allValues = [ ] ;
213
+ for ( let row of matrix ) {
214
+ for ( let value of row ) {
215
+ allValues . push ( value ) ;
216
+ }
217
+ }
218
+
219
+ // Define steps that correspond to a direction
220
+ const dir = {
221
+ horizontal : 4 ,
222
+ vertical : 20 ,
223
+ diagonalLTR : 21 ,
224
+ diagonalRTL : 19
225
+ }
226
+
227
+ // Create a variable for the step count
228
+ const step = 4 ;
229
+
230
+ // Create an array that stores all products
231
+ let products = [ ] ;
232
+
233
+ // Calculate product per groups of 4 horizontal values
234
+ // Loop through each row
235
+ for ( let i = 0 ; i < rowNumber ; i ++ ) {
236
+ // Loop through each character as long as there are enough characters in the row left
237
+ for ( let j = rowLength * i ; j < rowLength * ( i + 1 ) - 3 ; j ++ ) {
238
+ let product = 1 ;
239
+ // Iterate for 4 indexes ahead from current character
240
+ for ( let k = j ; k <= j + step - 1 ; k ++ ) {
241
+ product *= allValues [ k ] ;
242
+ }
243
+ products . push ( product ) ;
244
+ }
245
+ }
246
+
247
+ // Calculate product per groups of 4 vertical values
248
+ // Loop through each row until it reaches row 17
249
+ for ( let i = 0 ; i < columnNumber - ( step - 1 ) ; i ++ ) {
250
+ // Loop through each character until the end of the row
251
+ //console.log(i);
252
+ for ( let j = i * dir . vertical ; j < rowLength * i ; j ++ ) {
253
+ let product = 1 ;
254
+ // Iterate for 20 indexes ahead from current character
255
+ for ( let k = j ; k <= j + ( step - 1 ) * dir . vertical ; k += dir . vertical ) {
256
+ product *= allValues [ k ] ;
257
+ }
258
+ products . push ( product ) ;
259
+ }
260
+ }
261
+
262
+ // Calculate product per groups of 4 LTRTTB values
263
+ // Loop through each row until it reaches row 17
264
+ for ( let i = 0 ; i < columnNumber - ( step - 1 ) ; i ++ ) {
265
+ // Loop through each character as long as there are enough characters in the row left
266
+ for ( let j = rowLength * i ; j < rowLength * ( i + 1 ) - 3 ; j ++ ) {
267
+ let product = 1 ;
268
+ // Iterate for 21 indexes ahead from current character
269
+ for ( let k = j ; k <= j + ( step - 1 ) * dir . diagonalLTR ; k += dir . diagonalLTR ) {
270
+ product *= allValues [ k ] ;
271
+ }
272
+ products . push ( product ) ;
273
+ }
274
+ }
275
+
276
+ // Calculate product per groups of 4 right-to-left diagonal values
277
+ // Loop through each row until it reaches row 17
278
+ for ( let i = 0 ; i < columnNumber - ( step - 1 ) ; i ++ ) {
279
+ // Loop through each character until the end of the row
280
+ for ( let j = i * rowLength + 3 ; j < rowLength * ( i + 1 ) ; j ++ ) {
281
+ let product = 1 ;
282
+ // Iterate for 4 indexes ahead from current character
283
+ for ( let k = j ; k <= j + ( step - 1 ) * dir . diagonalRTL ; k += dir . diagonalRTL ) {
284
+ product *= allValues [ k ] ;
285
+ }
286
+ products . push ( product ) ;
287
+ }
288
+ }
289
+
290
+ var largest = Math . max . apply ( 0 , products ) ;
291
+ return largest ;
292
+ }
201
293
202
294
203
295
0 commit comments