A tua amiga Eliud herdou uma quinta da avó, a Tigist. A avó era inventora e tinha tendência para construir as coisas de forma demasiado complicada. O galinheiro tem um ecrã digital que mostra um número codificado, o qual representa as posições de todos os ovos que podem ser recolhidos.
A Eliud pede-te para escreveres um programa que mostre o número real de ovos no galinheiro.
A codificação da informação das posições calcula-se da seguinte forma:
1 os que têm um ovo e com 0 os que estão vazios. _ _ _ _ _ _ _
|E| |E|E| | |E|
_ _ _ _ _ _ _
|1|0|1|1|0|0|1|
89
4
_ _ _ _ _ _ _
| | | |E| | | |
_ _ _ _ _ _ _
|0|0|0|1|0|0|0|
8
1
A tua tarefa é contar o número de bits iguais a 1 na representação binária de um número.
Não mexas nessa funcionalidade de contagem de bits fornecida pela tua biblioteca padrão! Resolve isto sozinho, recorrendo antes a outras ferramentas básicas.
As instruções acima estão sincronizadas com um repositório partilhado, para garantir a consistência entre todos os percursos de linguagem. Este apêndice acrescenta esclarecimentos adicionais ou altera as instruções conforme necessário, para as alinhar melhor com os objetivos do percurso de Clojure.
É importante não usar funções incorporadas existentes com uma funcionalidade semelhante à da função que estás a implementar, pois isso reduziria o valor de aprendizagem pretendido do exercício.
Em Clojure, não existe nenhuma função incorporada para contar o número de bits de um número, por isso podes usar qualquer função de Clojure na tua implementação.
No entanto, o Java inclui uma função para esse efeito: bitCount.
Inscreve-te no Exercism para aprenderes e dominares Clojure com 12 conceitos105 exercícios, e mentoria humana real, tudo grátis.