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

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

متوسط

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

اگر بخواهید چیزی با 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"

اگر ورودی نامعتبر باشد، یک طول خالی برگردانید.

آدرس‌های رزروشده

بافر رشته‌ی اول از بایت‌های 1024 تا 2047 حافظه‌ی خطی استفاده می‌کند. بافر رشته‌ی دوم از بایت‌های 2048 تا 3071 حافظه‌ی خطی استفاده می‌کند. بافر رشته‌ی سوم از بایت‌های 3072 تا 4095 حافظه‌ی خطی استفاده می‌کند.

بخش اول بایت‌های 0 تا 1023 حافظه‌ی خطی آزاد است و می‌توانید از آن استفاده کنید.

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

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

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