المسارات
/
Haskell
Haskell
/
التمارين
/
ثنائي ألوان المقاومة
ثنائي ألوان المقاومة

ثنائي ألوان المقاومة

سهل

التعليمات

إذا أردت بناء شيء ما باستخدام Raspberry Pi، فمن المحتمل أنك ستستخدم المقاومات. في هذا التمرين، تحتاج إلى معرفة أمرين عنها:

  • لكل مقاوم قيمة مقاومة.
  • المقاومات صغيرة، بل صغيرة جدًا لدرجة أنه لو طُبعت قيمة المقاومة عليها، لصعُبت قراءتها.

للتغلب على هذه المشكلة، تطبع الشركات المصنّعة أشرطة مرمّزة بالألوان على المقاومات للدلالة على قيم مقاومتها. ولكل شريط موضع وقيمة عددية.

لأول شريطين في المقاوم نظام ترميز بسيط: كل لون يقابل عددًا واحدًا. على سبيل المثال، لو طبعوا شريطًا باللون brown (قيمته 1) يليه شريط باللون green (قيمته 5)، لكان الناتج العدد 15.

في هذا التمرين ستنشئ برنامجًا مفيدًا حتى لا تحتاج إلى تذكّر قيم الأشرطة. سيأخذ البرنامج أسماء الألوان كمدخلات ويُخرج عددًا من رقمين، حتى لو كانت المدخلات أكثر من لونين!

تُرمَّز ألوان الأشرطة كما يلي:

  • black: 0
  • brown: 1
  • red: 2
  • orange: 3
  • yellow: 4
  • green: 5
  • blue: 6
  • violet: 7
  • grey: 8
  • white: 9

من المثال أعلاه: يجب أن يُرجع brown-green العدد 15، و يجب أن يُرجع brown-green-violet العدد 15 أيضًا، مع تجاهل اللون الثالث.

تلميحات

عليك أن تنفّذ الدالة

value :: (Color, Color) -> Int

التي تقبل لونين فقط وتُنتج المكوّن العددي لقيمة المقاومة.

إضافة: اختبار الخصائص

هذا التمرين فرصة جيدة لكتابة بعض اختبارات الخصائص. إذا لم تكن قد كتبت أيًّا منها من قبل، فإليك بعض المصادر:

  1. School of Haskell.
  2. Real world Haskell

لقد وفّرنا نموذجًا واحدًا لاختبار خصائص بـ QuickCheck في ملف الاختبار.

أمثلة على الخصائص التي يمكن اختبارها:

  • value (x, y) >= 10 لكل (x, y) حيث x ليست Black

  • نتيجة استدعاء show على value (x, y) هي السلسلة النصية المعكوسة، أي reverse لما ينتجه استدعاء show على value (y, x).

  • جميع الألوان لها أسماء فريدة. (إذا اختلف لونان، اختلف اسماهما أيضًا.)

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Haskell Exercism

مستعد لبدء ثنائي ألوان المقاومة؟

سجّل في Exercism لتتعلّم وتتقن Haskell عبر 107 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.