Resolviendo el reto /Solving Challenge

Words
376
Reading
2 min
Listen
Play
2y

This is a series of posts that will focus on solving the daily problems posed by the user ydavgonzalez@ydavgonzalez step by step and we will also teach the programming approach.

versión español

Enlace al reto:

## Educational Math and Programming: Solving a Combinatorics Problem

Mathematical Foundation:

The given problem can be solved using principles of combinatorics, specifically the multiplication principle.

Steps:

  1. Determine the number of choices for each digit:

    • Hundreds: 1-9 (9 choices)
    • Tens: 0-9 (10 choices)
    • Units: 0-9 (10 choices)
  2. Multiply the choices for each digit:

    • Total choices: 9 × 10 × 10 = 900
  3. Determine the numbers with even sum of digits:

    • The digit sum can be 2, 4, 6, 8, or 10.
    • For each sum, determine the number of possible combinations:
      • Sum 2: 1 choice (1 + 1)
      • Sum 4: 3 choices (1 + 3, 2 + 2, 3 + 1)
      • Sum 6: 6 choices (1 + 5, 2 + 4, 3 + 3, 4 + 2, 5 + 1, 6 + 0)
      • Sum 8: 10 choices (1 + 7, 2 + 6, 3 + 5, 4 + 4, 5 + 3, 6 + 2, 7 + 1, 8 + 0)
      • Sum 10: 15 choices (1 + 9, 2 + 8, 3 + 7, 4 + 6, 5 + 5, 6 + 4, 7 + 3, 8 + 2, 9 + 1, 10 + 0)
  4. Sum the number of combinations for each even sum:

    • Total combinations: 1 + 3 + 6 + 10 + 15 = 35
  5. Subtract invalid combinations:

    • Subtract combinations that start with 0 (20 combinations)
    • Valid combinations: 35 - 20 = 15

JavaScript Solution:function countValidNumbers(digits) {
// Choices for each digit
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];

// Total combinations
const totalCombinations = hundreds.length * tens.length * units.length;

// Valid combinations
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]]);
            }
        }
    }
}

// Subtract invalid combinations
const invalidCombinations = validCombinations.filter(
    combination => combination[0] === 0
);
const finalCount = validCombinations.length - invalidCombinations.length;
console.log("Number of valid combinations:", finalCount);

}
Usage Example:countValidNumbers(3); // Prints "Number of valid combinations: 15"

Resolviendo el reto /Solving Challenge | Ecency