ورثت صديقتك 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 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.