16-01-2006, 09:14
|
|
|
|
חבר מתאריך: 20.06.03
הודעות: 5,616
|
|
למה לפרטי?
מה עם שאר הגולשים?
קודם כל, עליך לתכנן מבנה נתונים מתאים לייצוג הלוח והרכבים שעליו.
פונקצית הפיתרון למעשה רצה על כל כלי רכב, ומנסה לבצע תזוזה.
עבור כל תזוזה של כלי רכב, היא קוראת לעצמה שוב, כאשר היא מסמנת את התנועה
שבוצעה במבנה הנתונים (כדי שלא תתקע בלולאה שיוצרת רכב שנוסע קדימה
ואחורה בלי סוף).
נוכל לראות את זה כאילו יש לך שתי לוחות, לוח נוכחי ולוח מטרה.
(או לוח נוכחי, ולוח קודם - כלומר, פעולה שאתה לא רוצה לחזור עליה).
תנאי העצירה והחזרה של הפונקציה:
- עבור כל כלי הרכב אין אפשרות לזוז.
- רכב המטרה יצא מהלוח.
שים לב שלמעשה הסיבוך היחיד פה, זו האפשרות של רכבים לנוע לשני צדדים שונים.
ואנו רוצים למנוע מצב של לולאה אינסופית בללכת קדימה ואחורה, אך מצד שני, אנו רוצים
לאפשר את כל סוגי הנסיונות האפשריים.
מכיר אלגורתמים שמבצעים כאלה דברים?
וגרסת פסאודו קוד:
(כיוון: 1 - מייצג למעלה או ימינה, 0 - מייצג למטה או שמאלה)
נתונה פונקציה המקבלת כפרמטרים (לוח משחק, כיוון תזוזה)- לולאה, עבור כל כלי רכב בלוח המשחק עד שרכב המטרה יוצא, או שכל המכוניות תקועות:
- הזז את הרכב בכיוון X.
- עדכן את לוח המשחק במצב החדש.
- קרא לפונקציה (לוח משחק, X).
- קרא לפונקציה (לוח משחק, X-1).
זה אמנם מאוד תאורטי, אבל זה הכיוון (:
נערך לאחרונה ע"י fat fish בתאריך 16-01-2006 בשעה 09:22.
|