Esta es una serie de Post que se enfocarán en el paso a paso para resolver los problemas diarios que plantea el usuario @ydavgonzalez y a la vez enseñar el enfoque de programación .
Matemáticas y Programación Educativa: Resolución de un Problema de Combinatoria
Base Matemática:
El problema planteado se puede resolver utilizando principios de combinatoria, específicamente el principio de multiplicación.
Pasos:
Determinar el número de opciones para cada dígito:
- Centenas: 1-9 (9 opciones)
- Decenas: 0-9 (10 opciones)
- Unidades: 0-9 (10 opciones)
Multiplicar las opciones de cada dígito:
- Opciones totales: 9 × 10 × 10 = 900
Determinar los números con suma de dígitos par:
- La suma de dígitos puede ser 2, 4, 6, 8 o 10.
- Para cada suma, determinar el número de combinaciones posibles:
- Suma 2: 1 opción (1 + 1)
- Suma 4: 3 opciones (1 + 3, 2 + 2, 3 + 1)
- Suma 6: 6 opciones (1 + 5, 2 + 4, 3 + 3, 4 + 2, 5 + 1, 6 + 0)
- Suma 8: 10 opciones (1 + 7, 2 + 6, 3 + 5, 4 + 4, 5 + 3, 6 + 2, 7 + 1, 8 + 0)
- Suma 10: 15 opciones (1 + 9, 2 + 8, 3 + 7, 4 + 6, 5 + 5, 6 + 4, 7 + 3, 8 + 2, 9 + 1, 10 + 0)
Sumar el número de combinaciones para cada suma par:
- Total de combinaciones: 1 + 3 + 6 + 10 + 15 = 35
Restar las combinaciones no válidas:
- Restar las combinaciones que comienzan con 0 (20 combinaciones)
- Combinaciones válidas: 35 - 20 = 15
function countValidNumbers(digits) {
// Opciones para cada dígito
const hundreds = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const tens = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const units = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
// Combinaciones totales
const totalCombinations = hundreds.length * tens.length * units.length;
// Combinaciones válidas
const validCombinations = [];
for (let i = 0; i < hundreds.length; i++) {
for (let j = 0; j < tens.length; j++) {
for (let k = 0; k < units.length; k++) {
const sum = hundreds[i] + tens[j] + units[k];
if (sum % 2 === 0) {
validCombinations.push([hundreds[i], tens[j], units[k]]);
}
}
}
}
// Restar combinaciones no válidas
const invalidCombinations = validCombinations.filter(
combination => combination[0] === 0
);
const finalCount = validCombinations.length - invalidCombinations.length;
console.log("Número de combinaciones válidas:", finalCount);
}
//Ejemplo de uso:
countValidNumbers(3);
// Imprime "Número de combinaciones válidas: 15"