פיזבז לביזבז

פרק 0 – מבוא

מסתובבת לה אגדה אודות חידה מתעתעת, אשר מכשילה פעם אחר פעם מתכנתים מתחילים ומתקדמים בראיונות עבודה. לחידה קוראים "פיזבז" (FizzBuzz).

הרעיון פשוט. קצת כמו במשחק "שבע בום", מתחילים לספור. כאשר מגיעים למספר שמתחלק ב-3 (בלי שארית, קרציות), כותבים "פיז", כאשר מגיעים לכזה שמתחלק ב-5 כותבים "בז". וכשמגיעים למספר שמתחלק גם ב-3 וגם ב-5 (רגע, יש כזה?) כותבים "פיז בז". נשמע פשוט? זה בגלל שזה באמת פשוט.

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

בואו נעצור שניה אחת להתעכב על טעות נפוצה. מתכנתת תמימה (או לחוצה) עלולה לכתוב את הקוד טיפה שונה. ככה:

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

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

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

יש לבעיה הזאת פתרון טריוויאלי שהוא מה שנקרא בעברית "גוד אינאף".

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

אבל "גוד אינאף" זה לחלשים. אנחנו נסתכל על הדברים מעוד זוויות. נגלה דברים חדשים. נתקוף את הבעיה מכל מיני כיוונים ונהפוך את הקוד לטוב יותר. נהפוך אתכם לטובים יותר! במאמר הבא…

כתיבת תגובה