نمل لانغتون الأبيض

نملة لانغتون (Langton's Ant) تعكس نمطاً بسيطاً من سلوك النمل الذي يظهر سلوكاً معقداً بشكل مدهش. تعيش النملة في شبكة تشبه شبكة GridWorld حيث تكون الخلية إما بيضاء أو سوداء. تتحرك النملة وفق هذه القواعد:
· إذا كانت النملة على خلية بيضاء، تستدير إلى اليمين، وتجعل الخلية سوداء، ثم تتقدم إلى الأمام.
· إذا كانت النملة على خلية سوداء، تستدير إلى اليسار، وتجعل الخلية بيضاء، ثم تتحرك للأمام.
بما أن هذه القواعد بسيطة، فقد تتوقع أن النملة ستفعل شيئاً بسيطاً مثل رسم مربع أو تكرار نقش معين. لكن إذا كانت على شبكة ذات خلايا بيضاء، ستقوم النملة بأكثر من 10,000 حركة فيما يبدو أنه نقشة عشوائية قبل أن تستقر في حلقة دورانية متكررة تتألف من 104 خطوات.
يمكنك قراءة المزيد عن نملة لانغتون على http://en.wikipedia.org/wiki/Langton_ant.
إن صنع نملة لانغتون في GridWorld ليس سهلاً لأننا لا نستطيع التحكم بلون الخلايا. يمكننا استخدام الأزهار كبديل، لوضع علامة على الخلايا، لكننا لا نستطيع وضع زهرة ونملة على نفس الخلية، لذا لا نقدر على تطبيق قواعد النملة تماماً.
بدلاً من ذلك سننشئ ما سأسميه LangtonTermite، التي تستعمل seeFlower للتحقق من وجود زهرة في الخلية التالية، وpickUpFlower لالتقاطها، وthrowFlower لوضع زهرة في الخلية التالية. قد ترغب بقراءة شفرة هذه العمليات حتى تتأكد أنك تفهم عملها.
تمرين 10.3
a. اصنع نسخة من Termite.java سمها LangtonTermite.java ونسخة من TermiteRunner.java باسم LangtonRunner.java. عدلهم بحيث تكون أسماء الأصناف بنفس أسماء الملفات، وبحيث يقوم LangtonRunner بإنشاء LangtonTermite.
b. إذا أنشأت ملفاً باسم LangtonTermite.gif، سيستخدمه GridWorld لتمثيل نملتك. يمكنك تنزيل صور حشرات ممتازة من http://www.cksinfo.com/animals/insec...ngs/index.html. يمكنك استخدام برنامج مثل ImageMagickلتحويلها إلى صيغة GIF.
c. عدل act لإجراء قواعد تشبه قواعد نملة لانغتون. قم بتجارب مستخدماً قواعد مختلفة، وبانعطافات 45 و90 درجة. أوجد القواعد التي تستغرق أكبر عدد من الخطوات قبل أن تبدأ النملة بالدوران في حلقة.
d. لتعطي نملتك مساحة كافية، يمكنك صنع شبكة أكبر أو التحويل إلى UnboundedGrid.
e. أنشئ أكثر من نملة وانظر كيف ستتفاعل فيما بينها.