שמתי לב שהרבה אנשים מסתבכים עם הסעיף הזה, אז אכתוב רמז כיצד ניתן להמיר את הפונקציה שניתנה לנו לגנרטור.
ניתן לחלק את הפתרון לכמה צעדים:
הראשון, הוא למצוא את המבנה הרקורסיבי שלפיו יעבוד הגנרטור (ומי שישים לב יראה שהוא בעצם ניתן לנו).
לאחר מכן, צריך לכתוב צריך לחשוב על תנאי הסיום שלנו, מה נרצה לעשות כאשר אנחנו מגיעים לפריטה חוקית, ולסוף הפריטות.
ולאחר מכן כיצד אנחנו ממירים את הרעיון לקוד שתופס את כל הפריטות.
נקודות שכדאי מאוד לשים לב אליהן(אני אומר בעיקר כי אני פספסתי את כולן בהתחלה):
1. ניתן להשלים שורות מתחת לשורה האחרונה וזה כמובן גם דרוש,אחרת הגנרטור פשוט לא יעבוד
2. שימו לב שאנחנו רוצים לזרוק את כל הניסיונות הגרועים שלנו אך אם פשוט נחזור הגנרטור יישא אתו הודעת שגיאה מתאימה. לכן צריך לטפל בזריקה הזו בבליעה או שלא לחזור סתם ככה. כמו כן אנחנו ממש חייבים לטפל בעניין הזה כי כאשר הקריאות הרקורסיביות יזרקו שגיאה בכל מקרה, נצטרך להמשיך כרגיל.
3. כאשר מטבע משתתף בפריטה אנחנו צריכים להוסיף לרשימה שמדפיסים איכשהו, אבל לא מומלץ לגעת בcoins כי נסתבך עם הרקורסיה.
כמו כן לבדיקה מומלץ להשוות את מספר הפריטות שקיבלתם (לא חייבים להדפיס אותם) לתוצאה של הפונקציה שנתנו לכם.
עוד דבר אחד אחרון: אמיר היום בתרגול אמר שזו שאלה קשה, אז הגיוני שנדרשת השקעת זמן דיי גדולה בשאלה. עם זאת, היא לא תהיה ארוכה. הפתרון שלי הוא 11 שורות לפונקציה בכללותה(כולל כל מה שנתנו לנו מראש) וניתן לכתוב גם ב10 לדעתי (ובלי הגבלות השלמת הקוד גם ב9, אבל זה לא רלוונטי)
לכן אין צורך כמובן לכתוב יותר בצורה משמעותית
מקווה שעזרתי :)
אם יש למישהו עוד שאלות לגבי הנקודות שהעליתי או סתם לגבי השאלה, אני חושב שיהיה יעיל לרכז את הדיון לפה במקום מספר אשכולות
דניאל
Hint for the First seif
Summary:
ראיתי שהרבה אנשים "נתקעו" בסעיף הזה אז אכתוב פה רמז לפתרון