Διαδρομές
/
Haskell
Haskell
/
Ασκήσεις
/
Σταγόνες βροχής
Σταγόνες βροχής

Σταγόνες βροχής

Εύκολο

Εισαγωγή

Οι σταγόνες βροχής είναι μια ελαφρώς πιο σύνθετη εκδοχή της πρόκλησης FizzBuzz, μιας κλασικής ερώτησης συνέντευξης.

Οδηγίες

Η αποστολή σου είναι να μετατρέψεις έναν αριθμό στους αντίστοιχους ήχους σταγόνων βροχής.

Αν ένας δεδομένος αριθμός:

  • διαιρείται με το 3, πρόσθεσε το "Pling" στο αποτέλεσμα.
  • διαιρείται με το 5, πρόσθεσε το "Plang" στο αποτέλεσμα.
  • διαιρείται με το 7, πρόσθεσε το "Plong" στο αποτέλεσμα.
  • δε διαιρείται με το 3, το 5 ή το 7, το αποτέλεσμα θα πρέπει να είναι ο αριθμός ως συμβολοσειρά.

Παραδείγματα

  • Το 28 διαιρείται με το 7, αλλά όχι με το 3 ή το 5, οπότε το αποτέλεσμα θα ήταν "Plong".
  • Το 30 διαιρείται με το 3 και το 5, αλλά όχι με το 7, οπότε το αποτέλεσμα θα ήταν "PlingPlang".
  • Το 34 δε διαιρείται με το 3, το 5 ή το 7, οπότε το αποτέλεσμα θα ήταν "34".
Note

Ένας συνηθισμένος τρόπος για να ελέγξεις αν ένας αριθμός διαιρείται ακριβώς με έναν άλλο είναι να συγκρίνεις το υπόλοιπο ή το modulo με το μηδέν. Οι περισσότερες γλώσσες παρέχουν τελεστές ή συναρτήσεις για ένα (ή και τα δύο) από αυτά.

Υποδείξεις

Πρέπει να υλοποιήσεις τη συνάρτηση convert που επιστρέφει τον αριθμό μετατραμμένο σε ήχο σταγόνας βροχής. Μπορείς να χρησιμοποιήσεις την υπογραφή που δίνεται αν δεν είσαι σίγουρος για τους τύπους, αλλά μην την αφήσεις να περιορίσει τη δημιουργικότητά σου:

convert :: Int -> String

Αυτή η άσκηση δουλεύει με κειμενικά δεδομένα. Για ιστορικούς λόγους, ο τύπος String της Haskell είναι συνώνυμος με το [Char], μια λίστα χαρακτήρων. Για πιο αποδοτικό χειρισμό κειμενικών δεδομένων, μπορείς να χρησιμοποιήσεις τον τύπο Text.

Ως προαιρετική επέκταση αυτής της άσκησης, μπορείς να

import qualified Data.Text as T
import           Data.Text (Text)
  • Τώρα μπορείς να γράψεις π.χ. convert :: Int -> Text και να αναφερθείς σε συνδυαστές του Data.Text ως π.χ. T.pack.
  • Κοίταξε την τεκμηρίωση για το Data.Text,
  • Έπειτα μπορείς να αντικαταστήσεις όλες τις εμφανίσεις του String με Text στο Raindrops.hs:
convert :: Int -> Text

Αυτό το μέρος είναι εντελώς προαιρετικό.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Haskell Exercism

Έτοιμος να ξεκινήσεις την άσκηση Σταγόνες βροχής;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Haskell με 107 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.

Αναλυτική ματιά στο Σταγόνες βροχής!

Εξερεύνησε λύσεις που χρησιμοποιούν συναρτησιακά pipelines, πολλαπλασιασμό πινάκων, προϋπολογισμένες λύσεις βασισμένες σε πίνακα με χρήση μακροεντολής, μια αντικειμενοστραφή προσέγγιση, μια εντυπωσιακή αξιοποίηση τόσο της Python όσο και της TCL, καθώς και μια έκδοση για επιχειρήσεις.