친구인 Eliud는 할머니 Tigist로부터 농장을 물려받았어요. 할머니는 발명가였고, 물건을 지나치게 복잡하게 만드는 경향이 있었어요. 닭장에는 디지털 디스플레이가 있는데, 이 디스플레이는 주울 수 있는 모든 달걀의 위치를 인코딩한 숫자를 보여줘요.
Eliud는 닭장 안에 실제로 달걀이 몇 개 있는지 보여주는 프로그램을 작성해 달라고 부탁해요.
위치 정보 인코딩은 다음과 같이 계산해요:
1, 빈자리면 0을 적어요. _ _ _ _ _ _ _
|E| |E|E| | |E|
_ _ _ _ _ _ _
|1|0|1|1|0|0|1|
89
4
_ _ _ _ _ _ _
| | | |E| | | |
_ _ _ _ _ _ _
|0|0|0|1|0|0|0|
8
1
숫자를 이진수로 나타냈을 때 1인 비트가 몇 개인지 세는 것이 이번 과제예요.
표준 라이브러리에서 제공하는 비트 개수 세기 기능에는 손대지 마세요! 대신 다른 기본 도구를 사용해서 직접 풀어보세요.
위 지침은 모든 언어 트랙에서 일관성을 유지하기 위해 공유 저장소와 동기화되어 있어요. 이 부록은 추가 설명을 제공하거나, Clojure 트랙의 목표에 더 잘 맞도록 필요에 따라 지침을 수정해요.
구현하려는 함수와 비슷한 기능을 하는 기존 내장 함수를 사용하지 않는 것이 중요해요. 그렇게 하면 이 연습 문제가 의도한 학습 가치가 줄어들기 때문이에요.
Clojure에는 숫자의 비트 수를 세는 내장 함수가 없으므로, 구현할 때에는 어떤 Clojure 함수든 사용해도 돼요.
하지만 Java에는 이를 위한 함수가 있어요: bitCount.
Exercism에 가입하고 Clojure 트랙을 개념 12개연습 문제 105개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.