Percursos
/
Unison
Unison
/
Exercícios
/
Elemento maioritário
Elemento maioritário

Elemento maioritário

Médio

Instruções

A tua tarefa é identificar se há, num saco de rebuçados, uma cor que representa a maioria do saco. 🍬 O elemento maioritário é aquele que ocupa mais de metade do espaço de uma coleção. Dada uma lista de elementos que representam as cores, devolve a cor que constitui a maioria; caso contrário, indica que não foi encontrada nenhuma maioria.

Para uma lista simples, [Red, Red, Blue, Red, Green], o valor devolvido deve ser Red, porque Red aparece 3 vezes numa lista de 5. Mas para uma lista [Red, Red, Blue, Green], não há maioria, apesar de Red ser o elemento mais comum, porque 2/4 não é maior do que metade dos elementos.

Implementação

  • Pontos bónus: consegues generalizar a tua implementação para encontrar o elemento maioritário de qualquer tipo de List?
  • Pontos bónus: a tua implementação tem um bom desempenho se houver muitos elementos diferentes entre os quais escolher ao encontrar a maioria?
  • Podes implementar a função majorityFinder da forma que quiseres, mas fornecemos alguns stubs que usam a ability MyStore. (A ability MyStore é igual à Store da biblioteca padrão, mas aqui demos-lhe um nome ligeiramente diferente para desambiguação.) Vais precisar de implementar o handler runWith se optares por usar esta ability. O runWith devolve tanto o resultado da execução da função que usa a ability MyStore como o estado final da MyStore.
  • Podes ler mais sobre como os handlers de abilities podem acompanhar o estado na documentação dos handlers de abilities.
Editar via GitHub A ligação abre numa nova janela ou separador
Unison Exercism

Estás pronto para começar Elemento maioritário?

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