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

رنگ مقاومت سه‌گانه

متوسط

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

اگر بخواهید چیزی با Raspberry Pi بسازید، احتمالاً از مقاومت‌ها استفاده خواهید کرد. برای این تمرین، فقط باید سه نکته درباره‌ی آن‌ها بدانید:

  • هر مقاومت یک مقدار مقاومت دارد.

  • مقاومت‌ها کوچک‌اند، آن‌قدر کوچک که اگر مقدار مقاومت را رویشان چاپ کنید، خواندنش سخت خواهد بود. برای حل این مشکل، سازندگان نوارهایی با کد رنگی روی مقاومت‌ها چاپ می‌کنند تا مقدار مقاومتشان را نشان دهند.

  • هر نوار مانند یک رقم از یک عدد عمل می‌کند. برای مثال، اگر یک نوار brown (با مقدار ۱) و پس از آن یک نوار green (با مقدار ۵) چاپ می‌کردند، به عدد ۱۵ تبدیل می‌شد. در این تمرین، برنامه‌ی مفیدی می‌سازید تا مجبور نباشید مقدار نوارها را به خاطر بسپارید. برنامه ۳ رنگ را به‌عنوان ورودی می‌گیرد و مقدار درست را برحسب اهم خروجی می‌دهد. نوارهای رنگی به این صورت کدگذاری می‌شوند:

  • black: ۰

  • brown: ۱

  • red: ۲

  • orange: ۳

  • yellow: ۴

  • green: ۵

  • blue: ۶

  • violet: ۷

  • grey: ۸

  • white: ۹

در تمرین «جفت رنگ مقاومت» دو رنگ اول را رمزگشایی کردید. برای نمونه، orange-orange مقدار اصلی 33 را به دست می‌دهد. رنگ سوم نشان می‌دهد که چند صفر باید به مقدار اصلی اضافه شود. مقدار اصلی به‌همراه صفرها، مقداری برحسب اهم به ما می‌دهد. برای این تمرین مهم نیست که اهم در واقع چیست. برای مثال:

  • orange-orange-black یعنی ۳۳ و بدون صفر، که می‌شود ۳۳ اهم.
  • orange-orange-red یعنی ۳۳ و ۲ صفر، که می‌شود ۳۳۰۰ اهم.
  • orange-orange-orange یعنی ۳۳ و ۳ صفر، که می‌شود ۳۳۰۰۰ اهم.

(اگر ریاضی را دوست دارید، می‌توانید صفرها را به‌صورت توان‌های ۱۰ در نظر بگیرید. اگر ریاضی را دوست ندارید، با همان صفرها پیش بروید. واقعاً یکی است؛ فقط به زبان ساده بیان شده، نه با اصطلاحات ریاضی.)

هدف این تمرین تبدیل رنگ‌ها به یک برچسب است:

"... ohms"

پس ورودیِ "orange", "orange", "black" باید این را برگرداند:

"33 ohms"

وقتی به مقاومت‌های بزرگ‌تر می‌رسیم، از یک پیشوند متریک برای نشان دادن بزرگی بیشتر اهم استفاده می‌شود، مثل «kiloohms». این شبیه به این است که به‌جای «۲۰۰۰ متر» بگوییم «۲ کیلومتر»، یا به‌جای «۲۰۰۰ گرم» بگوییم «۲ کیلوگرم».

برای مثال، ورودیِ "orange", "orange", "orange" باید این را برگرداند:

"33 kiloohms"

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

Caution

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

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

این کار احتمالاً شما را ملزم می‌کند از notation یا macro استفاده کنید. بهتر است یک مرجع را ببینید.

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

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

Note

مقدار مقاومت باید با یکای Ω (اهم) نمایش داده شود. این نویسه‌ی یونیکد را می‌توان به‌صورت محلی یا در زمین بازی آنلاین Lean با میانبر \ohm تولید کرد. اگر در ویرایشگر آنلاین Exercism کار می‌کنید، می‌توانید این نویسه را با خیال راحت از دستورالعمل‌ها کپی کنید.

Caution

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

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

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

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

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