Patrones numéricos
Parte de la sección Fundamentals 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 lograr esto, pero aquí tienes uno de los métodos más directos:
let str = "a".repeat(10);str contendrá "aaaaaaaaaa"
El método repeat() requiere específicamente un argumento usize, no un tipo de entero regular como i32.
usize es el tipo de entero sin signo de Rust con el tamaño de un puntero; su tamaño depende de tu 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 de entero, necesitarás convertirlo:
let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// Convertir con 'as usize'Esto no 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 n - pyramid usando *, aquí tienes algunos ejemplos:
1 - pyramid
*5 - pyramid
*
***
*****7 - pyramid
*
***
*****
*******Entrada
- un entero impar
ndel usuario - 1 <=
n< 1000
Consejos
- Intenta comenzar con los triángulos pequeños
- Revisa la pista si te quedas atascado ;)
nrepresenta el número de*en la fila inferior
Nota: En Rust, las funciones que manejan el "tamaño" o la "longitud" de algo (como .repeat()) requieren un tipo llamado usize en lugar de i32; puedes tratar a usize como un número entero normal que nunca es negativo.
Hoja de referencia
Para crear cadenas con caracteres repetidos en Rust, utiliza el método repeat():
let str = "a".repeat(10);Esto crea "aaaaaaaaaa" (10 repeticiones de "a").
El método repeat() solo acepta usize (entero sin signo del tamaño de un puntero), no i32 u otros tipos de enteros.
let count: usize = 5;
let repeated = "x".repeat(count); // Works
let num: i32 = 7;
let repeated = "y".repeat(num as usize); // Works
let repeated = "z".repeat(num); // Error: expected usize, found i32Prué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 Fundamentals
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ámica