إذا أردت بناء شيء ما باستخدام Raspberry Pi، فمن المحتمل أنك ستستخدم المقاومات. في هذا التمرين، تحتاج إلى معرفة أمرين عنها:
للتغلب على هذه المشكلة، تطبع الشركات المصنّعة أشرطة مرمّزة بالألوان على المقاومات للدلالة على قيم مقاومتها. ولكل شريط موضع وقيمة عددية.
لأول شريطين في المقاوم نظام ترميز بسيط: كل لون يقابل عددًا واحدًا. على سبيل المثال، لو طبعوا شريطًا باللون brown (قيمته 1) يليه شريط باللون green (قيمته 5)، لكان الناتج العدد 15.
في هذا التمرين ستنشئ برنامجًا مفيدًا حتى لا تحتاج إلى تذكّر قيم الأشرطة. سيأخذ البرنامج أسماء الألوان كمدخلات ويُخرج عددًا من رقمين، حتى لو كانت المدخلات أكثر من لونين!
تُرمَّز ألوان الأشرطة كما يلي:
من المثال أعلاه: يجب أن يُرجع brown-green العدد 15، و يجب أن يُرجع brown-green-violet العدد 15 أيضًا، مع تجاهل اللون الثالث.
هذا التمرين مُقصد به أن يكون تكملة لتمرين Resistor Color وأن يبني عليه.
وعلى الرغم من أنه يمكنك حل تمارين التدريب بأي ترتيب، فإننا نشجعك على اتباع التسلسل المقترح.
في هذا التمرين، تُعطى صياغة للألوان معرّفة مسبقًا باستخدام البادئة c*، مثل c*black.
ثم عليك تعريف صياغة تربط تسلسلًا من الألوان بعدد، وفقًا للتعليمات.
تقع الألوان بين *[[ و ]] وتفصل بينها , ، مثل *[[c*black, c*yellow, c*violet]].
من المرجح أن يتطلب هذا التمرين استخدام التدوينات أو الماكروهات. قد ترغب في الاطلاع على مرجع.
ولأن الصياغة الجديدة تُوسَّع في وقت التصريف، فسيفشل أي اختبار في التصريف ما لم تُعرَّف كل الصياغات المطلوبة.
لهذا السبب، بدلًا من الاعتماد على اختبارات وقت التشغيل التقليدية، نستخدم #guard_msgs.
يقارن هذا الأمر نص توثيق مُعطى مع رسالة يُنشئها أمر آخر، في هذه الحالة #eval، ويُبلّغ عن خطأ إذا اختلفا.
ويمكنك اعتبار غياب الخطأ اختبارًا ناجحًا.
إذا كنت تعمل محليًا أو في ساحة التجربة على الإنترنت الخاصة بـ Lean، فستحصل على تغذية راجعة فورية عن أي خطأ يُبلّغ عنه #guard_msgs عبر Lean InfoView.
لا يدعم مشغّل الاختبارات على الإنترنت حاليًا استيراد مكتبة الميتا-برمجة الكاملة الخاصة بـ Lean.
وبينما لك مطلق الحرية في استخدام أي ميزات متاحة في Lean افتراضيًا، بما في ذلك تلك الموجودة داخل فضاء الأسماء Lean، فإن إضافة import Lean أو استيراد وحدات معيّنة من فضاء الأسماء Lean ستؤدي إلى فشل حلّك عند إرساله إلى Exercism.
لاحظ أن استيراد مكتبة Lean ليس ضروريًا لحل هذا التمرين.