Αν θέλεις να φτιάξεις κάτι με ένα Raspberry Pi, πιθανότατα θα χρησιμοποιήσεις αντιστάσεις. Για αυτή την άσκηση, χρειάζεται να ξέρεις δύο πράγματα γι' αυτές:
Για να ξεπεράσουν αυτό το πρόβλημα, οι κατασκευαστές τυπώνουν χρωματικά κωδικοποιημένες λωρίδες πάνω στις αντιστάσεις, για να δηλώσουν τις τιμές αντίστασής τους. Κάθε λωρίδα έχει μια θέση και μια αριθμητική τιμή.
Οι δύο πρώτες λωρίδες μιας αντίστασης ακολουθούν ένα απλό σχήμα κωδικοποίησης: κάθε χρώμα αντιστοιχεί σε έναν μόνο αριθμό. Για παράδειγμα, αν τύπωναν μια brown λωρίδα (τιμή 1) ακολουθούμενη από μια green λωρίδα (τιμή 5), αυτό θα αντιστοιχούσε στον αριθμό 15.
Σε αυτή την άσκηση θα φτιάξεις ένα βοηθητικό πρόγραμμα, ώστε να μη χρειάζεται να θυμάσαι τις τιμές των λωρίδων. Το πρόγραμμα θα δέχεται ως είσοδο ονόματα χρωμάτων και θα δίνει ως έξοδο έναν διψήφιο αριθμό, ακόμα κι αν η είσοδος έχει περισσότερα από δύο χρώματα!
Τα χρώματα των λωρίδων κωδικοποιούνται ως εξής:
Από το παραπάνω παράδειγμα: το brown-green πρέπει να επιστρέφει 15, και το brown-green-violet πρέπει να επιστρέφει κι αυτό 15, αγνοώντας το τρίτο χρώμα.
Πρέπει να υλοποιήσεις τη συνάρτηση
value :: (Color, Color) -> Int
που δέχεται μόνο δύο χρώματα και παράγει το αριθμητικό μέρος της αντίστασης του αντιστάτη.
Μπόνους - Δοκιμές ιδιοτήτων:
Αυτή η άσκηση είναι μια καλή ευκαιρία να γράψεις μερικές δοκιμές ιδιοτήτων. Αν δεν έχεις ξαναγράψει καμία, ορίστε μερικοί πόροι:
Έχουμε συμπεριλάβει ένα δείγμα δοκιμής ιδιότητας QuickCheck στο αρχείο δοκιμών.
Παραδείγματα ιδιοτήτων που μπορούν να ελεγχθούν:
value (x, y) >= 10 για κάθε (x, y) όπου το x δεν είναι Black
Η κλήση της show στο value (x, y) παράγει τη συμβολοσειρά που προκύπτει εφαρμόζοντας τη reverse στο αποτέλεσμα της κλήσης της show στο value (y, x).
Όλα τα χρώματα έχουν μοναδικά ονόματα. (Για οποιαδήποτε δύο χρώματα, αν τα χρώματα είναι διαφορετικά, τότε διαφορετικά είναι και τα ονόματά τους.)
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Haskell με 107 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.