diff --git a/index.js b/index.js index 0f4b28b4..6236b654 100644 --- a/index.js +++ b/index.js @@ -1,17 +1,55 @@ + +// Esta clase SortedList es básicamente una lista de números que siempre se mantiene ordenada sola. class SortedList { - constructor() {} + // El constructor arranca la lista vacía y el length en 0 + constructor() { + this.items = []; + this.length = 0; + } - add(item) {} + // Puedes agregar números y automáticamente se acomodan de menor a mayor. + add(item) { + this.items.push(item); + this.items.sort((a, b) => a - b); + this.length = this.items.length; + } - get(pos) {} + // Si pides una posición que no existe, te avienta un error. + get(pos) { + if (pos < 0 || pos >= this.items.length) { + throw new Error("OutOfBounds"); + } + return this.items[pos]; + } - max() {} + // Saca el mayor de la lista, pero si está vacía, error. + max() { + if (this.items.length === 0) { + throw new Error("EmptySortedList"); + } + return this.items[this.items.length - 1]; + } - min() {} + // Saca el menor de la lista, pero si está vacía, error. + min() { + if (this.items.length === 0) { + throw new Error("EmptySortedList"); + } + return this.items[0]; + } - sum() {} + // Suma todos los elementos. Si está vacía, regresa 0. + sum() { + return this.items.reduce((acc, val) => acc + val, 0); + } - avg() {} + // Saca el promedio. Si está vacía, error. + avg() { + if (this.items.length === 0) { + throw new Error("EmptySortedList"); + } + return this.sum() / this.items.length; + } } module.exports = SortedList; diff --git a/package.json b/package.json index 3a5127ae..f2ff4434 100644 --- a/package.json +++ b/package.json @@ -19,5 +19,8 @@ "intro" ], "author": "fer@ironhack.com", - "license": "MIT" + "license": "MIT", + "dependencies": { + "mocha": "^11.7.5" + } }