مسیرها
/
Lean
Lean
/
تمرین‌ها
/
رنگ مقاومت دوگانه
رنگ مقاومت دوگانه

رنگ مقاومت دوگانه

متوسط

دستورالعمل‌ها

اگر بخواهید با 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 را برگرداند و رنگ سوم را نادیده می‌گیرد.

تعریف نحوه‌ی نگارش

Caution

این تمرین به‌عنوان ادامه‌ی Resistor Color در نظر گرفته شده است و بر آن بنا می‌شود. هرچند می‌توانید تمرین‌های عملی را به هر ترتیبی که می‌خواهید حل کنید، توصیه می‌کنیم ترتیب پیشنهادی را دنبال کنید.

در این تمرین، نحوه‌ی نگارش رنگ‌هایی که از قبل با پیشوند c* تعریف شده‌اند در اختیار شما قرار می‌گیرد، مثلاً c*black. سپس باید بر اساس دستورالعمل‌ها، نحوه‌ی نگارشی تعریف کنید که دنباله‌ای از رنگ‌ها را به یک عدد نسبت می‌دهد. رنگ‌ها میان *[[ و ]] قرار می‌گیرند و با , از هم جدا می‌شوند، مثلاً *[[c*black, c*yellow, c*violet]].

این کار احتمالاً مستلزم آن است که از «نمادگذاری‌ها» یا «ماکروها» استفاده کنید. ممکن است بخواهید یک مرجع را ببینید.

چون نحو جدید در زمان کامپایل گسترش می‌یابد، تا وقتی همه‌ی نحوهای لازم تعریف نشده باشد، هیچ آزمونی کامپایل نخواهد شد. به همین دلیل، به‌جای تکیه بر آزمون‌های متعارف زمان اجرا، از #guard_msgs استفاده می‌کنیم. این دستور، یک داک‌استرینگ داده‌شده را با پیامی که دستور دیگری (در این مورد #eval) تولید می‌کند مقایسه می‌کند و اگر با هم متفاوت باشند، خطایی گزارش می‌دهد. می‌توانید نبود خطا را نشانه‌ی قبولی آزمون بدانید.

اگر به‌صورت محلی یا در زمین بازی آنلاین Lean کار کنید، بازخورد فوری هر خطایی که #guard_msgs گزارش کند را از طریق Lean InfoView دریافت می‌کنید.

Caution

اجراکننده‌ی آنلاین آزمون‌ها در حال حاضر از وارد کردن کل کتابخانه‌ی فرابرنامه‌نویسی Lean پشتیبانی نمی‌کند. هرچند استفاده از هر قابلیتی که Lean به‌طور پیش‌فرض در اختیار می‌گذارد، از جمله قابلیت‌های موجود در فضای نام Lean، آزاد است، ولی افزودن import Lean یا وارد کردن ماژول‌های مشخصی از فضای نام Lean موجب شکست ارسال شما به Exercism می‌شود.

توجه کنید که برای حل این تمرین، وارد کردن کتابخانه‌ی Lean لازم نیست.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Lean Exercism

آماده‌اید رنگ مقاومت دوگانه را شروع کنید؟

در Exercism ثبت‌نام کنید تا Lean را همراه با 100 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.