Padrão Numérico
Parte da seção Fundamentos 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, há várias maneiras de fazer isso, mas aqui está um dos métodos mais simples:
let str = "a".repeat(10);str conterá "aaaaaaaaaa"
O método repeat() exige especificamente um argumento usize, não um tipo 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, precisará convertê-lo:
let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// Converta com 'as usize'Isto não será compilado:
let repeated = "z".repeat(num);
// Erro: esperado usize, encontrado i32Desafio
FácilCada caso de teste tem uma entrada: um número inteiro ímpar.
Sua tarefa é imprimir uma pirâmide de n usando *. Veja alguns exemplos:
Pirâmide de 1
*Pirâmide de 5
*
***
*****Pirâmide de 7
*
***
*****
*******Entrada
- Um número inteiro ímpar
ninformado pelo usuário - 1 <=
n< 1000
Dicas
- Tente começar pelos triângulos pequenos
- Consulte a dica se você ficar em dúvida ;)
nrepresenta o número de*na linha de baixo
Observação: Em Rust, funções que lidam com o "tamanho" ou o "comprimento" de algo (como .repeat()) exigem um tipo chamado usize em vez de i32; você pode tratar usize como um número inteiro comum que nunca é negativo.
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();
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
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âmicaPratique por conta própria: Compilador de Rust online