قطرات المطر

قطرات المطر

سهل

مقدمة

قطرات المطر نسخة أكثر تعقيدًا بقليل من تحدي 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

من الطرق الشائعة لاختبار ما إذا كان عدد يقبل القسمة على عدد آخر دون باقٍ أن تقارن باقي القسمة أو المقياس بالصفر. معظم اللغات توفر عوامل أو دوال لأحد هذين (أو لكليهما).

تلميحات

عليك تنفيذ الدالة 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 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.

تعمّق في قطرات المطر!

استكشف حلولًا تستخدم خطوطًا دالية، وضرب المصفوفات، وحلولًا مبنية على جدول محسوب مسبقًا باستخدام ماكرو، ومنهجًا كائني التوجه، واستخدامًا مبهرًا لكل من Python وTCL، ونسخة للمؤسسات.