إذا أردت بناء شيء ما باستخدام Raspberry Pi، فمن المحتمل أنك ستستخدم المقاومات. في هذا التمرين، تحتاج إلى معرفة أمرين عنها:
للتغلب على هذه المشكلة، تطبع الشركات المصنّعة أشرطة مرمّزة بالألوان على المقاومات للدلالة على قيم مقاومتها. ولكل شريط موضع وقيمة عددية.
لأول شريطين في المقاوم نظام ترميز بسيط: كل لون يقابل عددًا واحدًا. على سبيل المثال، لو طبعوا شريطًا باللون brown (قيمته 1) يليه شريط باللون green (قيمته 5)، لكان الناتج العدد 15.
في هذا التمرين ستنشئ برنامجًا مفيدًا حتى لا تحتاج إلى تذكّر قيم الأشرطة. سيأخذ البرنامج أسماء الألوان كمدخلات ويُخرج عددًا من رقمين، حتى لو كانت المدخلات أكثر من لونين!
تُرمَّز ألوان الأشرطة كما يلي:
من المثال أعلاه: يجب أن يُرجع brown-green العدد 15، و يجب أن يُرجع brown-green-violet العدد 15 أيضًا، مع تجاهل اللون الثالث.
عليك أن تنفّذ الدالة
value :: (Color, Color) -> Int
التي تقبل لونين فقط وتُنتج المكوّن العددي لقيمة المقاومة.
إضافة: اختبار الخصائص
هذا التمرين فرصة جيدة لكتابة بعض اختبارات الخصائص. إذا لم تكن قد كتبت أيًّا منها من قبل، فإليك بعض المصادر:
لقد وفّرنا نموذجًا واحدًا لاختبار خصائص بـ QuickCheck في ملف الاختبار.
أمثلة على الخصائص التي يمكن اختبارها:
value (x, y) >= 10 لكل (x, y) حيث x ليست Black
نتيجة استدعاء show على value (x, y) هي السلسلة النصية المعكوسة، أي reverse لما ينتجه استدعاء show على value (y, x).
جميع الألوان لها أسماء فريدة. (إذا اختلف لونان، اختلف اسماهما أيضًا.)
سجّل في Exercism لتتعلّم وتتقن Haskell عبر 107 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.