FizzBuzz
FizzBuzz הוא משחק ספירה. השחקנים סופרים החל מ-1, אבל מספרים מסוימים מוחלפים במילים: מספר שמתחלק ב-3 אומרים בתור Fizz, מספר שמתחלק ב-5 בתור Buzz, ומספר שמתחלק גם ב-3 וגם ב-5 בתור FizzBuzz. כל מספר אחר אומרים כפי שהוא. חמש עשרה התורות הראשונים הם 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz.
סדר הבדיקות הוא כל העניין. 15 מתחלק ב-3, לכן אם בודקים קודם את 3 ומחזירים מיד "Fizz", לעולם לא מגיעים למקרה של שניהם. בדקו קודם את הכלל המשולב: מספר שמתחלק גם ב-3 וגם ב-5 הוא בדיוק מספר שמתחלק ב-15. לאחר מכן בדקו את 3, ואז את 5, ורק אז החזירו את המספר עצמו.
הגרסה הקלאסית מדפיסה את כל הרצף. כאן עונים עבור מספר אחד בכל פעם: בהינתן n, החזירו את מה ששחקן אומר בתור n. לדוגמה, בתור 9 אומרים "Fizz", בתור 10 אומרים "Buzz" ובתור 11 אומרים "11".
כתבו פונקציה בשם fizzBuzz שמקבלת מספר שלם חיובי n ומחזירה מחרוזת: "FizzBuzz" אם n מתחלק גם ב־3 וגם ב־5, "Fizz" אם הוא מתחלק רק ב־3, "Buzz" אם הוא מתחלק רק ב־5, ואחרת את n כמחרוזת עשרונית (לדוגמה "7").
אילוצים: 1 <= n <= 10^9.
פונקציה
- arg1integer
- מחזירהstring
דוגמאות
- קלט
- arg1 = 15
- פלט
- "FizzBuzz"
- קלט
- arg1 = 7
- פלט
- "7"
+11 בדיקות נסתרות בשליחה
רמזים
פתחו אותם אחד אחד. כל רמז חושף קצת יותר.
אופרטור השארית מציין אם מספר אחד מתחלק במספר אחר:
nמתחלק ב־3 בדיוק כאשר השארית שלnבחלוקה ב־3 היא 0.חשבו על 15. הוא מתחלק ב־3 וב־5. איזו מהבדיקות שלכם צריכה להתבצע ראשונה כדי ש־15 יקבל
"FizzBuzz"ולא"Fizz"?בדוק התחלקות ב־15 תחילה, אחר כך ב־3, ואז ב־5. אם אף אחד מהם לא מתאים, המר את המספר למחרוזת. ודא שההמרה כותבת כל ספרה, כך ש־10^9 יופיע בתור
"1000000000"ולא בסימון מדעי.
הסבר מלא לבעיה הזאת יגיע בקרוב.
בעיות דומות
בעיות שמשתמשות באותם רעיונות. פתרון של שתיים או שלוש מהן מקבע את הדפוס.
Python
def fizzBuzz(n):
# כתבו כאן את הקודמקרה 1
מקרה 2
קלט
arg1 = 15
צפוי
"FizzBuzz"