diff --git a/src/functions-and-arrays.js b/src/functions-and-arrays.js index 2fcd81e6e..3712a98b3 100644 --- a/src/functions-and-arrays.js +++ b/src/functions-and-arrays.js @@ -1,6 +1,14 @@ // Find the maximum +/*function maxOfTwoNumbers(a, b) { + return Math.max(a, b); +}*/ + +var maxOfTwoNumbers = (a, b) => + a > b ? a : b; + // Finding Longest Word + var words = [ 'mystery', 'brother', @@ -11,15 +19,52 @@ var words = [ 'crackpot' ]; +function findLongestWord(arr) { + var longest = arr[0]; + for (var i = 1; i < arr.length; i++) { + var word = arr[i]; + if (word.length > longest.length) { + longest = word; + } + } + return longest; +} + + // Calculating a Sum var numbers = [6, 12, 1, 18, 13, 16, 2, 1, 8, 10]; +/*function sumArray(numbers) { + var sum = 0; + for (var i = 0; i < numbers.length; i++) { + sum += numbers[i]; + } + return sum; +}*/ + +var sumArray = (numbers) => + numbers.reduce(function(acc, number) { + return acc + number; +}, 0); + + // Calculate the Average var numbersAvg = [2, 6, 9, 10, 7, 4, 1, 9]; +function averageNumbers(arr) { + if (arr.length === 0) { + return undefined; + } + var sum = sumArray(arr); + var average = sum / arr.length; + return average; +} + + // Array of Strings + var wordsArr = [ 'seat', 'correspond', @@ -33,7 +78,19 @@ var wordsArr = [ 'palace' ]; +function averageWordLength(arr) { + if (arr.length === 0) { + return undefined; + } + var sumOfCharacters = 0; + for (var i = 0; i < arr.length; i++) { + sumOfCharacters += arr[i].length; + } + return sumOfCharacters / arr.length; +} + // Unique Arrays + var wordsUnique = [ 'crab', 'poison', @@ -48,7 +105,21 @@ var wordsUnique = [ 'bring' ]; +function uniquifyArray(arr) { + if (arr.length === 0) { + return undefined; + } + var filtered = []; + for (var i = 0; i < arr.length; i++) { + if (filtered.indexOf(arr[i]) === -1) { + filtered.push(arr[i]); + } + } + return filtered; +} + // Finding Elements + var wordsFind = [ 'machine', 'subset', @@ -60,7 +131,19 @@ var wordsFind = [ 'disobedience' ]; +function doesWordExist(arr, word) { + var result = false; + for (var i = 0; i < arr.length; i++) { + if (arr[i] === word) { + var result = true; + } + } + return result; +} + + // Counting Repetion + var wordsCount = [ 'machine', 'matter', @@ -74,6 +157,21 @@ var wordsCount = [ 'disobedience', 'matter' ]; + +function howManyTimes(arr, word) { + var counter = 0; + if (arr.length === 0) { + return false; + } + for (var i = 0; i < arr.length; i++) { + if (arr[i] === word) { + counter++; + } + } + return counter; +} + + // Bonus Quest var matrix = [ @@ -98,3 +196,55 @@ var matrix = [ [20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54], [1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48] ]; + +// function greatestProduct(matrix, adjacent) { +// var max = 0; + +// var dx = [1, 0, 1,-1]; +// var dy = [0, 1, 1, 1]; + +// for (var y = 0; y < matrix.length; y++) { +// for (var x = 0; x < matrix[y].length; x++) { +// for (var d = 0; d < 4; d++) { +// var p = 1; +// for (var i = 0; i < adjacent; i++) { +// p*= get(matrix, y + i * dy[d], x + i * dx[d]); +// } +// max = Math.max(p, max); +// } +// } +// } +// return max; +// } +// greatestProduct(matrix, 4); + + +// via 2 + +function greatestProduct(matrix) { + var horizontal, vertical, diagonal; + var greatProduct = 0; + + for (var i=0, nRows = matrix.length; i < nRows - 1; i++) { + for (var j=0, nCols = matrix[0].length; j < nCols - 1; j++) { + // 4 horizontal elements + if (j < nCols-3) { + horizontal = matrix[i][j] * matrix[i][j+1] * matrix[i][j+2] * matrix[i][j+3]; + } + + // 4 vertical elements + if (i < nRows-3) { + vertical = matrix[i][j] * matrix[i+1][j] * matrix[i+2][j] * matrix[i+3][j]; + } + + // 4 Diagonal elements + if (i < nRows-3 && j < nCols-3) { + diagonal = matrix[i][j] * matrix[i+1][j+1] * matrix[i+2][j+2] * matrix[i+3][j+3]; + } + + greatProduct = Math.max(greatProduct, horizontal, vertical, diagonal); + } + } + + return greatProduct; +} \ No newline at end of file diff --git a/src/index.html b/src/index.html new file mode 100644 index 000000000..3c8ead334 --- /dev/null +++ b/src/index.html @@ -0,0 +1,17 @@ + + + +
+