פרטים | הודעה |
---|---|
|
לכל מי ששיחק במפי ויכול לעזור לי באיזה שלב אשמח לקבל עזרה :)
אני תקוע בשלב:
בעיר 6 (יש רקע כחול אם כוכבים כתומים ופחיות ירוקות *להזכיר) השלב האחרון (בצד ימין בסוף הכי למתא מספר 15) יש בשלב מלא חצים כאלה שניכנסים ויוצאים מהם וצריך לאכול כורסונים... אני תקוע שמע איזה שבוע עברתי הכל רק זה נישאר לי ואני לא מצליח.. אשמח לקבל עזרה בבקשה.. :) תודה מראש אחים שלי :) :wink: :lol: |
|
גם אני נתקעתי שם כששיחקתי. כדי לפתור את זה (הרי אתה שם לב שאי אפשר לאכול את כולם), הכנתי תוכנה רקורסיבית שבודקת מה המסלול שאפשר לאכול בו הכי הרבה עד לפסילה, אם אתה מעוניין אני יכול לתת לך גם את הקוד. בכל אופן התוכנה הוציאה פלט כדלקמן:
1: left 2: up 3: up 4: left 5: left 6: up 7: left 8: down 9: down 10: right 11: down 12: left 13: left 14: left 15: up 16: left 17: down 18: right 19: up 20: right 21: up 22: left 23: left 24: up 25: right 26: up 27: right 28: right 29: up 30: right 31: right 32: down 33: down 34: right 35: right 36: up 37: up 38: left 39: down end עשיתי את הפעולות הללו ואכן הן הדרושות לעבירת השלב! :) |
|
הרשה לי לברך אותך, אני מעריך אנשים כמוך.
|
|
Gabriel כתב/ה: הכנתי תוכנה רקורסיבית שבודקת מה המסלול שאפשר לאכול בו הכי הרבה עד לפסילה, אם אתה מעוניין אני יכול לתת לך גם את הקוד. את זה אני חייב לראות :!: אפשר? |
|
|
|
גורדי, אני חושב שלא יצא לך לראות אז הקפצתי כמו שאומרים. :wink:
|
|
תודה :-)
חבל רק שזה כתוב בשפה שאינני מבין, הייתי שמח להבין את המבנה של התוכנה. יש מצב שתתן פה הסבר קצרצר עליה? |
|
יש מצב:
קודם כל קצת על באמפי, בבאמפי צריך לאסוף את המקסימום של "פריטים" מהמסך שניתן. ברגע שאתה מצליח לעשות זאת, מופיע מעין חישוק דרכו אתה צריך לעבור על מנת לסיים בהצלחה את השלב. השלב המדובר נראה כך: ![]() ניתן לראות כי באמפי מופיע בריבוע התחתון הימני. החוקים לתזוזתו הם שהוא יכול לעבור רק לפי סימוני החיצים, כלומר אם הוא נמצא במשבצת כלשהי וה"קיר" הימני מצביע כלפי פנים התא, הוא לא יוכל לעבור למשבצת שמימין למשבצת (לפחות לא באופן ישיר). בהתחלה ניסיתי לקחת את כל הפריטים, אולם במהרה גיליתי כי אין הדבר האפשרי. אם כן יש לנסות ולאסוף כמה שיותר מהם. בדקתי מתי באמפי ייתקע, כלומר יגיע למשבצת ממנה כבר לא יוכל לצאת, ומצאתי שתיים כאלה, והן מסומנות בעיגול בתמונה. ההנחה שלי הייתה שאם אני אצליח לאסוף את הכמות המרבית של פריטים שאפשר לאסוף כאשר האחרון מבינם, יהיה, מן הסתם, באחת מהמשבצות האלה, ייפתח במשבצת החישוק המיוחל לסיום השלב. באיזשהו שלב התייאשתי מלנסות ולמצוא את המסלול בעצמי, ולכן ניסיתי לכתוב תוכנה שתבצע זאת. תחילה הכנסתי את נתוני השלב למערך, כלומר את כיווני החיצים בכל מקום, ואת מיקום הפריטים שיש לאכול. לאחר מכן בניתי פונקציה שפעלה כך: פונקצית מסלול (x,y,c,d): {כאשר (x,y) היא הקורדינטה בה באמפי נמצא, c מספר האכילות שלו עד כה, וd- רשימה מקושרת בה נמצאים כל המהלכים עד כה} אם במשבצת (x,y) יש פריט הגדל את c ב-1 *הוסף את (x,y) ל-d אם אתה לא יכול לזוז בשום כיוון אזי שמור מסלול אם אתה יכול לזוז ימינה אזי בצע פונקציית מסלול (x+1,y,c,d) אם אתה יכול לזוז שמאלה אזי בצע פונקציית מסלול (x-1,y,c,d) אם אתה יכול לזוז למעלה אזי בצע פונקציית מסלול (x,y+1,c,d) אם אתה יכול לזוז למטה אזי בצע פונקציית מסלול (x,y-1,c,d) {סוף פונקציה} עכשיו מה שנותר לעשות מחוץ לפונקציה הוא לבדוק את ערכי הC, כלומר האכילות עבור כל מסלול שנשמר, לבחור את המקסימלי, ולהדפיס (לקובץ או על המסך) את פרטי המסלול. אוקיי, עשיתי את זה, ולאחר מכן הרצתי את התוכנית כאשר נתתי לפונקציה את הקורדינטה בה באמפי מתחיל, והתוכנית אכן הדפיסה את המסלול שפירטתי בהודעה הראשונה שלי כאן. ביצעתי את המסלול : ![]() ואכן ניתן לראות בתמונה את באמפי מסיים את השלב. 8) *עריכה |
|
אהה - השלב הארור הזה...
אני זוכר שמישהו מהפורום נתקע בשלב הזה והלכתי לחבר שלי שצייר לי ב"צייר" את הפתרון על תמונת מסך של השלב... הוא עדיין צריך להיות לי על המחשב, איפשהו... יהיה מעניין לראות אם מדובר באותו פתרון. |
|
אני לא חושב שיכול להיות פתרון אחר, שכן אז התוכנה הייתה שומרת גם אותו. אלא אם כן אפשר לסיים את השלב גם אם אוכלים פחות.
בכל אופן, איך חבר שלך סיים את השלב? זה שיגע אותי, ניסיתי כל דבר ופשוט לא הצלחתי. מתישהו חשבתי שאולי אי אפשר לעבור את השלב הזה, מה גם שהסיסמה למסך בו נמצא השלב היא WINNER ... :) |
|
למה המתכנתים עשו שלב כזה חסר פיתרון?
הם הרי לא ציפו שיבוא מישהו ויכתוב תוכנה... |
|
עכשיו אני מבין למה אני זוכר ששמרתי את הקובץ כWINNER.GIF...
בכל מקרה - כפי שציינתי, ניתן לפתור את השלב גם בלי תוכנה, אך ידידי היקר מעיד שהדבר עלה לו בבריאותו ושפיותו :-) |
|
ולמה עשו שלב כזה?
|
|
מצטער שאני מקפיץ את ההודעה...
ויותר מכך, מצטער שאני מזלזל... אבל אין מצב שאתה כתבת את זה לבד בעצמך!!! (אבל אם בכל זאת אולי כן כתבת... אז אני צריך כמה שיעורים ב C++ :)) למה הרמה שלי לא משתווה בכלל למה שיש פה... ואני תוכניתן בממר"ם (סליחה על ההתנשאות) |
|
לא יותר מרקורסיה פשוטה.
|
|
מה ההיפך ממתנשא ?
אבל ממר"ם לא שווים כלום. |
|
טוב... זה לא מתאים ממש לפורום הזה.. (נוכל להתווכח שעות באייסיק..)
אבל אתה ממש טועה :] |