Motif de nombres
Fait partie de la section Fondamentaux du Journey Rust de Coddy. Leçon 73 sur 75.
Lorsqu’on crée des motifs comme des pyramides, on a souvent besoin de créer des chaînes contenant des caractères répétés. En Rust, il existe plusieurs façons d’y parvenir, mais voici l’une des méthodes les plus simples :
let str = "a".repeat(10);str contiendra "aaaaaaaaaa"
La méthode repeat() exige spécifiquement un argument de type usize, et non un type entier classique comme i32.
usize est le type entier non signé de Rust de la taille d’un pointeur : sa taille dépend de votre architecture (32 bits sur les systèmes 32 bits, 64 bits sur les systèmes 64 bits).
let count: usize = 5;
let repeated = "x".repeat(count); // Ça fonctionneSi tu as un i32 ou un autre type entier, tu devras le convertir :
let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// Convertir avec 'as usize'Ce code ne compilera pas :
let repeated = "z".repeat(num);
// Erreur : usize attendu, i32 trouvéDéfi
FacileChaque cas de test comporte une entrée : un nombre entier impair.
Ta tâche consiste à afficher une pyramide de n lignes à l’aide de * ; en voici quelques exemples :
Pyramide de 1 ligne
*Pyramide de 5 lignes
*
***
*****Pyramide de 7 lignes
*
***
*****
*******Entrée
- Un entier impair
nfourni par l’utilisateur - 1 <=
n< 1000
Conseils
- Essaie de commencer par les petits triangles
- Consulte l’indice si tu es bloqué(e) ;)
nreprésente le nombre de*sur la rangée du bas
Remarque : En Rust, les fonctions qui traitent la « taille » ou la « longueur » de quelque chose (comme .repeat()) nécessitent un type appelé usize plutôt que i32 ; tu peux considérer usize comme un nombre entier ordinaire qui n’est jamais négatif.
Essayez vous-même
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();
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Entrées/Sorties de base
Afficher dans la consoleLire la saisie utilisateurRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 33Variables - Partie 2
Déclaration de typeConventions de nommageInférence de typeRécapitulatif - Initialiser des variablesConversion de type9Boucles
Boucle For sur une sérieBoucle WhileBreakContinueBoucles imbriquéesÉtiquettes de boucleBoucle infinieRécapitulatif - Entrée dynamique12Bases des tableaux
Déclaration de tableauxTableau comme paramètreAccès aux élémentsModification de tableauxRécapitulatif - Affichage formaté d'un tableau15Opérations sur les chaînes
Méthodes de chaînesMacro format!Conversion de chaînesRécapitulatif - FormatEntraînez-vous par vous-même : Compilateur Rust en ligne