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

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

آسان

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

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

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

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

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

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

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

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

راهنمایی‌ها

برای تکمیل این تمرین، باید نوع داده‌ی Robot را بسازید و توابع زیر را پیاده‌سازی کنید:

  • bearing
  • coordinates
  • mkRobot
  • move

یک اعلان داده‌ی ساختگی و امضاهای نوع از قبل در جای خود قرار دارند، اما این شما هستید که باید توابع را تعریف کنید و یک نوع داده، newtype یا مترادف نوعی بسازید که معنادار باشد.


منبع

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

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

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