import type { Stage } from "../types" // Equivalences: 1/2 = 2/4 = 3/6, 1/3 = 2/6, 1/4 = 2/8 const equivalencias: { a: string; b: string; result: boolean }[] = [ { a: "1/2", b: "2/4", result: true }, { a: "1/2", b: "3/6", result: true }, { a: "1/3", b: "2/6", result: true }, { a: "1/4", b: "2/8", result: true }, { a: "3/4", b: "6/8", result: true }, { a: "2/3", b: "4/6", result: true }, { a: "1/2", b: "2/3", result: false }, { a: "1/3", b: "1/4", result: false }, { a: "1/4", b: "1/2", result: false }, { a: "3/4", b: "1/2", result: false }, { a: "2/3", b: "3/4", result: false }, { a: "1/2", b: "1/3", result: false }, { a: "2/4", b: "3/6", result: true }, { a: "1/3", b: "3/9", result: true }, { a: "1/4", b: "3/12", result: true }, ] // Sumas y restas del mismo denominador const opFracs: { numA: number; den: number; numB: number; op: "+" | "-"; resultado: string }[] = [ { numA: 1, den: 4, numB: 2, op: "+", resultado: "3/4" }, { numA: 2, den: 5, numB: 1, op: "+", resultado: "3/5" }, { numA: 3, den: 8, numB: 2, op: "+", resultado: "5/8" }, { numA: 1, den: 3, numB: 1, op: "+", resultado: "2/3" }, { numA: 2, den: 7, numB: 3, op: "+", resultado: "5/7" }, { numA: 3, den: 4, numB: 1, op: "-", resultado: "2/4" }, { numA: 4, den: 5, numB: 1, op: "-", resultado: "3/5" }, { numA: 5, den: 8, numB: 2, op: "-", resultado: "3/8" }, { numA: 2, den: 3, numB: 1, op: "-", resultado: "1/3" }, { numA: 6, den: 7, numB: 2, op: "-", resultado: "4/7" }, { numA: 1, den: 6, numB: 2, op: "+", resultado: "3/6" }, { numA: 3, den: 10, numB: 4, op: "+", resultado: "7/10" }, { numA: 7, den: 9, numB: 2, op: "-", resultado: "5/9" }, { numA: 5, den: 6, numB: 1, op: "-", resultado: "4/6" }, { numA: 2, den: 9, numB: 5, op: "+", resultado: "7/9" }, ] const exercises: any[] = [] let idx = 0 // Part 1: equivalence recognition (conciencia) for (const eq of equivalencias) { exercises.push({ id: `seb7-frac-eq-${idx}`, stage: 7, skillCode: `frac-eq-${idx}`, type: "conciencia", prerequisites: idx === 0 ? [] : [exercises[idx - 1].id], content: { instruction: eq.result ? `¿${eq.a} es equivalente a ${eq.b}?` : `¿${eq.a} es equivalente a ${eq.b}?`, audioText: `${eq.a} es equivalente a ${eq.b}?`, emoji: "🥧", options: [ { label: "Verdadero", correct: eq.result, id: `true-${idx}` }, { label: "Falso", correct: !eq.result, id: `false-${idx}` }, ], }, functionalContext: "Reconocer equivalencias entre fracciones con círculos Montessori.", errorType: "confusion-letra", }) idx++ } // Part 2: addition/subtraction (eleccion) for (const op of opFracs) { const wrong1 = `${op.numA + op.numB + 1}/${op.den}` const wrong2 = `${Math.abs(op.numA - op.numB + op.den)}/${op.den}` exercises.push({ id: `seb7-frac-op-${idx}`, stage: 7, skillCode: `frac-op-${idx}`, type: "eleccion", prerequisites: [exercises[idx - 1].id], content: { instruction: `Resolvé: ${op.numA}/${op.den} ${op.op} ${op.numB}/${op.den}`, audioText: `${op.numA} ${op.op === "+" ? "más" : "menos"} ${op.numB}, sobre ${op.den}`, emoji: "🧮", options: [ { label: op.resultado, correct: true, id: `c-${idx}` }, { label: wrong1, correct: false, id: `w1-${idx}` }, { label: wrong2, correct: false, id: `w2-${idx}` }, ].sort(() => Math.random() - 0.5), }, functionalContext: "Sumar y restar fracciones con el mismo denominador usando círculos Montessori.", errorType: "confusion-letra", }) idx++ } const stage: Stage = { id: 7, name: "Fracciones: equivalencias y operaciones", description: "Reconocer fracciones equivalentes y sumar/restar fracciones con el mismo denominador.", exercises, } export default stage