Menu
Coddy logo textTech

Padrão Numérico

Parte da seção Fundamentals do Journey de Rust da Coddy — lição 73 de 75.

Ao criar padrões como pirâmides, muitas vezes precisamos criar strings com caracteres repetidos. Em Rust, existem várias maneiras de conseguir isso, mas aqui está um dos métodos mais diretos:

let str = "a".repeat(10);

str conterá "aaaaaaaaaa"

O método repeat() requer especificamente um argumento usize, não um tipo de número inteiro comum como i32.

usize é o tipo inteiro sem sinal do tamanho de um ponteiro do Rust - seu tamanho depende da sua arquitetura (32 bits em sistemas de 32 bits, 64 bits em sistemas de 64 bits).

let count: usize = 5;
let repeated = "x".repeat(count);  // Isso funciona

Se você tiver um i32 ou outro tipo inteiro, você precisará convertê-lo:

let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// Converta com 'as usize'

Isso não compilará:

let repeated = "z".repeat(num);
// Erro: esperado usize, encontrado i32
challenge icon

Desafio

Fácil

Cada caso de teste possui uma entrada - um número inteiro ímpar.
Sua tarefa é imprimir uma n - pyramid usando *, aqui estão alguns exemplos:

1 - pyramid

*

5 - pyramid

*
***
*****

7 - pyramid

*
***
*****
*******

Entrada

  • inteiro ímpar n do usuário
  • 1 <= n < 1000

Dicas

  • Tente começar pelos triângulos pequenos
  • Verifique a dica se você estiver travado ;)

n representa o número de  * na linha inferior

Nota: Em Rust, funções que lidam com o "tamanho" ou "comprimento" de algo (como .repeat()) exigem um tipo chamado usize em vez de i32; você pode tratar usize como um número inteiro normal que nunca é negativo.

Folha de consulta

Para criar strings com caracteres repetidos em Rust, use o método repeat():

let str = "a".repeat(10);

Isso cria "aaaaaaaaaa" (10 repetições de "a").

O método repeat() aceita apenas usize (inteiro sem sinal do tamanho de um ponteiro), não i32 ou outros tipos de inteiros.

let count: usize = 5;
let repeated = "x".repeat(count); // Funciona

let num: i32 = 7;
let repeated = "y".repeat(num as usize); // Funciona

let repeated = "z".repeat(num);  // Erro: esperado usize, encontrado i32

Experimente você mesmo

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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentals