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 funcionaSe 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 i32Desafio
FácilCada 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
ndo usuário - 1 <=
n< 1000
Dicas
- Tente começar pelos triângulos pequenos
- Verifique a dica se você estiver travado ;)
nrepresenta 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 i32Experimente 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();
}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
4Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosOperadores de ComparaçãoComparação de Strings7Entrada e Saída Básica
Exibindo no ConsoleLendo a Entrada do UsuárioRevisão - Até 120Revisão - Verdadeiro ou Falso5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 33Variáveis Parte 2
Declaração de TipoConvenções de NomenclaturaInferência de TipoRecapitulação - Inicializar VariáveisConversão de Tipo9Laços
For sobre SériesLaço WhileBreakContinueLaços AninhadosRótulos de LoopLoop InfinitoRecapitulação - Entrada Dinâmica