المسارات
/
Java
Java
/
التمارين
/
فئران المتاهة
فئران المتاهة

فئران المتاهة

صعب

مقدمة

تعرّف على Mickey وMinerva، فأرين ذكيين يحبان التنقل عبر المتاهة بحثًا عن الجبن. وهما يستمتعان بالتحديات، لكن بعقليهما الصغيرين كعقل فأر، يفضّلان أن يكون هناك مسار صحيح واحد فقط يؤدي إلى الجبن.

التعليمات

مهمتك هي توليد المتاهات المثالية لميكي ومينيرفا، تلك التي لها حل واحد فقط ولا تحتوي على أقسام معزولة. إليك ما تحتاج إلى معرفته:

  • للمتاهة شكل مستطيل مع فتحة عند البداية وفتحة عند النهاية.
  • تتكوّن المتاهة من غرف وممرات تتقاطع بزوايا قائمة.
  • يجب أن يقبل البرنامج معاملين: الصفوف والأعمدة. ويجب أن يكون حجم المتاهة بين 5 و100 خلية.
  • المتاهة التي يبلغ عرضها x عمودًا وارتفاعها y صفًا يجب أن يكون عرضها 2x + 1 حرفًا وارتفاعها 2y + 1 حرفًا.
  • إذا لم تُقدَّم أي بذرة، فولّد متاهة عشوائية. وإذا قُدّمت البذرة نفسها عدة مرات، فيجب أن تكون المتاهة الناتجة هي نفسها في كل مرة.
  • استخدم أحرف رسم الصناديق لرسم الجدران، ورمز سهم (⇨) للمدخل على اليسار والمخرج على اليمين.

حان الوقت لإنشاء بعض المتاهات المثالية لهذين الفأرين المغامرين!

الأمثلة

  1. متاهة مربعة صغيرة 5x5 خلية (أو 11x11 حرفًا)

    ┌───────┬─┐
    │       │ │
    │ ┌─┬── │ │
    │ │ │   │ ⇨
    │ │ │ ──┤ │
    ⇨ │ │   │ │
    ┌─┤ └── │ │
    │ │     │ │
    │ │ ────┘ │
    │         │
    └─────────┘
    
  2. متاهة مستطيلة 6x18 خلية

    ┌───────────┬─────────┬───────────┬─┐
    │           │         │           │ │
    │ ┌───────┐ │ ┌─┐ ──┐ └───┐ ┌───┐ │ │
    │ │       │ │ │ │   │     │ │   │   ⇨
    │ └─┐ ┌─┐ │ │ │ ├── ├───┐ │ │ ──┼── │
    │   │ │ │   │   │   │   │ │ │   │   │
    └── │ │ ├───┴───┤ ┌─┘ ┌─┘ │ ├── │ ──┤
    ⇨   │   │       │ │   │   │ │   │   │
    ┌─┬─┴─┐ └─┐ ┌─┐ │ └─┐ │ ┌─┘ │ ──┴─┐ │
    │ │   │   │ │ │ │   │   │   │     │ │
    │ │ │ └── │ │ │ └── │ ──┘ ┌─┘ ──┐ │ │
    │   │       │       │     │     │   │
    └───┴───────┴───────┴─────┴─────┴───┘
    
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Java Exercism

مستعد لبدء فئران المتاهة؟

سجّل في Exercism لتتعلّم وتتقن Java عبر 26 مفهومًا158 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.