Percursos
/
Rust
Rust
/
Exercícios
/
Recorte de revista
Recorte de revista

Recorte de revista

Exercício de aprendizagem

Introdução

A API entry do Rust oferece uma vista para uma única entrada num mapa, que pode ser um HashMap ou um BTreeMap. A entrada pode estar ocupada ou vazia, e a API fornece métodos para modificar o conteúdo da entrada.

Instruções

Neste exercício vais usar um HashMap, juntamente com métodos da API entry, para resolver um problema simples de algoritmo.

Dado &[&str] que representa as palavras de um artigo de revista, e &[&str] que representa as palavras de uma nota que gostarias de enviar, consegues compor a tua nota recortando palavras da revista e colando-as numa carta?

Notas:

  • Isto implica cortar e colar fisicamente; a revista tem de conter, pelo menos, tantas cópias de cada palavra quantas a nota exige.
  • As maiúsculas e minúsculas fazem diferença; só porque estás a juntar uma nota feita com palavras de uma revista, isso não quer dizer que estejas disposto a escrever com erros de gramática.

Vais começar com a seguinte assinatura de função, com o corpo por implementar:

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

Com os seguintes valores de entrada

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));

A função devolve false, porque a revista só contém uma ocorrência de "two" e a nota precisa de duas.

Com os seguintes valores de entrada, a função devolve true:

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));

A função devolve true, porque a revista contém todas as palavras de que a nota precisa.

Editar via GitHub A ligação abre numa nova janela ou separador
Rust Exercism

Estás pronto para começar Recorte de revista?

Inscreve-te no Exercism para aprenderes e dominares Rust com 99 exercícios, e mentoria humana real, tudo grátis.