موضوع قبلی

4. اطّلاعاتی برای توسعه‌دهندگان

موضوع بعدی

6. سؤال یا پیشنهادی دارید؟

5. ایده‌هایی برای کاوش

این فقط یک یادآور برای کاوش برخی ایده‌‌ها و احتمالاً افزودن آن‌ها به این آموزش‌هاست:

  • توضیح اصطلاح شگرد‌های جادویی پایتون بر اساس پستی که به انگلیسی در این باره در وبلاگم نوشته‌ام.

  • ساخت تابعی که نقشهٔ محیط ریبرگ را در قالب یک دیکشنری پایتون برگرداند.

  • ایجاد یک شیئ تشخیص دهنده (detector‍‍) که شگردی برای تشخیص گل دارد (کاری که ریبرگ نمی‌تواند انجام دهد). سپس ایجاد نوع (کلاس) جدیدی از ربات‌ها با وارثت از هر دو کلاس:

    class SuperRobot(RobotUsage, Detector):
        pass
    
  • ایجاد محیط فصل برداشت ۱ با ساخت لیستی از ربات‌هایی که هر کدام در یک ردیف هستند و می‌توانند یک ردیف را برداشت کنند.

  • ایجاد محصولات 4b ،4a و 4c با ایجاد ربات‌های کارگر که از ریبرگ دستور می‌گیرند. یعنی، ریبرگ به آن‌ها می‌گوید که چه میوه‌ای باید جمع شود. مانند مورد قبلی هر کارگر مسئول یک ردیف است.

  • بررسی اعمال راه‌حل هزارتو با استفاده از الگوریتم‌های «اوّل عمق» در مقایسه با «اوّل سطح».

  • ایجاد یک محیط که ریبرگ در آن نشانه‌ها را جمع می‌کند و در آن هر نشانه نمایان‌گر یک گردش به چپ به سوی هدف است. گام‌ها را بدون کمک نشانه‌ها باز ترسیم کن. از ابزارهای مختلفی برای این کار استفاده کن مانند: لیست دستور‌های معکوس، دیکشنری‌ها و ... ).

  • ساخت نوعی از محیط بارش باران ۲ را با این پیش‌کد که اجازهٔ تشخیص آب را ندهد.

  • مستندسازی ویژگی ناپدید شدن (disappear) که ریبرگ را از محیط موجود حذف می‌کند.

  • افزدون یک یادداشت برای مدرّس‌ها (در جای مناسبش) با این توضیح که تابع‌های پایه‌ای ضرورتاً شگردهایی هستند که برای اوّلین نمونهٔ ربات در هر محیط مشخّص فراخوان می‌شوند

  • استفاده از کلاس «نقشهٔ جغرافیا» (Cartographer) که شگرد «show()» و ویژگی محیط (world) را دارد. مورد دوم یک دیکشنری پایتون است که شمل اطّلاعاتی دربارهٔ محیط است. یک ایده می‌تواند شروع یک محیط باشد که در آن موقعیّت مبدأ و مقصد تصادفی انتخاب می‌شوند؛ تا بررسی شود آیا ریبرگ مسیرش را تا جای ممکن مستقیم پیدا می‌کند یا نه. این کار نیازمند تغییر در تابع move() است، تا گام‌هایی را که برمی‌دارد را بشمارد؛ و با نتیجهٔ مورد انتظار مقایسه کند. این کار یا می‌تواند با یک شیئ نقشهٔ مستقل انجام شود یا با استفاده از چند وارثتی.

  • بهینه‌سازی با به خاطر سپاری نتایج تابع(Memoization) و تابع‌های آرایه‌گر(decorators).