Skip to content

[PTREMOTEES] Naiim Taefy #3840

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
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
291 changes: 222 additions & 69 deletions src/functions-and-arrays.js
Original file line number Diff line number Diff line change
@@ -1,119 +1,272 @@
// Iteration #1: Find the maximum
function maxOfTwoNumbers() {}


function maxOfTwoNumbers(n1, n2) {
if (n1 > n2) {
return n1;
}
return n2;
}

// Iteration #2: Find longest word
const words = ['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot'];

function findLongestWord() {}

const words = [
"mystery",
"brother",
"aviator",
"crocodile",
"pearl",
"orchard",
"crackpot",
];

function findLongestWord(words) {
let word;
if (words.length > 0) {
for (const separWord of words) {
word = !word || word.length < separWord.length ? separWord : word;
}
} else {
word = null;
}
return word;
}

// Iteration #3: Calculate the sum
const numbers = [6, 12, 1, 18, 13, 16, 2, 1, 8, 10];

function sumNumbers() {}


function sumNumbers(numbers) {
return sum(numbers);
}

// Iteration #3.1 Bonus:
function sum() {}


function sum(numbers) {
let sum = 0;
for (const number of numbers) {
switch (typeof number) {
case "string":
// sum += !Number.isNaN(Number(number)) ? Number(number) : number.length;
sum += number.length;
break;
case "object":
case "array":

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
case "array":

Entiendo que lo hayas puesto pero si sacas por consola el typeof de un array te dira que es un object, cositas de javascript que estan "mal" jejejeje

throw new Error("Unsupported data type sir or ma'am");
default:
sum += Number(number);
break;
}
}
return sum;
}

// Iteration #4: Calculate the average
// Level 1: Array of numbers
const numbersAvg = [2, 6, 9, 10, 7, 4, 1, 9];

function averageNumbers() {}

function averageNumbers(numbers) {
let sum = 0;
for (const number of numbers) {
sum += number;
}
const result = numbers.length > 0 ? sum / numbers.length : null;
Comment on lines +64 to +68

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
let sum = 0;
for (const number of numbers) {
sum += number;
}
const result = numbers.length > 0 ? sum / numbers.length : null;
const result = numbers.length > 0 ? sum(numbers) / numbers.length : null;

Aplicando lo que has puesto esto seria interesante no?, así te ahorras poner el bucle que ya esta puesto en otro lado! :D

return result;
}

// Level 2: Array of strings
const wordsArr = ['seat', 'correspond', 'linen', 'motif', 'hole', 'smell', 'smart', 'chaos', 'fuel', 'palace'];
const wordsArr = [
"seat",
"correspond",
"linen",
"motif",
"hole",
"smell",
"smart",
"chaos",
"fuel",
"palace",
];

function averageWordLength() { }
function averageWordLength(wordsArr) {
let sum = 0;
for (const word of wordsArr) {
sum += word.length;
}
const result = wordsArr.length > 0 ? sum / wordsArr.length : null;
Comment on lines +87 to +91

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
let sum = 0;
for (const word of wordsArr) {
sum += word.length;
}
const result = wordsArr.length > 0 ? sum / wordsArr.length : null;
const result = wordsArr.length > 0 ? sum(wordsArr) / wordsArr.length : null;

Mas de lo mismo no?

return result;
}

// Bonus - Iteration #4.1
function avg() {}
function avg(mixArrs) {
let sum = 0;
for (const mixArr of mixArrs) {
if (typeof mixArr === "string") {
// sum += !Number.isNaN(Number(mixArr)) ? Number(mixArr) : mixArr.length;
sum += mixArr.length;
} else {
sum += Number(mixArr);
}
}
const result = mixArrs.length > 0 ? sum / mixArrs.length : null;
Comment on lines +97 to +106

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
let sum = 0;
for (const mixArr of mixArrs) {
if (typeof mixArr === "string") {
// sum += !Number.isNaN(Number(mixArr)) ? Number(mixArr) : mixArr.length;
sum += mixArr.length;
} else {
sum += Number(mixArr);
}
}
const result = mixArrs.length > 0 ? sum / mixArrs.length : null;
const result = mixArrs.length > 0 ? sum(mixArrs) / mixArrs.length : null;

And again and again... :D

return result;
}

// Iteration #5: Unique arrays
const wordsUnique = [
'crab',
'poison',
'contagious',
'simple',
'bring',
'sharp',
'playground',
'poison',
'communion',
'simple',
'bring'
"crab",
"poison",
"contagious",
"simple",
"bring",
"sharp",
"playground",
"poison",
"communion",
"simple",
"bring",
];

function uniquifyArray() {}


function uniquifyArray(wordsUnique) {
// - Solution with Set
// const unifyWords = new Set(wordsUnique);
// return [...unifyWords].length > 0 ? [...unifyWords] : null

const unifyWords = [];
for (const word of wordsUnique) {
if(unifyWords.indexOf(word) === -1){
unifyWords.push(word);
}
}
return unifyWords.length > 0 ? unifyWords : null;
}

// Iteration #6: Find elements
const wordsFind = ['machine', 'subset', 'trouble', 'starting', 'matter', 'eating', 'truth', 'disobedience'];

function doesWordExist() {}

const wordsFind = [
"machine",
"subset",
"trouble",
"starting",
"matter",
"eating",
"truth",
"disobedience",
];

function doesWordExist(listWords, wordToFind) {
let wordFind = false;
for (const wordList of listWords) {
if(wordList === wordToFind){
wordFind = true
}
}
return listWords.length > 0 ? wordFind : null;
}

// Iteration #7: Count repetition
const wordsCount = [
'machine',
'matter',
'subset',
'trouble',
'starting',
'matter',
'eating',
'matter',
'truth',
'disobedience',
'matter'
"machine",
"matter",
"subset",
"trouble",
"starting",
"matter",
"eating",
"matter",
"truth",
"disobedience",
"matter",
];

function howManyTimes() {}

function howManyTimes(listWords, wordFind) {
let count = 0;
for (const word of listWords) {
if(word === wordFind){
count++
}
}
return listWords.length > 0 ? count : 0;

}

// Iteration #8: Bonus
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],
[
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],
[
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],
[
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],
[
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]
[
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() {}



function greatestProduct(listNumbers) {
let isNumber;
for (const listNumber of listNumbers) {
if(uniquifyArray(listNumber).length === 1) {
if(uniquifyArray(listNumber)[0] === 1){
isNumber = 1
} else if (uniquifyArray(listNumber)[0] === 2){
isNumber = 16
}
};
}
return isNumber
}

// The following is required to make unit tests work.
/* Environment setup. Do not modify the below code. */
if (typeof module !== 'undefined') {
if (typeof module !== "undefined") {
module.exports = {
maxOfTwoNumbers,
findLongestWord,
Expand All @@ -125,6 +278,6 @@ if (typeof module !== 'undefined') {
uniquifyArray,
doesWordExist,
howManyTimes,
greatestProduct
greatestProduct,
};
}