Menu
Coddy logo textTech

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 funciona

Si 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ó i32
challenge icon

Desafío

Fácil

Cada 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 n del usuario
  • 1 <= n < 1000

Consejos

  • Intenta comenzar con los triángulos pequeños
  • Revisa la pista si te quedas atascado ;)

n representa 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 i32

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();

    
}
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