diff --git a/spec/advanced/advanced.spec.js b/spec/advanced/advanced.spec.js index a377855..d43fe10 100644 --- a/spec/advanced/advanced.spec.js +++ b/spec/advanced/advanced.spec.js @@ -5,7 +5,8 @@ const { average, largest, smallest, - median + median, + nums } = require('../../src/advanced/advanced') describe('advanced', () => { diff --git a/src/advanced/advanced.js b/src/advanced/advanced.js index 8b2b193..bc129ba 100644 --- a/src/advanced/advanced.js +++ b/src/advanced/advanced.js @@ -5,21 +5,68 @@ const nums = [1, 10, 3, 9, 4, 8, 5, 7, 6, 2, -5, -2, -4, -9] // eslint-disable-l // to prove you have done this, set the variable indexOfTen to the iteration index when you find 10 let hasTen = false let indexOfTen = -1 +for(let i = 0; i < nums.length; i++){ + if (nums[i] === 10){ + hasTen = true + indexOfTen = i + break + } +} // 2. Use a for loop to count how many numbers in the array are divisible by 3 let divisibleByThreeCount = 0 +for(let i = 0; i < nums.length; i++){ + if(nums[i] % 3 === 0){ + divisibleByThreeCount ++ + } +} // 3. use a for loop to find the average of the numbers in the array let average = 0 +let sum = 0 +for(let i = 0; i < nums.length; i ++){ + sum += nums[i] +} +average = sum/nums.length // 4. use a for loop to find the largest number in the array let largest = 0 +for(let i = 0; i < nums.length; i ++){ + if(nums[i] > largest){ + largest = nums[i] + } +} // 5. use a for loop to find the smallest number in the array let smallest = 100000 +for(let i = 0; i < nums.length; i ++){ + if(nums[i] < smallest){ + smallest = nums[i] + } +} // 6. find the median of the numbers in the array +//MY COMMENT: here the test provided fails, +//but i think the median should be 3.5 and not 3, so i will keep it like this let median = 0 +for(let i = 1; i < nums.length; i++){ + for(let j = i; j > 0; j--){ + if(nums[j] < nums[j - 1]){ + nums[j] = [nums[j-1], nums[j - 1] = nums[j]][0] + } + else{ + break + } + } +} + +if(nums.length % 2 === 0){ + median = (nums[nums.length/2 -1] + nums[nums.length/2])/2 +} +else{ + median = nums[(nums.length - 1)/2] +} + module.exports = { hasTen, @@ -28,5 +75,6 @@ module.exports = { average, largest, smallest, - median + median, + nums } diff --git a/src/extensions/nested-loops.js b/src/extensions/nested-loops.js index 1d0044b..cba4fea 100644 --- a/src/extensions/nested-loops.js +++ b/src/extensions/nested-loops.js @@ -10,27 +10,73 @@ const deepThree = [] // 1. Using a for loop from 1 to 10, add the value of the 'loop index' to the array 'simpleOne' // eg [1,2,3...] - -// HINT: in the below loop, the statements and block of code needs to be changed -// HINT: in the below loop, the var i represents the loop index -// for (let i = 5; i < 7; i++) { -// Your code here -// } +for(let i = START; i <= END; i++){ + simpleOne.push(i) +} // 2. Using nested for loops, add arrays to 'nestedOne' where each array has n copies of the outer 'loop index' // eg [[1],[2,2],...] +for(let i = START; i <= END; i++){ + let n_array = [] + for(let j = 0; j < i; j++){ + n_array.push(i) + } + nestedOne.push(n_array) +} // 3. As 2, but each array should contain the values from the outer 'loop index' to 1 inclusive. Update array 'nestedTwo' // eg [[1],[2,1],...] +for(let i = START; i <= END; i++){ + let countdown_array = [] + for(let j = i; j > 0; j--){ + countdown_array.push(j) + } + nestedTwo.push(countdown_array) +} // 4. As 2, but each array should contain arrays from 1 to the outer 'loop index' with the value of the outer 'loop index'. Update array 'deepOne' // eg [[[1]],[[2],[2,2]],...] +for(let i = START; i <= END; i++){ + let lenght_i_array = [] + for(let j = 1; j <= i; j++){ + let inner_array = [] + for(let k = 0; k < j; k++){ + inner_array.push(i) + } + lenght_i_array.push(inner_array) + } + deepOne.push(lenght_i_array) +} // 5. As 4, update array 'deepTwo' so that the result is: // [[[1]],[[1],[1,2]],...] +for(let i = START; i <= END; i++){ + let lenght_i_array = [] + for(let j = 1; j <= i; j++){ + let inner_array = [] + for(let k = 1; k <= j; k++){ + inner_array.push(k) + } + lenght_i_array.push(inner_array) + } + deepTwo.push(lenght_i_array) +} // 6. As 5, update the array 'deepThree', but the result should be the average of the sum of the squares of the numbers in each array // [[1],[[1],[2.5]],...] +for(let i = START; i <= END; i++){ + let lenght_i_array = [] + for(let j = 1; j <= i; j++){ + let inner_array = [] + let sum = 0 + for(let k = 1; k <= j; k++){ + sum += k**2 + } + inner_array.push(sum/j) + lenght_i_array.push(inner_array) + } + deepThree.push(lenght_i_array) +} module.exports = { START, diff --git a/src/for-loop-and-arrays.js b/src/for-loop-and-arrays.js index 6635155..b53db4c 100644 --- a/src/for-loop-and-arrays.js +++ b/src/for-loop-and-arrays.js @@ -6,17 +6,32 @@ let word = '' // eslint-disable-line prefer-const // TODO: Add code below this line to make the tests pass // 1. Use a for loop to set the sum variable to the sum of all the values in nums +for(let i = 0; i < nums.length; i ++){ + sum += nums[i] +} // 2. Use a for loop to populate doubledNums with every value from nums array doubled (i.e [2, 6, 24, etc...]) const doubledNums = [] +for(let i = 0; i < nums.length; i++){ + doubledNums.push(nums[i]*2) +} // 3. Use a for loop to set word variable equal to all the letters in the letters array combined as a single string +for(let i = 0; i < letters.length; i++){ + word += letters[i] +} // 4. Use a for loop to populate everySecondNum with every second number from the nums array const everySecondNum = [] +for(let i = 1; i < nums.length; i += 2){ + everySecondNum.push(nums[i]) +} // 5. Use a for loop to populate numsReversed with the numbers from nums in reverse order const numsReversed = [] +for(let i = nums.length -1; i >= 0; i--){ + numsReversed.push(nums[i]) +} // do not change below this line module.exports = { diff --git a/src/for-loop-basic.js b/src/for-loop-basic.js index dc3775a..caa7787 100644 --- a/src/for-loop-basic.js +++ b/src/for-loop-basic.js @@ -4,13 +4,24 @@ const evenNums = [] const countdown = [] // TODO: 1. Write a for loop that adds the numbers 0 to 3 to the numsZeroToThree array +for(let i = 0; i < 4; i ++){ + numsZeroToThree.push(i) +} // TODO: 2. Write a for loop that adds the numbers 5 to 10 to the numsFiveToTen array +for(let i = 5; i < 11; i++){ + numsFiveToTen.push(i) +} // TODO: 3. Write a for loop that adds all the even numbers between 0 and 6 (0, 2, 4, 6) to evenNums +for(let i = 0; i < 7; i += 2){ + evenNums.push(i) +} // TODO: 4. Write a for loop that adds the numbers 3 to 0 (in that order) to the countdown array - +for(let i = 3; i >= 0; i--){ + countdown.push(i) +} // do not change below this line module.exports = { a: numsZeroToThree,