Skip to content

Commit

Permalink
➕ feat: problems
Browse files Browse the repository at this point in the history
  • Loading branch information
linder3hs committed Mar 9, 2024
1 parent c1ec78d commit 87c99de
Show file tree
Hide file tree
Showing 4 changed files with 119 additions and 66 deletions.
10 changes: 10 additions & 0 deletions semana-6/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script defer src="./problems3.js"></script>
</head>
<body></body>
</html>
66 changes: 0 additions & 66 deletions semana-6/problems2.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,69 +22,3 @@ function fizzBuzz(number) {
for (let i = 1; i <= 100; i++) {
console.log(fizzBuzz(i));
}

/*
En la fábrica de juguetes del Polo Norte, cada juguete tiene un número de identificación único.
Sin embargo, debido a un error en la máquina de juguetes, algunos números se han asignado a más de un juguete.
¡Encuentra el primer número de identificación que se ha repetido, donde la segunda ocurrencia tenga el índice más pequeño!
En otras palabras, si hay más de un número repetido, debes devolver el número cuya segunda ocurrencia aparezca primero en la lista. Si
*/

function findFirstRepeated(gifts) {
const cleanNumbers = new Set(gifts)

// Si son iguales no hay numeros repetidos
if (gifts.length === cleanNumbers.size) return -1

const result = {}

gifts.forEach(function (gift, index) {
if (result[gift]) {
result[gift]["repeat"] += 1
result[gift]["index"] -= index
} else {
result[gift] = {
repeat: 1,
index
}
}
})
const filterNumbers = Object.entries(result).filter(function ([key, value]) {
if (value.repeat > 1) {
return {
"number": 1
}
}
}).map(function ([key, value]) {
return {
[key]: Math.abs(value.index)
}
})

console.log(filterNumbers)

let menor = 0
}

const giftIds = [2, 1, 3, 5, 3, 2]

const firstRepeatedId = findFirstRepeated(giftIds)
console.log(firstRepeatedId) // 3
// Aunque el 2 y el 3 se repiten
// el 3 aparece primero por segunda vez

// const giftIds2 = [1, 2, 3, 4]
// const firstRepeatedId2 = findFirstRepeated(giftIds2)
// console.log(firstRepeatedId2) // -1




// Es -1 ya que no se repite ningún número

// const giftIds3 = [5, 1, 5, 1]
// const firstRepeatedId3 = findFirstRepeated(giftIds3)
// console.log(firstRepeatedId3) // 5
85 changes: 85 additions & 0 deletions semana-6/problems3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
// map y forEach
const numbers = [10, 20, 34, 53];
/*
numbers.map(function (item, index, array) {
})
numbers.forEach(function (item, index, array) {
})
*/

// filter y find

// filter : retorna un array con la informacion filtrada
const number2 = numbers.filter(function (number) {
return number > 20;
});

console.log("Number2", number2);

const books = [
{
id: 1,
title: "1984",
country: "UK",
pages: 328,
isbn: "9780451524935",
},
{
id: 2,
title: "hamlet",
country: "Denmark",
pages: 342,
isbn: "9780743477123",
},
];

const filterBooks = books.filter(function (book) {
return book.pages > 330;
});

console.log(filterBooks);

console.log("Indice de un element dentro de un array", numbers.indexOf(34));
console.log("Indice de un element dentro de un array", numbers.indexOf(99));

/*
En la fábrica de juguetes del Polo Norte, cada juguete tiene un número de identificación único.
Sin embargo, debido a un error en la máquina de juguetes, algunos números se han asignado a más de un juguete.
¡Encuentra el primer número de identificación que se ha repetido, donde la segunda ocurrencia tenga el índice más pequeño!
En otras palabras, si hay más de un número repetido, debes devolver el número cuya segunda ocurrencia aparezca primero en la lista. Si
*/

function findFirstRepeated(gifts) {
const cleanNumbers = gifts.filter(function (gift, index) {
return gifts.indexOf(gift) !== index;
});

return cleanNumbers[0] ?? -1;
}
// x
const giftIds = [2, 1, 3, 5, 3, 2];

const firstRepeatedId = findFirstRepeated(giftIds);
console.log("caso1", firstRepeatedId); // 3
const giftIds2 = [1, 2, 3, 4];
const firstRepeatedId2 = findFirstRepeated(giftIds2);
console.log("caso2", firstRepeatedId2); // -1
// Aunque el 2 y el 3 se repiten
// el 3 aparece primero por segunda vez

// const giftIds2 = [1, 2, 3, 4]
// const firstRepeatedId2 = findFirstRepeated(giftIds2)
// console.log(firstRepeatedId2) // -1

// Es -1 ya que no se repite ningún número

// const giftIds3 = [5, 1, 5, 1]
// const firstRepeatedId3 = findFirstRepeated(giftIds3)
// console.log(firstRepeatedId3) // 5
24 changes: 24 additions & 0 deletions semana-6/test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* En la fábrica de juguetes del Polo Norte, cada juguete tiene un número de
* identificación único.
Sin embargo, debido a un error en la máquina de juguetes, algunos números
se han asignado a más de un juguete.
¡Encuentra el primer número de identificación que se ha repetido, donde la
segunda ocurrencia tenga el índice más pequeño!
En otras palabras, si hay más de un número repetido, debes devolver el número
cuya segunda ocurrencia aparezca primero en la lista. Si no hay números
repetidos, devuelve -1.
*/
function findFirstRepeated(gifts) {
const duplicates = gifts.filter(
(item, index) => gifts.indexOf(item) !== index
);

return duplicates[0] ?? -1;
}

const giftIds = [1, 2, 3, 4];
console.log(findFirstRepeated(giftIds));

0 comments on commit 87c99de

Please sign in to comment.