Το kata diamond παίρνει ως είσοδο ένα γράμμα και το εμφανίζει σε σχήμα διαμαντιού. Δεδομένου ενός γράμματος, εκτυπώνει ένα διαμάντι που ξεκινά με το 'A', με το γράμμα που δίνεται στο φαρδύτερο σημείο.
Στα παρακάτω παραδείγματα, τα κενά σημειώνονται με τον χαρακτήρα ·.
Διαμάντι για το γράμμα 'A':
A
Διαμάντι για το γράμμα 'C':
··A··
·B·B·
C···C
·B·B·
··A··
Διαμάντι για το γράμμα 'E':
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····
Χρειάζεται να υλοποιήσεις τη συνάρτηση diamond που τυπώνει έναν ρόμβο ο οποίος
ξεκινά από το A και έχει τον δεδομένο χαρακτήρα στα πλατύτερα σημεία του. Μπορείς
να χρησιμοποιήσεις την υπογραφή που δίνεται αν δεν είσαι σίγουρος για τους τύπους,
αλλά μην την αφήσεις να περιορίσει τη δημιουργικότητά σου:
diamond :: Char -> Maybe [String]
Αυτή η άσκηση δουλεύει με κειμενικά δεδομένα. Για ιστορικούς λόγους, ο τύπος
String της Haskell είναι συνώνυμος με το [Char], μια λίστα χαρακτήρων. Για πιο
αποδοτικό χειρισμό κειμενικών δεδομένων, μπορεί να χρησιμοποιηθεί ο τύπος Text.
Ως προαιρετική επέκταση αυτής της άσκησης, μπορείς να
- text στη λίστα εξαρτήσεών σου στο package.yaml.Data.Text με τον ακόλουθο
τρόπο:import qualified Data.Text as T
import Data.Text (Text)
diamond :: Char -> Maybe [Text] και να αναφέρεσαι
στους συνδυαστές του Data.Text ως π.χ. T.pack,Data.Text,String με Text στο
Diamond.hs:diamond :: Char -> Maybe [Text]
Αυτό το μέρος είναι εντελώς προαιρετικό.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Haskell με 107 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.