Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
303 changes: 165 additions & 138 deletions README.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions SpecRunner.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
<script src="jasmine/jasmine-2.8.0/boot.js"></script>

<!-- include source files here... -->
<script src="src/functions-and-arrays.js"></script>
<script src="src/challenges.js"></script>

<!-- include spec files here... -->
<script src="tests/functions-and-arrays.spec.js"></script>
<script src="tests/challenges.spec.js"></script>
</head>

<body></body>
Expand Down
2 changes: 1 addition & 1 deletion jasmine/jasmine-2.8.0/jasmine-html.js
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ jasmineRequire.HtmlReporter = function(j$) {
var alert = find('.jasmine-alert');
var order = doneResult && doneResult.order;
labName.appendChild(createDom('img', {src: 'jasmine/jasmine-2.8.0/ironhack-logo.png'}, ''));
labName.appendChild(createDom('span', {}, 'LAB | JS Functions & Arrays'));
labName.appendChild(createDom('span', {}, 'LAB | JS Challenges - Arrays & Functions'));
alert.appendChild(createDom('span', {className: 'jasmine-duration'}, 'finished in ' + timer.elapsed() / 1000 + 's'));

banner.appendChild(
Expand Down
155 changes: 155 additions & 0 deletions src/challenges.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
// Iteration 1 | Count Repetition
const repeatedWords = [
"machine",
"matter",
"subset",
"trouble",
"starting",
"matter",
"eating",
"matter",
"truth",
"disobedience",
"matter"
];

function howManyTimes(wordsArray, wordToSearch) {
if (wordsArray.length === 0) {
return 0; // Return 0 if the array is empty
}

let count = 0;
for (let i = 0; i < wordsArray.length; i++) {
if (wordsArray[i] === wordToSearch) {
count++; // Increment count if the word is found
}
}

return count;
}


// Iteration 2 | Number Sequence
function createSequence(n) {
if (n === 0) {
return []; // Returns an empty array if 0 is passed as an argument
}

let sequence = [];
for (let i = 0; i <= n; i++) {
sequence.push(i);
}

return sequence;
}


// Iteration 3 | Multiply for Each
const numbers = [1, 2, 5, 10, 13, 50];

function multiplyBy(numbersArray, multiplier) {
let multipliedNumbers = [];

numbersArray.forEach(function(number) {
multipliedNumbers.push(number * multiplier);
});

return multipliedNumbers;
}



// Iteration 4 | Filter Out
const original = ["cat", "dog", "fish", "bird", "cat", "fish"];
const toRemove = ["cat", "dog"];

function filterOut(original, toRemove) {
if (original.length === 0) {
return null; // Return null if the original array is empty
}
if (toRemove.length === 0) {
return original; // Return the original array if the toRemove array is empty
}

return original.filter(function(element) {
return !toRemove.includes(element);
});
}


// Iteration 5 | Unique Arrays
const duplicateWords = [
"crab",
"poison",
"contagious",
"simple",
"bring",
"sharp",
"playground",
"poison",
"communion",
"simple",
"bring"
];

function uniquifyArray(wordsArray) {
if (wordsArray.length === 0) {
return null; // Return null if the array is empty
}

let uniqueWords = [];
for (let i = 0; i < wordsArray.length; i++) {
if (!uniqueWords.includes(wordsArray[i])) {
uniqueWords.push(wordsArray[i]);
}
}

return uniqueWords;
}


// Bonus: Iteration 6 | Product of Adjacent Numbers
const matrix = [
[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],
[49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0],
[81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65],
[52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],
[22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80],
[24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50],
[32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70],
[67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21],
[24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72],
[21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],
[78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],
[16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57],
[86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],
[19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 4, 89, 55, 40],
[4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],
[88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69],
[4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36],
[20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16],
[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) {
let maxProduct = 0;


for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length - 3; j++) {

let horizontalProduct = matrix[i][j] * matrix[i][j + 1] * matrix[i][j + 2] * matrix[i][j + 3];
maxProduct = Math.max(maxProduct, horizontalProduct);


if (i < matrix.length - 3) {
let verticalProduct = matrix[i][j] * matrix[i + 1][j] * matrix[i + 2][j] * matrix[i + 3][j];
maxProduct = Math.max(maxProduct, verticalProduct);
}
}
}

return maxProduct;
}

130 changes: 0 additions & 130 deletions src/functions-and-arrays.js

This file was deleted.

Loading