import type { Stage } from '../types' const numeros2d = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 30, 33, 40, 44, 50] const exercises: any[] = [] for (const n of numeros2d) { const dec = Math.floor(n / 10) const uni = n % 10 const decStr = '🔟'.repeat(dec) const uniStr = '●'.repeat(uni) exercises.push({ id: `num7-componer-${n}`, stage: 7, skillCode: 'valor-posicional', type: 'eleccion', prerequisites: n <= 15 ? ['num6-resta-visual-3-1'] : [`num7-componer-${numeros2d[numeros2d.indexOf(n) - 1]}`], content: { instruction: `${dec} decenas + ${uni} unidades = ?`, text: `${dec}×10 + ${uni}×1 = ?`, audioText: `${n}: ${dec} decenas y ${uni} unidades`, options: [ ...Array.from({ length: 4 }, (_, i) => n - 2 + i + (i >= 2 ? 2 : 0)) .filter(j => j >= 10 && j <= 55 && j !== n) .slice(0, 2) .map(j => ({ label: String(j), correct: false, id: String(j) })), { label: String(n), correct: true, id: String(n) }, ].sort(() => Math.random() - 0.5), emoji: decStr, }, functionalContext: 'Componer números de 2 dígitos en decenas y unidades.', errorType: 'confusion-letra', }) } // Write the number of tens and units for (const n of [15, 23, 30, 47, 50]) { const dec = Math.floor(n / 10) const uni = n % 10 exercises.push({ id: `num7-descomponer-${n}`, stage: 7, skillCode: 'valor-posicional', type: 'conciencia', prerequisites: [`num7-componer-${n}`], content: { instruction: `¿Cuántas decenas y unidades tiene ${n}?`, text: `${n} = ? decenas + ? unidades`, audioText: `${n} tiene ${dec} decenas y ${uni} unidades`, options: [ { label: `${dec} dec, ${uni} uni`, correct: true, id: `d${dec}u${uni}` }, { label: `${uni} dec, ${dec} uni`, correct: false, id: `d${uni}u${dec}` }, { label: `${dec + 1} dec, ${Math.max(0, uni - 1)} uni`, correct: false, id: `d${dec + 1}u${Math.max(0, uni - 1)}` }, ], emoji: '🔟', }, functionalContext: 'Descomponer números en decenas y unidades.', errorType: 'inversion-letra', }) } // Compare 2-digit numbers const comparaciones = [ { a: 15, b: 20 }, { a: 23, b: 18 }, { a: 30, b: 25 }, { a: 42, b: 39 }, { a: 50, b: 49 }, ] for (const { a, b } of comparaciones) { const mayor = a > b ? a : b const menor = a < b ? a : b exercises.push({ id: `num7-comparar-${a}-${b}`, stage: 7, skillCode: 'comparacion-2d', type: 'eleccion', prerequisites: [`num7-descomponer-${mayor}`], content: { instruction: `¿Cuál número es más grande?`, text: `${a} vs ${b}`, audioText: `¿Cuál es más grande?`, options: [ { label: String(a), correct: a === mayor, id: String(a) }, { label: String(b), correct: b === mayor, id: String(b) }, ], emoji: '📏', }, functionalContext: 'Comparar números de 2 dígitos.', errorType: 'confusion-letra', }) } const stage: Stage = { id: 7, name: 'Decenas y unidades', description: 'Componer y descomponer números de 2 dígitos en decenas y unidades. Comparar números.', exercises, } export default stage