Spaces:
Running
Running
Download js/swe-tasks.js from UtopiaIA/elffuss-code: direct link, hf CLI and curl.
- Browser
- Download file 43.8 kB
-
https://huggingface.co/spaces/UtopiaIA/elffuss-code/resolve/main/js/swe-tasks.js
- Command line
-
hf download hf://spaces/UtopiaIA/elffuss-code/js/swe-tasks.js
-
curl -L -o swe-tasks.js https://huggingface.co/spaces/UtopiaIA/elffuss-code/resolve/main/js/swe-tasks.js
43.8 kB
| // Batería de tareas estilo SWE-bench, autocontenidas y REPRODUCIBLES en el | |
| // navegador: cada una siembra un repo con un BUG + una especificación (lo que el | |
| // test espera), y un `test(mod)` que se EJECUTA de verdad contra el módulo | |
| // arreglado (métrica `resolved`, como SWE-bench). `solution` es el contenido | |
| // correcto del fichero objetivo (lo usa el solver determinista del arnés; el | |
| // modelo real no lo ve, tiene que deducirlo leyendo `target` y la spec). | |
| export const TASKS = [ | |
| { | |
| id: 'add-sub', | |
| target: 'src/math.js', | |
| files: { | |
| 'src/math.js': 'export function add(a, b) {\n return a - b; // BUG\n}\n', | |
| 'spec/math.md': '# add(a, b)\nDebe SUMAR: add(2,3) → 5, add(10,-4) → 6.', | |
| }, | |
| task: 'add() en src/math.js resta en vez de sumar; arréglalo para que sume.', | |
| solution: 'export function add(a, b) {\n return a + b;\n}\n', | |
| test: m => m.add(2, 3) === 5 && m.add(10, -4) === 6 && m.add(0, 0) === 0, | |
| }, | |
| { | |
| id: 'max-empty', | |
| target: 'src/max.js', | |
| files: { | |
| 'src/max.js': 'export function max(arr) {\n return arr.reduce((a, b) => a > b ? a : b); // BUG: peta con []\n}\n', | |
| 'spec/max.md': '# max(arr)\nmax([3,1,2]) → 3. Con array vacío NO debe petar: max([]) → undefined.', | |
| }, | |
| task: 'max() peta con un array vacío; haz que devuelva undefined en ese caso.', | |
| solution: 'export function max(arr) {\n if (!arr.length) return undefined;\n return arr.reduce((a, b) => a > b ? a : b);\n}\n', | |
| test: m => m.max([3, 1, 2]) === 3 && m.max([]) === undefined && m.max([-1, -5]) === -1, | |
| }, | |
| { | |
| id: 'unique', | |
| target: 'src/unique.js', | |
| files: { | |
| 'src/unique.js': 'export function unique(arr) {\n return arr; // BUG: no deduplica\n}\n', | |
| 'spec/unique.md': '# unique(arr)\nDevuelve el array SIN duplicados: unique([1,1,2,3,3]) → [1,2,3].', | |
| }, | |
| task: 'unique() no elimina duplicados; arréglalo.', | |
| solution: 'export function unique(arr) {\n return [...new Set(arr)];\n}\n', | |
| test: m => { const r = m.unique([1, 1, 2, 3, 3]); return r.length === 3 && r.join(',') === '1,2,3'; }, | |
| }, | |
| { | |
| id: 'slugify', | |
| target: 'src/slug.js', | |
| files: { | |
| 'src/slug.js': 'export function slugify(s) {\n return s.replace(/ /g, "-"); // BUG: no pasa a minúsculas\n}\n', | |
| 'spec/slug.md': '# slugify(s)\nMinúsculas y guiones: slugify("Hola Mundo") → "hola-mundo".', | |
| }, | |
| task: 'slugify() no pasa a minúsculas; debe devolver minúsculas con guiones.', | |
| solution: 'export function slugify(s) {\n return s.toLowerCase().replace(/ /g, "-");\n}\n', | |
| test: m => m.slugify('Hola Mundo') === 'hola-mundo' && m.slugify('A B C') === 'a-b-c', | |
| }, | |
| { | |
| id: 'clamp', | |
| target: 'src/clamp.js', | |
| files: { | |
| 'src/clamp.js': 'export function clamp(v, lo, hi) {\n return v; // BUG: no acota\n}\n', | |
| 'spec/clamp.md': '# clamp(v, lo, hi)\nAcota v al rango [lo,hi]: clamp(15,0,10) → 10, clamp(-5,0,10) → 0.', | |
| }, | |
| task: 'clamp() no acota el valor al rango [lo,hi]; arréglalo.', | |
| solution: 'export function clamp(v, lo, hi) {\n return Math.min(hi, Math.max(lo, v));\n}\n', | |
| test: m => m.clamp(15, 0, 10) === 10 && m.clamp(-5, 0, 10) === 0 && m.clamp(5, 0, 10) === 5, | |
| }, | |
| { | |
| id: 'fizzbuzz', | |
| target: 'src/fizzbuzz.js', | |
| files: { | |
| 'src/fizzbuzz.js': 'export function fizzbuzz(n) {\n if (n % 3 === 0) return "Fizz";\n if (n % 5 === 0) return "Buzz";\n if (n % 15 === 0) return "FizzBuzz"; // BUG: inalcanzable\n return String(n);\n}\n', | |
| 'spec/fizzbuzz.md': '# fizzbuzz(n)\nMúltiplo de 15 → "FizzBuzz", de 3 → "Fizz", de 5 → "Buzz", si no el número.', | |
| }, | |
| task: 'fizzbuzz(15) debería dar "FizzBuzz" pero da "Fizz"; el caso de 15 es inalcanzable, arréglalo.', | |
| solution: 'export function fizzbuzz(n) {\n if (n % 15 === 0) return "FizzBuzz";\n if (n % 3 === 0) return "Fizz";\n if (n % 5 === 0) return "Buzz";\n return String(n);\n}\n', | |
| test: m => m.fizzbuzz(15) === 'FizzBuzz' && m.fizzbuzz(9) === 'Fizz' && m.fizzbuzz(10) === 'Buzz' && m.fizzbuzz(7) === '7', | |
| }, | |
| // ── Tareas DURAS ──────────────────────────────────────────────────────────── | |
| // Las de arriba tienen ficheros de tres líneas: ahí localizar es gratis y no | |
| // se parecen en nada a editar un proyecto real. Estas llevan el bug enterrado | |
| // entre decenas de funciones con nombres que se repiten, indentación mixta y | |
| // algún CRLF, que es donde la cita del modelo empieza a fallar de verdad. | |
| { | |
| id: 'total-iva', | |
| target: 'src/carrito.js', | |
| files: { | |
| 'src/carrito.js': `// pago auxiliar 0 | |
| export function pagoAux0(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 0; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 1 | |
| export function pagoAux1(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 1; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 2 | |
| export function pagoAux2(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 2; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 3 | |
| export function pagoAux3(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 3; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 4 | |
| export function pagoAux4(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 4; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 5 | |
| export function pagoAux5(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 5; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 6 | |
| export function pagoAux6(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 6; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 7 | |
| export function pagoAux7(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 7; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 8 | |
| export function pagoAux8(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 8; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 9 | |
| export function pagoAux9(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 9; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 10 | |
| export function pagoAux10(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 10; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 11 | |
| export function pagoAux11(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 11; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 12 | |
| export function pagoAux12(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 12; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 13 | |
| export function pagoAux13(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 13; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 14 | |
| export function pagoAux14(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 14; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 15 | |
| export function pagoAux15(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 15; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 16 | |
| export function pagoAux16(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 16; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 17 | |
| export function pagoAux17(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 17; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 18 | |
| export function pagoAux18(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 18; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 19 | |
| export function pagoAux19(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 19; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // Calcula el total del carrito aplicando descuento e impuestos. | |
| export function totalCarrito(lineas, descuento = 0, iva = 0.21) { | |
| let suma = 0; | |
| for (const l of lineas) { | |
| suma += l.precio * l.unidades; | |
| } | |
| const conDescuento = suma - descuento; | |
| return conDescuento; // BUG: no aplica el IVA | |
| } | |
| // pago auxiliar 20 | |
| export function pagoAux20(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 20; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 21 | |
| export function pagoAux21(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 21; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 22 | |
| export function pagoAux22(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 22; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 23 | |
| export function pagoAux23(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 23; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 24 | |
| export function pagoAux24(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 24; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 25 | |
| export function pagoAux25(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 25; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 26 | |
| export function pagoAux26(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 26; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 27 | |
| export function pagoAux27(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 27; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 28 | |
| export function pagoAux28(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 28; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 29 | |
| export function pagoAux29(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 29; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 30 | |
| export function pagoAux30(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 30; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 31 | |
| export function pagoAux31(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 31; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 32 | |
| export function pagoAux32(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 32; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 33 | |
| export function pagoAux33(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 33; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 34 | |
| export function pagoAux34(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 34; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 35 | |
| export function pagoAux35(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 35; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 36 | |
| export function pagoAux36(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 36; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 37 | |
| export function pagoAux37(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 37; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 38 | |
| export function pagoAux38(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 38; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // pago auxiliar 39 | |
| export function pagoAux39(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 39; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| `, | |
| 'spec/total-iva.md': '# totalCarrito(lineas, descuento, iva)\nDebe aplicar el IVA al final: totalCarrito([{precio:100,unidades:1}],0,0.21) → 121.', | |
| }, | |
| task: 'totalCarrito() no aplica el IVA al resultado; arréglalo para que lo aplique después del descuento.', | |
| test: m => Math.round(m.totalCarrito([{precio:100,unidades:1}],0,0.21)) === 121 && Math.round(m.totalCarrito([{precio:50,unidades:2}],10,0.1)) === 99, | |
| }, | |
| { | |
| id: 'recorta-pie', | |
| target: 'src/texto.js', | |
| files: { | |
| 'src/texto.js': `// texto auxiliar 0 | |
| export function textoAux0(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 0; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 1 | |
| export function textoAux1(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 1; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 2 | |
| export function textoAux2(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 2; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 3 | |
| export function textoAux3(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 3; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 4 | |
| export function textoAux4(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 4; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 5 | |
| export function textoAux5(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 5; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 6 | |
| export function textoAux6(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 6; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 7 | |
| export function textoAux7(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 7; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 8 | |
| export function textoAux8(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 8; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 9 | |
| export function textoAux9(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 9; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 10 | |
| export function textoAux10(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 10; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 11 | |
| export function textoAux11(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 11; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| export function recortaTitulo(s, max = 30) { | |
| if (s.length <= max) return s; | |
| return s.slice(0, max); | |
| } | |
| export function recortaResumen(s, max = 30) { | |
| if (s.length <= max) return s; | |
| return s.slice(0, max); | |
| } | |
| export function recortaPie(s, max = 30) { | |
| if (s.length <= max) return s; | |
| return s.slice(0, max); // BUG: aquí SÍ hay que poner puntos suspensivos | |
| } | |
| // texto auxiliar 12 | |
| export function textoAux12(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 12; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 13 | |
| export function textoAux13(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 13; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 14 | |
| export function textoAux14(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 14; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 15 | |
| export function textoAux15(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 15; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 16 | |
| export function textoAux16(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 16; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 17 | |
| export function textoAux17(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 17; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 18 | |
| export function textoAux18(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 18; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 19 | |
| export function textoAux19(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 19; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 20 | |
| export function textoAux20(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 20; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 21 | |
| export function textoAux21(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 21; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 22 | |
| export function textoAux22(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 22; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // texto auxiliar 23 | |
| export function textoAux23(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 23; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| `, | |
| 'spec/recorta-pie.md': '# recortaPie(s, max)\nSolo recortaPie debe terminar en «…» cuando recorta. Las otras dos NO cambian.', | |
| }, | |
| task: 'recortaPie() debe añadir «…» al final cuando recorta. recortaTitulo y recortaResumen deben quedarse EXACTAMENTE como están.', | |
| // Lo que mide esta tarea es la DISCRIMINACIÓN entre tres cuerpos idénticos, no | |
| // si el modelo escribe «…» o «...»: las dos son respuestas razonables a la spec. | |
| test: m => { const r = m.recortaPie('a'.repeat(40)); | |
| return r.startsWith('a'.repeat(30)) && /(…|\.\.\.)$/.test(r) | |
| && m.recortaTitulo('a'.repeat(40)) === 'a'.repeat(30) | |
| && m.recortaResumen('a'.repeat(40)) === 'a'.repeat(30); }, | |
| }, | |
| { | |
| id: 'dias-entre', | |
| target: 'src/fecha.js', | |
| files: { | |
| 'src/fecha.js': `// fecha auxiliar 0 | |
| export function fechaAux0(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 0; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 1 | |
| export function fechaAux1(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 1; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 2 | |
| export function fechaAux2(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 2; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 3 | |
| export function fechaAux3(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 3; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 4 | |
| export function fechaAux4(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 4; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 5 | |
| export function fechaAux5(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 5; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 6 | |
| export function fechaAux6(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 6; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 7 | |
| export function fechaAux7(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 7; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 8 | |
| export function fechaAux8(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 8; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 9 | |
| export function fechaAux9(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 9; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 10 | |
| export function fechaAux10(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 10; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 11 | |
| export function fechaAux11(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 11; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 12 | |
| export function fechaAux12(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 12; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 13 | |
| export function fechaAux13(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 13; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 14 | |
| export function fechaAux14(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 14; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| export function diasEntre(a, b) { | |
| const ms = Math.abs(new Date(b) - new Date(a)); | |
| return Math.floor(ms / 86400000) + 1; // BUG: el +1 sobra | |
| } | |
| // fecha auxiliar 15 | |
| export function fechaAux15(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 15; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 16 | |
| export function fechaAux16(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 16; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 17 | |
| export function fechaAux17(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 17; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 18 | |
| export function fechaAux18(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 18; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 19 | |
| export function fechaAux19(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 19; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 20 | |
| export function fechaAux20(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 20; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 21 | |
| export function fechaAux21(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 21; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 22 | |
| export function fechaAux22(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 22; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 23 | |
| export function fechaAux23(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 23; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 24 | |
| export function fechaAux24(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 24; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 25 | |
| export function fechaAux25(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 25; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 26 | |
| export function fechaAux26(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 26; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 27 | |
| export function fechaAux27(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 27; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 28 | |
| export function fechaAux28(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 28; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // fecha auxiliar 29 | |
| export function fechaAux29(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 29; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| `, | |
| 'spec/dias-entre.md': '# diasEntre(a, b)\ndiasEntre("2026-01-01","2026-01-03") → 2. No se suma un día extra.', | |
| }, | |
| task: 'diasEntre() devuelve un día de más; quita ese +1.', | |
| test: m => m.diasEntre('2026-01-01','2026-01-03') === 2 && m.diasEntre('2026-01-01','2026-01-01') === 0, | |
| }, | |
| { | |
| id: 'dos-sitios', | |
| target: 'src/valida.js', | |
| files: { | |
| 'src/valida.js': `// valida auxiliar 0 | |
| export function validaAux0(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 0; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 1 | |
| export function validaAux1(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 1; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 2 | |
| export function validaAux2(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 2; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 3 | |
| export function validaAux3(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 3; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 4 | |
| export function validaAux4(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 4; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 5 | |
| export function validaAux5(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 5; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 6 | |
| export function validaAux6(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 6; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 7 | |
| export function validaAux7(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 7; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 8 | |
| export function validaAux8(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 8; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 9 | |
| export function validaAux9(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 9; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| const MINIMO = 3; | |
| export function validaUsuario(nombre) { | |
| if (nombre.length < MINIMO) return false; // BUG: debe ser <= para exigir MÁS de 3 | |
| return true; | |
| } | |
| export function validaAlias(alias) { | |
| if (alias.length < MINIMO) return false; // BUG: mismo fallo aquí | |
| return true; | |
| } | |
| // valida auxiliar 10 | |
| export function validaAux10(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 10; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 11 | |
| export function validaAux11(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 11; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 12 | |
| export function validaAux12(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 12; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 13 | |
| export function validaAux13(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 13; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 14 | |
| export function validaAux14(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 14; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 15 | |
| export function validaAux15(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 15; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 16 | |
| export function validaAux16(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 16; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 17 | |
| export function validaAux17(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 17; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 18 | |
| export function validaAux18(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 18; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // valida auxiliar 19 | |
| export function validaAux19(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 19; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| `, | |
| 'spec/dos-sitios.md': '# validaUsuario / validaAlias\nAmbas deben exigir MÁS de 3 caracteres: una cadena de 3 es inválida, una de 4 es válida.', | |
| }, | |
| task: 'validaUsuario() y validaAlias() aceptan cadenas de 3 caracteres y no deberían: hay que exigir más de 3 en LAS DOS.', | |
| test: m => m.validaUsuario('abc')===false && m.validaUsuario('abcd')===true && m.validaAlias('abc')===false && m.validaAlias('abcd')===true, | |
| }, | |
| { | |
| id: 'orden-descendente', | |
| target: 'src/informe.js', | |
| files: { | |
| 'src/informe.js': `// informe auxiliar 0 | |
| export function informeAux0(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 0; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 1 | |
| export function informeAux1(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 1; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 2 | |
| export function informeAux2(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 2; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 3 | |
| export function informeAux3(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 3; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 4 | |
| export function informeAux4(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 4; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 5 | |
| export function informeAux5(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 5; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 6 | |
| export function informeAux6(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 6; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 7 | |
| export function informeAux7(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 7; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 8 | |
| export function informeAux8(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 8; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 9 | |
| export function informeAux9(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 9; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 10 | |
| export function informeAux10(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 10; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 11 | |
| export function informeAux11(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 11; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 12 | |
| export function informeAux12(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 12; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 13 | |
| export function informeAux13(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 13; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 14 | |
| export function informeAux14(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 14; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 15 | |
| export function informeAux15(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 15; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 16 | |
| export function informeAux16(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 16; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 17 | |
| export function informeAux17(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 17; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 18 | |
| export function informeAux18(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 18; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 19 | |
| export function informeAux19(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 19; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 20 | |
| export function informeAux20(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 20; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 21 | |
| export function informeAux21(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 21; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 22 | |
| export function informeAux22(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 22; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 23 | |
| export function informeAux23(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 23; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 24 | |
| export function informeAux24(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 24; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 25 | |
| export function informeAux25(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 25; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 26 | |
| export function informeAux26(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 26; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 27 | |
| export function informeAux27(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 27; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 28 | |
| export function informeAux28(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 28; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 29 | |
| export function informeAux29(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 29; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 30 | |
| export function informeAux30(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 30; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 31 | |
| export function informeAux31(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 31; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 32 | |
| export function informeAux32(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 32; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 33 | |
| export function informeAux33(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 33; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 34 | |
| export function informeAux34(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 34; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 35 | |
| export function informeAux35(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 35; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 36 | |
| export function informeAux36(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 36; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 37 | |
| export function informeAux37(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 37; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 38 | |
| export function informeAux38(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 38; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 39 | |
| export function informeAux39(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 39; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 40 | |
| export function informeAux40(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 40; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 41 | |
| export function informeAux41(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 41; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 42 | |
| export function informeAux42(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 42; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 43 | |
| export function informeAux43(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 43; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 44 | |
| export function informeAux44(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 44; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| export function ordenaPorFecha(filas) { | |
| return filas.slice().sort((a, b) => a.fecha - b.fecha); // BUG: debe ser descendente | |
| } | |
| // informe auxiliar 45 | |
| export function informeAux45(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 45; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 46 | |
| export function informeAux46(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 46; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 47 | |
| export function informeAux47(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 47; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 48 | |
| export function informeAux48(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 48; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 49 | |
| export function informeAux49(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 49; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 50 | |
| export function informeAux50(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 50; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 51 | |
| export function informeAux51(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 51; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 52 | |
| export function informeAux52(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 52; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 53 | |
| export function informeAux53(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 53; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 54 | |
| export function informeAux54(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 54; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 55 | |
| export function informeAux55(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 55; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 56 | |
| export function informeAux56(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 56; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 57 | |
| export function informeAux57(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 57; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 58 | |
| export function informeAux58(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 58; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 59 | |
| export function informeAux59(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 59; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 60 | |
| export function informeAux60(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 60; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 61 | |
| export function informeAux61(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 61; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 62 | |
| export function informeAux62(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 62; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 63 | |
| export function informeAux63(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 63; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 64 | |
| export function informeAux64(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 64; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 65 | |
| export function informeAux65(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 65; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 66 | |
| export function informeAux66(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 66; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 67 | |
| export function informeAux67(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 67; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 68 | |
| export function informeAux68(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 68; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 69 | |
| export function informeAux69(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 69; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 70 | |
| export function informeAux70(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 70; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 71 | |
| export function informeAux71(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 71; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 72 | |
| export function informeAux72(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 72; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 73 | |
| export function informeAux73(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 73; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 74 | |
| export function informeAux74(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 74; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 75 | |
| export function informeAux75(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 75; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 76 | |
| export function informeAux76(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 76; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 77 | |
| export function informeAux77(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 77; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 78 | |
| export function informeAux78(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 78; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 79 | |
| export function informeAux79(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 79; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 80 | |
| export function informeAux80(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 80; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 81 | |
| export function informeAux81(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 81; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 82 | |
| export function informeAux82(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 82; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 83 | |
| export function informeAux83(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 83; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| // informe auxiliar 84 | |
| export function informeAux84(valor, opciones = {}) { | |
| const previo = opciones.previo ?? 84; | |
| if (valor == null) return previo; | |
| return valor + previo; | |
| } | |
| `, | |
| 'spec/orden-descendente.md': '# ordenaPorFecha(filas)\nDe más reciente a más antigua.', | |
| }, | |
| task: 'ordenaPorFecha() ordena de más antigua a más reciente; debe ser al revés, la más reciente primero.', | |
| test: m => { const r = m.ordenaPorFecha([{fecha:1},{fecha:3},{fecha:2}]); return r[0].fecha===3 && r[2].fecha===1; }, | |
| }, | |
| ]; | |