From e25db5b91691c8b26d1e2a9baf1e832f26f84da9 Mon Sep 17 00:00:00 2001 From: Marco Cruz Date: Sun, 1 Dec 2024 00:43:04 -0600 Subject: [PATCH 1/3] :arrow_up: Update dependencies and add postinstall script --- package-lock.json | 31 +++++++++++++++++-------------- package.json | 8 +++++++- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2ee87e8..91e061e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,7 @@ "": { "name": "adventjs-solutions", "version": "1.0.0", + "hasInstallScript": true, "license": "MIT", "devDependencies": { "eslint": "^8.30.0", @@ -1929,10 +1930,11 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4298,12 +4300,13 @@ "dev": true }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -7081,9 +7084,9 @@ "dev": true }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -8817,12 +8820,12 @@ "dev": true }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, diff --git a/package.json b/package.json index 35c0350..618ada5 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,15 @@ "test:2021": "jest --testPathPattern=2021", "test:2022": "jest --testPathPattern=2022", "test:2023": "jest --testPathPattern=2023", + "test:2024": "jest --testPathPattern=2024", "lint": "eslint **/*.js", "lint:fix": "eslint **/*.js --fix", - "prepare": "husky install" + "prepare": "husky install", + "postinstall": "npm run prepare" + }, + "prettier": { + "singleQuote": true, + "trailingComma": "all" }, "keywords": [ "midudev", From d920326cbb55e232e6007c679ff3cc4b1c80f4a2 Mon Sep 17 00:00:00 2001 From: Marco Cruz Date: Sun, 1 Dec 2024 00:44:23 -0600 Subject: [PATCH 2/3] =?UTF-8?q?=E2=9C=A8=20Add=20challenge-01=20solution?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2024/01-primer-regalo-repetido/README.md | 20 ++++++++++ 2024/01-primer-regalo-repetido/index.js | 5 +++ 2024/01-primer-regalo-repetido/index.test.js | 39 ++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 2024/01-primer-regalo-repetido/README.md create mode 100644 2024/01-primer-regalo-repetido/index.js create mode 100644 2024/01-primer-regalo-repetido/index.test.js diff --git a/2024/01-primer-regalo-repetido/README.md b/2024/01-primer-regalo-repetido/README.md new file mode 100644 index 0000000..48b5e4a --- /dev/null +++ b/2024/01-primer-regalo-repetido/README.md @@ -0,0 +1,20 @@ +# Reto 01: 🎁 ¡Primer regalo repetido! + +**Santa Claus** 🎅 ha recibido una lista de números mágicos que representan regalos 🎁, pero algunos de ellos están duplicados y deben ser eliminados para evitar confusiones. Además, **los regalos deben ser ordenados en orden ascendente antes de entregárselos a los elfos.** + +Tu tarea es escribir una función que reciba una lista de números enteros (que pueden incluir duplicados) y devuelva una nueva lista sin duplicados, ordenada en orden ascendente. + +```js +const gifts1 = [3, 1, 2, 3, 4, 2, 5] +const preparedGifts1 = prepareGifts(gifts1) +console.log(preparedGifts1) // [1, 2, 3, 4, 5] + +const gifts2 = [6, 5, 5, 5, 5] +const preparedGifts2 = prepareGifts(gifts2) +console.log(preparedGifts2) // [5, 6] + +const gifts3 = [] +const preparedGifts3 = prepareGifts(gifts3) +console.log(preparedGifts3) // [] +// No hay regalos, la lista queda vacía +``` diff --git a/2024/01-primer-regalo-repetido/index.js b/2024/01-primer-regalo-repetido/index.js new file mode 100644 index 0000000..267db60 --- /dev/null +++ b/2024/01-primer-regalo-repetido/index.js @@ -0,0 +1,5 @@ +function prepareGifts(gifts) { + return [...new Set(gifts)].sort((a, b) => a - b); +} + +module.exports = prepareGifts; diff --git a/2024/01-primer-regalo-repetido/index.test.js b/2024/01-primer-regalo-repetido/index.test.js new file mode 100644 index 0000000..ea9b658 --- /dev/null +++ b/2024/01-primer-regalo-repetido/index.test.js @@ -0,0 +1,39 @@ +const prepareGifts = require('./index'); + +describe('01 => Primer-regalo-repetido', () => { + const TEST_CASES = [ + { + input: [3, 1, 2, 3, 4, 2, 5], + output: [1, 2, 3, 4, 5], + }, + { + input: [5, 5, 5, 5], + output: [5], + }, + { + input: [1, 2, 3], + output: [1, 2, 3], + }, + { + input: [], + output: [], + }, + { + input: [10, 20, 10, 30, 20, 30, 40], + output: [10, 20, 30, 40], + }, + { + input: [3, 1, 2, 3, 1, 2], + output: [1, 2, 3], + }, + ]; + + it('should return an array', () => { + const { input } = TEST_CASES[0]; + expect(prepareGifts(input)).toBeInstanceOf(Array); + }); + + it.each(TEST_CASES)('should return $output', ({ input, output }) => { + expect(prepareGifts(input)).toEqual(output); + }); +}); From 3874f7b53818681c02caca346d022267561e5a61 Mon Sep 17 00:00:00 2001 From: Marco Cruz Date: Sun, 1 Dec 2024 00:45:29 -0600 Subject: [PATCH 3/3] =?UTF-8?q?=E2=9C=A8=20Update=20README=20for=202024=20?= =?UTF-8?q?challenges=20and=20add=20solution=20details?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6d15060..9374d2b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@
adventjs-2023
@@ -44,17 +44,33 @@ npm run test:2021 npm run test:2022 # or npm run test:2023 +# or +npm run test:2024 # Run specific test npm run test 'year'/'challenge'/index.test.js ``` -## 🎯 2023 Challenges +## 🎯 2024 Challenges
Show / Hide +| # | Challenge | Difficulty | My Solution | My Score | +| :-: | ------------------------------------------------------------------------------------------- | :--------: | :------------------------------------------------------------------------------------------------------------: | :-----------: | +| 01 | [🎁 ¡Primer regalo repetido!](https://adventjs.dev/es/challenges/2024/1) | 🟢 | [here](./2024/01-primer-regalo-repetido/index.js) | ⭐⭐⭐⭐⭐ | + +Difficulties legend: +🟢 Easy 🟡 Medium 🔴 Hard + +
+ +## 🎯 2023 Challenges + +
+Show / Hide + | # | Challenge | Difficulty | My Solution | | :-: | ------------------------------------------------------------------------------------------- | :--------: | :------------------------------------------------------------------------------------------------------------: | | 01 | [¡Primer regalo repetido!](https://adventjs.dev/es/challenges/2023/1) | 🟢 | [here](https://github.com/marcode24/adventjs-solutions/tree/main/2023/01-primer-regalo-repetido) |