در دهکدهی اسرارآمیز Coinholt، شما پشت پیشخوان نانواییتان ایستادهاید و دستهای تازه از شیرینیها را میچینید. در به صدا در میآید و باز میشود و Denara وارد میشود؛ بازرگانی ماهر که چشمی تیزبین برای کالاهای باکیفیت دارد. پس از صرف غذایی سریع، سکهای درخشان را روی پیشخوان میلغزاند که ارزشی برابر با ۱۰۰ واحد دارد.
لبخند میزنید، سکه را برمیدارید و نگاهی به هزینهی کل غذا میاندازید: ۸۸ واحد. یعنی باید ۱۲ واحد باقی پول پس بدهید.
Denara با انتظار دستش را دراز میکند. «فقط کمترین تعداد سکه را به من بدهید»، با لبخندی میگوید. «کیسهی من از قبل پُر است و نمیخواهم در راه خطر گم شدنشان را بپذیرم.»
میدانید که چند گزینه دارید. «برای باقی پول، Lumis (به ارزش ۱۰ واحد)، Viras (به ارزش ۵ واحد) و Zenth (به ارزش ۲ واحد) در دسترس داریم.»
شما بهسرعت احتمالها را در ذهن خود حساب میکنید:
«بهترین انتخاب دو سکه است: یک Lumis و یک Zenth»، میگویید و باقی پول را به او میدهید.
Denara لبخند میزند و آشکارا تحت تأثیر قرار گرفته است. «مثل همیشه، درست انجامش دادید.»
کمترین تعداد سکه را تعیین کنید که به مشتری داده شود، بهطوری که مجموع ارزش آنها با مقدار درست خرد برابر باشد.
| رجیستر | کاربرد | نوع | توضیح |
|---|---|---|---|
$a0 |
ورودی | عدد صحیح | تعداد سکههای ورودی |
$a1 |
ورودی | عدد صحیح | هدف |
$a2 |
ورودی/خروجی | آدرس | آرایهای از واژههای سکه که قابل بازنویسی است |
$v0 |
خروجی | عدد صحیح | تعداد سکههای خروجی، و 1- اگر ورودی نامعتبر باشد |
$t0-9 |
موقت | هریک | برای ذخیرهسازی موقت استفاده میشود |
در Exercism ثبتنام کنید تا MIPS Assembly را همراه با 70 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.