مسیرها
/
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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.