לתרגילים אלו מותר לפרסם תשובות בפורומים ומותר לדון עליהם ביניכם.
נשמח לעזור ולענות לשאלות עד פרסום חומרי השבוע הבא.
פלינדרום
כתבו פונקציה שמקבלת מילה ובודקת האם היא פלינדרום. פלינדרום היא מחרוזת שניתן לקרוא אותה מההתחלה לסוף ומהסוף להתחלה, כמו “אמא”, “ילד כותב בתוכ דלי” או “רק פושטק עלוב בולע קטשופ קר”.
דוגמאות לערכים שאמורים להחזיר True
הם: a, aa, מחרוזת ריקה, baba abab, 12321.
דוגמאות לערכים שאמורים להחזיר False
הם: ab, shlomo, 12345.
הרפתקאות אליס בארץ הפלאות
הורידו למחשבכם את הסיפור הרפתקאות אליס בארץ הפלאות.
- מה הוא המספר הגדול ביותר בקובץ? השתמשו גם בהערות של פרויקט גוטנברג לצורך הסעיף הזה, והתייחסו רק למספרים המורכבים מספרות (
2
ולאtwo
). - מה היא המילה הארוכה ביותר בסיפור? ודאו שלא כללתם סימני פיסוק.
- “מילה משוגעת” היא מילה שיש עבורה “מילה תאומה” בסיפור – אותה מילה שכתובה מהסוף להתחלה. מילה משוגעת חייבת להיות בת שני תווים או יותר. לדוגמה: המילה pot היא מילה משוגעת, מכיוון שהיא מופיעה בסיפור, וגם המילה “top” מופיעה בו. החזירו רשימה של tupleים שבה כל המילים המשוגעות בסיפור של אליס, כאשר כל tuple מייצג צמד של מילים משוגעות. דאגו שמילה משוגעת לא תופיע ביותר ממקום אחד ברשימה.
ראשוניים
אם נתחיל לציין ברצף את המספרים הראשוניים – 2, 3, 5, 7, 11, 13 וכן הלאה, נראה ש־13 הוא המספר הראשוני השישי. מי הוא המספר הראשוני ה־10,001?
פוקר
לקלף פוקר יש צורה וערך.
- צורתו יכולה להיות תלתן (C), יהלום (D), לב (H) או עלה שחור (S).
- ערכו של הקלף יכול להיות 1 (אס) עד 9, עשר (T), נסיך (J) מלכה (Q) או מלך (K).
“יד פוקר” או “יד” היא רשימה המורכבת מ־5 קלפים, כל אחת מהן היא מחרוזת בת 2 תווים המכילה את צורתו ואת ערכו של הקלף.
פתרו את הסעיפים הבאים:
- כתבו פונקציה שמקבלת יד פוקר, ומחזירה את דירוג היד.
- כתבו פונקציה שמקבלת שני פרמטרים – יד מספר 1 ויד מספר 2. החזירו את היד המנצחת. התחשבו במצב של תיקו בדירוג היד לפי הכתוב בוויקיפדיה.
- בהינתן 7 קלפים (כמו במשחק Texas Holdem) – בנו את היד החזקה ביותר שניתן להרכיב מ־5 קלפים כלשהם.
- בנו פונקציה שמקבלת שתי רשימות: הראשונה היא רשימת קלפי המשתתפים. כל תא ברשימה זו מייצג משתתף, והוא בעצמו רשימה המורכבת מ־2 איברים: הקלף הראשון של המשתתף והקלף השני של המשתתף. הרשימה השנייה היא 5 קלפים נוספים שמהווים “קופה משותפת”. השתמשו בפונקציה הקודמת שכתבתם כדי להרכיב את היד החזקה ביותר עבור כל משתתף, מתוך 2 הקלפים שברשותו ועוד 5 הקלפים בקופה המשותפת. על היד לכלול 5 קלפים בלבד. מצאו את השחקן שהיד שלו היא החזקה ביותר.
איחוד CSV
כתבו תוכנה לאיחוד קובצי CSV. על התוכנה להיות מסוגלת לקבל שני קובצי CSV, בהם השורה הראשונה היא הכותרת של כל אחת מהעמודות.
בכל אחד מקובצי ה־CSV תהיה עמודה בשם id, לפיה יתבצע המיזוג.
התוכנה תדע לקרוא את הקובץ הראשון והשני, ולהוציא קובץ שלישי, בו נמצאים השורות של הקבצים הראשון והשני, ממוזגים לפי כותרות העמודות.
משמע:
- אם בקובץ הראשון ישנן 5 שורות (כולל שורת הכותרות) ובקובץ השני 6 שורות (כנ"ל), קובץ הפלט יכיל 10 שורות (שורת כותרות, 4 שורות מהקובץ הראשון, 5 שורות מהקובץ השני).
- אם בקובץ הראשון קיימות העמודות id, name ו־address ובקובץ השני קיימות העמודות id, phone ו־mail, הקובץ השלישי יופיעו העמודות id, name, address, phone ו־mail.
- הניחו שבקובצי ה־CSV אין סימנים מיוחדים, אלא רק מספרים, אותיות באנגלית ורווחים.
- במקרה של התנגשות (שורה שמכילה נתונים עם אותו id ושם עמודה זהה בשני הקבצים), העתיקו את הנתון מקובץ לבחירתכם.
- הניחו שאין שתי שורות בעלות id זהה באותו קובץ.
דוגמה לתרגיל ה־CSV
הניחו שהריווחים המוצגים בדוגמאות לא קיימים באמת בקובץ – הם שם כדי לעזור לכם להבין את הדוגמאות.
קובץ 1:
id,a,b,c,d
a ,9,9,9,9
1 ,H,4,5,x
קובץ 2:
id,f,a,e
1, 6,7,8
0 ,b,c,d
c ,b,c,d
קובץ תוצר:
id,a,b,c,d,f,e
a ,9,9,9,9, ,
1, H,4,5,x,6,8
0 ,c, , , ,b,d
c ,c, , , ,b,d