Menu
Coddy logo textTech

Bucle anidado

Parte de la sección Fundamentals del Journey de Rust de Coddy — lección 41 de 75.

Un bucle anidado es simplemente un bucle dentro de otro bucle. El bucle interno completará todas sus iteraciones por cada iteración individual del bucle externo. Una buena analogía para esto es un reloj: por cada hora (bucle externo), el minutero (bucle interno) debe completar su ciclo completo de 60 minutos.

Ejemplo de un bucle anidado:

for x in 0..2 {
    for y in 0..2 {
        println!("{} {}", x, y);
    }
}
// Esto producirá:
// 0 0
// 0 1
// 1 0
// 1 1

El bucle externo (x) se ejecuta dos veces, y por cada una de esas veces, el bucle interno (y) se ejecuta dos veces.

challenge icon

Desafío

Principiante

Escribe un programa que encuentre todas las ternas de números que sumen n utilizando números del 1 al n - 1. El programa debe mostrar todas las combinaciones posibles donde el primer número sea menor o igual que el segundo número, y el segundo número sea menor o igual que el tercer número (es decir, en orden no decreciente). Esto asegura que no tengamos ternas duplicadas como "1 2 7" y "2 1 7", que representan el mismo conjunto de números.

Por ejemplo, si n = 10, la salida debería ser:

1 1 8
1 2 7
1 3 6
1 4 5
2 2 6
2 3 5
2 4 4
3 3 4

Porque:

1 + 1 + 8 = 10
1 + 2 + 7 = 10
1 + 3 + 6 = 10
1 + 4 + 5 = 10
2 + 2 + 6 = 10
2 + 3 + 5 = 10
2 + 4 + 4 = 10
3 + 3 + 4 = 10

Orden de impresión: Las ternas deben imprimirse en orden ascendente. El primer número debe iterar de menor a mayor, y para cada primer número, el segundo número debe iterar desde el primer número hasta el valor máximo válido, asegurando que a ≤ b ≤ c.

Hoja de referencia

Un bucle anidado es un bucle dentro de otro bucle. El bucle interno completa todas sus iteraciones por cada iteración individual del bucle externo.

Estructura básica de un bucle anidado:

for x in 0..2 {
    for y in 0..2 {
        println!("{} {}", x, y);
    }
}
// Salida:
// 0 0
// 0 1
// 1 0
// 1 1

El bucle externo se ejecuta completamente y, por cada iteración del bucle externo, el bucle interno ejecuta su ciclo completo.

Pruébalo tú mismo

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let n: i32 = input.trim().parse().unwrap();
    // Escribe tu código a continuación

}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentals