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"