يأخذ كاتا الماسة حرفًا كمُدخل، ويُخرجه على شكل ماسة. عند إعطائه حرفًا، يطبع ماسة تبدأ بالحرف '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 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.