دوست شما Eliud یک مزرعه را از مادربزرگش Tigist به ارث برده است. مادربزرگش مخترع بود و عادت داشت وسایل را به شکلی بیش از حد پیچیده بسازد. مرغدانی یک نمایشگر دیجیتال دارد. این نمایشگر عددی رمزگذاریشده را نشان میدهد که موقعیت همهی تخممرغهایی را که میتوان جمع کرد، مشخص میکند.
Eliud از شما میخواهد برنامهای بنویسید که تعداد واقعی تخممرغهای داخل مرغدانی را نشان دهد.
رمزگذاری اطلاعات موقعیت به این صورت محاسبه میشود:
1 و برای هر مکان خالی یک 0 یادداشت کنید. _ _ _ _ _ _ _
|E| |E|E| | |E|
_ _ _ _ _ _ _
|1|0|1|1|0|0|1|
۸۹
۴
_ _ _ _ _ _ _
| | | |E| | | |
_ _ _ _ _ _ _
|0|0|0|1|0|0|0|
۸
۱
وظیفهی شما این است که تعداد بیتهای ۱ را در نمایش دوییی یک عدد بشمارید.
به سراغ آن قابلیت شمارش بیت که کتابخانهی استانداردتان در اختیارتان میگذارد نروید! در عوض، این یکی را خودتان با ابزارهای پایهی دیگر حل کنید.
دستورالعملهای بالا برای تضمین یکدستی میان همهی مسیرهای زبان، با یک مخزن مشترک همگامسازی شدهاند. این پیوست، در صورت نیاز، توضیح بیشتری میدهد یا دستورالعملها را تغییر میدهد تا با اهداف مسیر Clojure همراستاتر شود.
مهم است که از توابع داخلی موجودی که کارکردی مشابه تابعی دارند که در حال پیادهسازی آن هستید استفاده نکنید. این کار ارزش یادگیری مورد نظر این تمرین را کاهش میدهد.
در Clojure، تابع داخلیای برای شمردن تعداد بیتهای یک عدد وجود ندارد، پس میتوانید در پیادهسازی خود از هر تابع Clojure استفاده کنید.
اما Java برای این کار تابعی دارد: bitCount.