Αν θέλεις να φτιάξεις κάτι χρησιμοποιώντας ένα Raspberry Pi, πιθανότατα θα χρησιμοποιήσεις αντιστάσεις. Για αυτή την άσκηση, χρειάζεται να ξέρεις μόνο τρία πράγματα για αυτές:
Κάθε αντίσταση έχει μια τιμή αντίστασης.
Οι αντιστάσεις είναι μικρές, τόσο μικρές που αν τύπωνες πάνω τους την τιμή της αντίστασης, θα ήταν δύσκολο να τη διαβάσεις. Για να ξεπεράσουν αυτό το πρόβλημα, οι κατασκευαστές τυπώνουν πάνω στις αντιστάσεις χρωματιστές λωρίδες που δηλώνουν την τιμή της αντίστασής τους.
Κάθε λωρίδα λειτουργεί ως ψηφίο ενός αριθμού. Για παράδειγμα, αν τύπωναν μια λωρίδα brown (τιμή 1) ακολουθούμενη από μια λωρίδα green (τιμή 5), αυτό θα αντιστοιχούσε στον αριθμό 15. Σε αυτή την άσκηση, θα φτιάξεις ένα χρήσιμο πρόγραμμα ώστε να μη χρειάζεται να θυμάσαι τις τιμές των λωρίδων. Το πρόγραμμα θα παίρνει 3 χρώματα ως είσοδο και θα βγάζει τη σωστή τιμή, σε ωμ. Οι χρωματικές λωρίδες κωδικοποιούνται ως εξής:
black: 0
brown: 1
red: 2
orange: 3
yellow: 4
green: 5
blue: 6
violet: 7
grey: 8
white: 9
Στην άσκηση Resistor Color Duo αποκωδικοποίησες τα δύο πρώτα χρώματα.
Για παράδειγμα: το orange-orange έδωσε την κύρια τιμή 33.
Το τρίτο χρώμα δηλώνει πόσα μηδενικά πρέπει να προστεθούν στην κύρια τιμή.
Η κύρια τιμή συν τα μηδενικά μάς δίνει μια τιμή σε ωμ.
Για την άσκηση δεν έχει σημασία τι είναι στην πραγματικότητα τα ωμ.
Για παράδειγμα:
(Αν τα μαθηματικά είναι το φόρτε σου, μπορεί να θέλεις να σκεφτείς τα μηδενικά ως εκθέτες του 10. Αν τα μαθηματικά δεν είναι το φόρτε σου, αρκέσου στα μηδενικά. Είναι ακριβώς το ίδιο πράγμα, απλώς σε απλά λόγια αντί για μαθηματική ορολογία.)
Αυτή η άσκηση αφορά τη μετατροπή των χρωμάτων σε μια ετικέτα:
"... ohms"
Έτσι, μια είσοδος με "orange", "orange", "black" πρέπει να επιστρέφει:
"33 ohms"
Όταν φτάνουμε σε μεγαλύτερες αντιστάσεις, χρησιμοποιείται ένα μετρικό πρόθεμα για να δείξει μεγαλύτερο μέγεθος ωμ, όπως το "kiloohms". Αυτό είναι παρόμοιο με το να λες "2 χιλιόμετρα" αντί για "2000 μέτρα", ή "2 κιλά" για "2000 γραμμάρια".
Για παράδειγμα, μια είσοδος με "orange", "orange", "orange" πρέπει να επιστρέφει:
"33 kiloohms"
Αυτή η άσκηση είναι σχεδιασμένη ως συνέχεια του Resistor Color Duo και βασίζεται σε αυτό.
Αν και μπορείς να λύσεις τις ασκήσεις πρακτικής με όποια σειρά θέλεις, σου προτείνουμε να ακολουθήσεις τη συνιστώμενη σειρά.
Σε αυτή την άσκηση, σου δίνεται σύνταξη για χρώματα που έχει ήδη οριστεί με το πρόθεμα c*, π.χ. c*black.
Στη συνέχεια, πρέπει να ορίσεις σύνταξη που συσχετίζει μια ακολουθία χρωμάτων με μια τιμή αντίστασης μαζί με τη μονάδα του SI, ενδεχομένως με κάποιο δεκαδικό πρόθεμα, σύμφωνα με τις οδηγίες.
Τα χρώματα βρίσκονται μέσα σε *[[ και ]] και χωρίζονται με , , π.χ. *[[c*black, c*yellow, c*violet]].
Αυτή η εργασία πιθανότατα θα απαιτήσει να χρησιμοποιήσεις είτε notations είτε macros. Ίσως θέλεις να συμβουλευτείς μια αναφορά.
Επειδή η νέα σύνταξη επεκτείνεται σε χρόνο μεταγλώττισης, οποιοδήποτε test θα αποτύγχανε να μεταγλωττιστεί αν δεν είχε οριστεί όλη η απαιτούμενη σύνταξη.
Για αυτόν τον λόγο, αντί να στηριζόμαστε στα παραδοσιακά test χρόνου εκτέλεσης, χρησιμοποιούμε το #guard_msgs.
Αυτή η εντολή συγκρίνει το docstring που της δίνεις με ένα μήνυμα που παράγει μια άλλη εντολή, στην περίπτωση αυτή το #eval, και αναφέρει σφάλμα αν διαφέρουν.
Μπορείς να θεωρήσεις την απουσία σφάλματος ως ένα test που περνά.
Αν δουλεύεις τοπικά ή στο διαδικτυακό playground της Lean, θα λαμβάνεις άμεση ανατροφοδότηση για κάθε σφάλμα που αναφέρει το #guard_msgs μέσα από το Lean InfoView.
Η τιμή αντίστασης πρέπει να εμφανίζεται με τη μονάδα Ω (ωμ).
Αυτός ο χαρακτήρας unicode μπορεί να παραχθεί τοπικά ή στο διαδικτυακό playground της Lean με τη συντόμευση \ohm.
Αν δουλεύεις στον διαδικτυακό editor του Exercism, μπορείς άνετα να αντιγράψεις τον χαρακτήρα από τις οδηγίες.
Ο διαδικτυακός test runner δεν υποστηρίζει προς το παρόν την εισαγωγή ολόκληρης της βιβλιοθήκης μεταπρογραμματισμού Lean.
Ενώ μπορείς ελεύθερα να χρησιμοποιήσεις οποιαδήποτε λειτουργία είναι διαθέσιμη στη Lean εξ ορισμού, συμπεριλαμβανομένων εκείνων μέσα στον χώρο ονομάτων Lean, η προσθήκη import Lean ή η εισαγωγή συγκεκριμένων μονάδων από τον χώρο ονομάτων Lean θα κάνουν την υποβολή σου να αποτύχει όταν την υποβάλεις στο Exercism.
Σημείωσε ότι η εισαγωγή της βιβλιοθήκης Lean δεν είναι απαραίτητη για να λύσεις αυτή την άσκηση.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Lean με 100 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.