مسیرها
/
Groovy
Groovy
/
تمرین‌ها
/
شبیه‌ساز ربات
شبیه‌ساز ربات

شبیه‌ساز ربات

آسان

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

یک شبیه‌ساز ربات بنویسید.

مرکز آزمایش یک کارخانه‌ی ربات به برنامه‌ای نیاز دارد که حرکات ربات را بررسی کند.

ربات‌ها سه حرکت ممکن دارند:

  • چرخش به راست
  • چرخش به چپ
  • حرکت به جلو

ربات‌ها روی یک شبکه‌ی بی‌نهایت فرضی قرار می‌گیرند، رو به جهت خاصی (شمال، شرق، جنوب یا غرب)، در مجموعه‌ای از مختصات {x,y}، مثلاً {3,8}، که مختصات به سمت شمال و شرق افزایش می‌یابد.

سپس ربات تعدادی دستور دریافت می‌کند و در این مرحله، مرکز آزمایش موقعیت جدید ربات و جهتی را که رو به آن است بررسی می‌کند.

  • رشته‌ی حروف «RAALAL» یعنی:
    • چرخش به راست
    • دو بار حرکت به جلو
    • چرخش به چپ
    • یک بار حرکت به جلو
    • و باز هم چرخش به چپ
  • فرض کنید رباتی از {7, 3} و رو به شمال شروع می‌کند. در این صورت، اجرای این رشته دستورها باید آن را در {9, 4} و رو به غرب باقی بگذارد.

ویژگی‌ها و فیلدها در Groovy

در این تمرین، ممکن است متوجه شده باشید که قطعه‌کد اولیه getter‌هایی مثل getX() را تعریف می‌کند، اما تست‌ها مقدار را مستقیماً با .x می‌خوانند. این به خاطر نحوه‌ی تعریف ویژگی‌ها در Groovy است. بیایید این موضوع را بشکافیم:

  • یک فیلد عضوی از یک کلاس، اینترفیس یا trait است که برای ذخیره‌ی داده به کار می‌رود.
  • یک ویژگی خصوصیتی قابل مشاهده از بیرون در یک کلاس است.

نکات کلیدی درباره‌ی ویژگی‌ها در Groovy:

  • Groovy به‌طور خودکار برای فیلدهایی که private نیستند getter و setter می‌سازد (یا فقط یک getter، اگر فیلد با final علامت‌گذاری شده باشد).
  • می‌توان با اسم به ویژگی‌ها دسترسی داشت (همان‌طور که در تست این تمرین انجام می‌شود) و getter یا setter به‌صورت شفاف فراخوانی می‌شود.
  • طبق قرارداد، Groovy حتی اگر فیلد پشتیبانی وجود نداشته باشد، ویژگی‌ها را به رسمیت می‌شناسد، به شرطی که getter یا setter وجود داشته باشد.

در این تمرین، ما فقط getterهای لازم را مشخص کرده‌ایم (و طبق توضیحات بالا، در نتیجه ویژگی‌های لازم را) تا پیاده‌سازی درست را الزامی کنیم. خودتان آزادید تصمیم بگیرید کدام فیلدها (و نوعشان) برای راه‌حل شما مناسب‌ترند.

اگر می‌خواهید درباره‌ی فیلدها و ویژگی‌ها بیشتر بدانید، به فصل ۳.۳. فیلدها و ویژگی‌ها در مستندات Groovy مراجعه کنید.


منبع

با الهام از یک پرسش مصاحبه در شرکتی مشهور.
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Groovy Exercism

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

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