משחק איקס עיגול - ניהול פונקציות

היי,

אז ככה, סיימתי את התרגיל.
לא הצלחתי להבין מדוע יש שימוש בפונקציות:

  1. אם הלוח לא מלא ואין ניצחון.
  2. אם הלוח מלא אבל אין ניצחון.

בנוגע לראשונה - הרי אם אנחנו בודקים את כל הצירופים האפשריים ואין נצחון אז בהכרח שאין ניצחון.
וכל עוד ה"סופר צעדים" שנדרשנו להכניס אינו מפסיק את הלולאה מכאן שהלוח אינו מלא וממשיכים לשחק.
הקוד שלי לדעתי בכלל לא מגיע למצב שהוא משתמש בפונקציה הזו.

בנוגע לשניה - אם אין ניצחון וסופר הצעדים הגיע למספר הצעדים התקינים המקסימלים מכאן שהלוח מלא ואין נצחון.
גם פה אני לא חושב שהקוד שלי בכלל הגיע למצב שהוא השתמש בפונקציה הזו, ואם כן סתם הייתה לו כפילות.

בגדול אם לא יהיה את סופר הצעדים אז הפונקציות האלה יהפכו להיות רללונטיות כי אז נצטרך לבדוק אותם שנריץ לולאה, אבל אחרת לא הצלחתי להבין את השימוש בהם.

:slight_smile:

כמו כן, האם יש חיה כזו של להכניס פונקציות לרשימה ואז לזמן אותם משם ?

@Yam @itamaraviv (מתייג למקרה שהפוסט התפספס)
תודה :slight_smile:

אני עדיין בשלבי פתירה של התרגיל, אז התשובה שלי בעירבון מוגבל.
אבל לפי איך שהוא מנוסח, מדובר כאן על בדיקות שצריך לבצע כדי לוודא מהם מצבי הלוח.
זה לא בהכרח אומר שלכל מצב כזה צריכה להיות פונ’ הבודקת אותו, אלא שבמסגרת הקוד שלך תדע להתמודד עם מצבי הלוח השונים ולהחזיר תשובה נכונה לגבי מי “המנצח” ברגע הנוכחי.

זה בטוח צריך להתמודד עם זה
אולם זה הופיע בתתי סעיפים (שחולקו לשורות)
אז הנחתי שמצפים שנעשה פונקציה שבודקת
את זה.

בגדול ברגע שהלולאה עוברת עד הסוף משמע לא היה ניצחון והלוח מלא ואם לא אז אם שהיה ניצחון או שזה עדין תוך כדי משחק.

(: בכל מקרה אחלה תרגיל שברתי עליו את הראש

אני מניח שהשאלה בסוף היא האם הפונ’ check_board שכתבת יודעת לבדה בהינתן לוח שהיא מקבלת כפרמטר להתמודד עם 2 המצבים האלה :

ומחזירה מחרוזת ריקה כתשובה
האם כתבת לכל אחד משניהם פונ’ או לא, זה להבנתי לא החלק הקריטי בשאלה.

עשיתי לשניהם פונקציות

והכנסתי בהתחלה לפונקציה הזו.
אבל זה לא הכרחי לפונקציה הזו כי בגדול גם אם היא תריץ אותן זה סוג של עוד בדיקה מיותרת.

מפה לשם מחקתי אותן ממנה ועדין הכל עובד רגיל עבור כל המצבים.

היי, @itamaraviv כתב את השאלה אז אני משאיר לו לתקן או לשפצר לי את התשובה בזמנו החופשי.

אם זה תלוי בי:

  1. הפונקציות האלו היו יכולות להסתמך על מונה הצעדים (נניח: אם מספר הצעדים קטן מ־9 סימן שהלוח לא מלא)
  2. יש מצב (לא בהכרח, צריך להסתכל על הקוד והשאלה לעומק) שעדיף להסתמך על הלוח בשביל לקבל פתרון גנרי יותר שמתאים לכל סוג לוח ולכל דרישה עתידית שלא תבוא (נניח אם יש וריאציה של המשחק איקס־עיגול שמאפשרת למלא תא פעמיים תחת מצבים מסוימים במשחק, או כל מני מקרים מוזרים אחרים של שינוי דרישות).
  3. יש מצב שפשוט רצו להציק לכם קצת בתרגיל. גם זה לגיטימי.

בהצלחה!

בגדול אם אם אכן היה המצב שאתה מתאר בסעיף 2 אז אכן היה צריך להשתמש בהם בלולאה נגיד כתנאי (אני מניח) מעבר לצעדים אבל כעט להכניס את זה שם עושה לזה בדיקה מיותרת כל סיבוב :slight_smile:

נכון להיום הקוד עובד לי גם בלעדיהם למרות שעשיתי אותן והם בפני עצמם עובדות.

מקסימום אשאיר לאיתמר לבדוק קצת יותר במקרה ומדובר בסעיף 3 שלך :):):slight_smile:

היי,
לא נתבקשת לכתוב את הפונקציות האלה במפורש.

אם אתה מדבר על הסעיף שבו כתוב “כתבו 10 בדיקות” - אז המטרה היא שתכתוב טסטים לפונקציה שכתבת כבר (check_board) - המטרה היא שתכניס אליה 10 מצבים ותראה שהפלט הוא כמצופה, אם כתבת פונקציות אז אני שמח שתרגלת, אבל שים לב שבסעיף היה כתוב שזה למטרת בדיקה:

הפונקציות שהיית חייב לכתוב במסגרת התרגיל הן:

  • check_board
  • make_turn
  • tic_tac_toe

כל השאר זה תוספות שלך :slight_smile:.
איתמר

2 לייקים

מעולה איתמר ! תודה רבה (: