مسیرها
/
Java
Java
/
تمرین‌ها
/
موش‌های هزارتو
موش‌های هزارتو

موش‌های هزارتو

دشوار

مقدمه

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

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

وظیفه‌ی شما این است که برای میکی و مینروا «ماز کامل» بسازید؛ یعنی مازهایی که فقط یک راه‌حل دارند و هیچ بخش جداافتاده‌ای ندارند. آنچه باید بدانید این است:

  • ماز شکل مستطیلی دارد و در ابتدا و انتها یک دهانه دارد.
  • ماز اتاق‌ها و راهروهایی دارد که با زاویه‌ی راست یکدیگر را قطع می‌کنند.
  • برنامه باید دو پارامتر بپذیرد: تعداد سطرها و تعداد ستون‌ها. اندازه‌ی ماز باید بین ۵ و ۱۰۰ خانه باشد.
  • مازی که x ستون عرض و y سطر ارتفاع دارد، باید 2x + 1 کاراکتر عرض و 2y + 1 کاراکتر ارتفاع داشته باشد.
  • اگر بذری داده نشود، یک ماز تصادفی بسازید. اگر بذر یکسانی چند بار داده شود، ماز حاصل هر بار یکسان خواهد بود.
  • برای رسم دیوارها از کاراکترهای کادرکشی و برای دهانه‌ی ورودی در سمت چپ و خروجی در سمت راست از نماد پیکان (⇨) استفاده کنید.

وقت آن رسیده که برای این موش‌های ماجراجو چند ماز کامل بسازید!

نمونه‌ها

  1. یک ماز کوچک مربعی ۵×۵ خانه (یا ۱۱×۱۱ کاراکتر)

    ┌───────┬─┐
    │       │ │
    │ ┌─┬── │ │
    │ │ │   │ ⇨
    │ │ │ ──┤ │
    ⇨ │ │   │ │
    ┌─┤ └── │ │
    │ │     │ │
    │ │ ────┘ │
    │         │
    └─────────┘
    
  2. یک ماز مستطیلی ۶×۱۸ خانه

    ┌───────────┬─────────┬───────────┬─┐
    │           │         │           │ │
    │ ┌───────┐ │ ┌─┐ ──┐ └───┐ ┌───┐ │ │
    │ │       │ │ │ │   │     │ │   │   ⇨
    │ └─┐ ┌─┐ │ │ │ ├── ├───┐ │ │ ──┼── │
    │   │ │ │   │   │   │   │ │ │   │   │
    └── │ │ ├───┴───┤ ┌─┘ ┌─┘ │ ├── │ ──┤
    ⇨   │   │       │ │   │   │ │   │   │
    ┌─┬─┴─┐ └─┐ ┌─┐ │ └─┐ │ ┌─┘ │ ──┴─┐ │
    │ │   │   │ │ │ │   │   │   │     │ │
    │ │ │ └── │ │ │ └── │ ──┘ ┌─┘ ──┐ │ │
    │   │       │       │     │     │   │
    └───┴───────┴───────┴─────┴─────┴───┘
    
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Java Exercism

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

در Exercism ثبت‌نام کنید تا Java را همراه با 26 مفهوم158 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.