Parcours
/
Rust
Rust
/
Exercices
/
Découpage de magazine
Découpage de magazine

Découpage de magazine

Exercice d'apprentissage

Introduction

L'API entry de Rust donne une vue sur une entrée unique d'une table associative, qui peut être soit un HashMap, soit un BTreeMap. L'entrée peut être soit occupée, soit vacante, et cette API fournit des méthodes pour en modifier le contenu.

Instructions

Dans cet exercice, tu vas utiliser un HashMap, ainsi que les méthodes de l'entry API, pour résoudre un problème d'algorithme simple.

Étant donné un &[&str] représentant les mots d'un article de magazine, et un &[&str] représentant les mots d'une note que tu souhaites envoyer, peux-tu composer ta note en découpant des mots dans le magazine et en les collant dans une lettre ?

Remarques :

  • Cela implique un découpage et un collage physiques ; le magazine doit contenir au moins autant d'exemplaires de chaque mot que la note en requiert.
  • Les majuscules comptent ; ce n'est pas parce que tu assembles une note à partir des mots d'un magazine que tu es prêt à faire des fautes de grammaire.

Tu commenceras avec la signature de fonction suivante, laissée à l'état d'ébauche :

pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
    todo!()
}

Étant donné l'entrée suivante

let magazine = "two times three is not four".split_whitespace().collect::<Vec<&str>>();
let note = "two times two is four".split_whitespace().collect::<Vec<&str>>();
assert!(!can_construct_note(&magazine, &note));

La fonction renvoie false, car le magazine ne contient qu'une seule occurrence de "two" alors que la note en demande deux.

L'entrée suivante fonctionnera :

let magazine = "Astronomer Amy Mainzer spent hours chatting with Leonardo DiCaprio for Netflix's 'Don't Look Up'".split_whitespace().collect::<Vec<&str>>();
let note = "Amy Mainzer chatting with Leonardo DiCaprio"
    .split_whitespace()
    .collect::<Vec<&str>>();
assert!(can_construct_note(&magazine, &note));

La fonction renvoie true, car le magazine contient tous les mots dont la note a besoin.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Rust Exercism

Prêt à commencer Découpage de magazine ?

Inscris-toi sur Exercism pour apprendre et maîtriser Rust avec 99 exercices, et un vrai mentorat humain, le tout gratuitement.