Η φίλη σου η 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 bit στη δυαδική αναπαράσταση ενός αριθμού.
Μην αγγίξεις αυτή τη λειτουργικότητα μέτρησης bit που σου παρέχει η τυπική βιβλιοθήκη σου! Λύσε το μόνος σου χρησιμοποιώντας άλλα βασικά εργαλεία.
Οι παραπάνω οδηγίες είναι συγχρονισμένες με ένα κοινόχρηστο αποθετήριο, ώστε να διασφαλίζεται η συνέπεια σε όλα τα track των γλωσσών. Αυτό το παράρτημα παρέχει πρόσθετες διευκρινίσεις ή τροποποιεί τις οδηγίες όπως χρειάζεται, ώστε να ευθυγραμμίζονται καλύτερα με τους στόχους του track της Clojure.
Είναι σημαντικό να μη χρησιμοποιήσεις υπάρχουσες ενσωματωμένες συναρτήσεις με παρόμοια λειτουργικότητα με τη συνάρτηση που υλοποιείς, γιατί κάτι τέτοιο θα μείωνε την επιδιωκόμενη μαθησιακή αξία της άσκησης.
Στην Clojure δεν υπάρχει ενσωματωμένη συνάρτηση για να μετρήσεις τον αριθμό των bit σε έναν αριθμό, οπότε μπορείς να χρησιμοποιήσεις οποιαδήποτε συνάρτηση της Clojure στην υλοποίησή σου.
Ωστόσο, η Java περιλαμβάνει μια συνάρτηση για αυτόν τον σκοπό: bitCount.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Clojure με 12 έννοιες105 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.