Patrones numéricos
Parte de la sección Fundamentos del Journey de Rust de Coddy. Lección 73 de 75.
Al crear patrones como pirámides, a menudo necesitamos crear cadenas con caracteres repetidos. En Rust, hay varias formas de lograrlo, pero aquí tienes uno de los métodos más sencillos:
let str = "a".repeat(10);str contendrá "aaaaaaaaaa"
El método repeat() requiere específicamente un argumento usize, no un tipo de entero normal como i32.
usize es el tipo entero sin signo del tamaño de un puntero de Rust; su tamaño depende de la arquitectura (32 bits en sistemas de 32 bits, 64 bits en sistemas de 64 bits).
let count: usize = 5;
let repeated = "x".repeat(count); // Esto funcionaSi tienes un i32 u otro tipo entero, tendrás que convertirlo:
let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// Convierte con 'as usize'Esto no se compilará:
let repeated = "z".repeat(num);
// Error: se esperaba usize, se encontró i32Desafío
FácilCada caso de prueba tiene una entrada: un número entero impar.
Tu tarea es imprimir una pirámide de n usando *; aquí tienes algunos ejemplos:
Pirámide de 1
*Pirámide de 5
*
***
*****Pirámide de 7
*
***
*****
*******Entrada
- Un entero impar
ningresado por el usuario - 1 <=
n< 1000
Consejos
- Prueba empezar con los triángulos pequeños
- Consulta la pista si te quedas atascado ;)
nrepresenta el número de*en la fila inferior
Nota: En Rust, las funciones que se ocupan del "size" o "length" de algo (como .repeat()) requieren un tipo llamado usize en lugar de i32; puedes tratar usize como un número entero normal que nunca es negativo.
Pruébalo tú mismo
use std::io;
fn main() {
let mut input_n = String::new();
io::stdin().read_line(&mut input_n).unwrap();
let n: usize = input_n.trim().parse().unwrap();
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 1
Operadores aritméticosOperador de móduloAtajos aritméticosOperadores de comparaciónComparación de strings5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 33Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaInferencia de tiposResumen - Inicializar variablesConversión de tipos9Bucles
For sobre seriesBucle WhileBreakContinueBucle anidadoEtiquetas de bucleBucle infinitoResumen - Entrada dinámicaPractica por tu cuenta: Compilador de Rust online