تحدي FizzBuzz
مقدمة
FizzBuzz هو تحدٍّ برمجي كلاسيكي يُستخدم غالباً في مقابلات العمل لاختبار مهارات المبرمجين الأساسية. رغم بساطته الظاهرية، فإنه يختبر فهمك للحلقات التكرارية، والشروط، وعامل باقي القسمة.
قواعد التحدي
اطبع الأرقام من 1 إلى 100، لكن:
- إذا كان الرقم يقبل القسمة على 3، اطبع
"Fizz"بدلاً من الرقم - إذا كان الرقم يقبل القسمة على 5، اطبع
"Buzz"بدلاً من الرقم - إذا كان الرقم يقبل القسمة على 3 و 5 معاً، اطبع
"FizzBuzz"بدلاً من الرقم - إذا لم يقبل الرقم القسمة على أيٍّ منهما، اطبع الرقم نفسه
أمثلة توضيحية
| الرقم | يقبل القسمة على 3؟ | يقبل القسمة على 5؟ | الناتج |
|---|---|---|---|
| 1 | لا | لا | 1 |
| 2 | لا | لا | 2 |
| 3 | نعم | لا | Fizz |
| 4 | لا | لا | 4 |
| 5 | لا | نعم | Buzz |
| 6 | نعم | لا | Fizz |
| 10 | لا | نعم | Buzz |
| 15 | نعم | نعم | FizzBuzz |
| 30 | نعم | نعم | FizzBuzz |
المفاهيم المستخدمة
عامل باقي القسمة (%)
لمعرفة إذا كان رقم يقبل القسمة على رقم آخر، نستخدم عامل باقي القسمة %:
التحقق من القابلية للقسمة
ترتيب الشروط مهم!
تحذير مهم: يجب فحص الحالة FizzBuzz (القسمة على 3 و 5 معاً) قبل فحص Fizz أو Buzz منفردين:
استراتيجيات الحل
الطريقة الأولى: استخدام if-elsif-else
الطريقة الثانية: بناء النص تدريجياً
الطريقة الثالثة: استخدام case/when
نصيحة
لاحظ أن الرقم الذي يقبل القسمة على 3 و 5 معاً يقبل القسمة على 15 (لأن 3 × 5 = 15). لذا يمكنك استخدام n % 15 == 0 بدلاً من n % 3 == 0 && n % 5 == 0.
التمرين
حان دورك! اكتب برنامج FizzBuzz الذي:
- يطبع الأرقام من 1 إلى 100
- يطبع "Fizz" للأرقام القابلة للقسمة على 3
- يطبع "Buzz" للأرقام القابلة للقسمة على 5
- يطبع "FizzBuzz" للأرقام القابلة للقسمة على كليهما
ملاحظة: في هذا التمرين، سنختبر الأرقام من 1 إلى 15 فقط للتبسيط.
الناتج المتوقع:
حظاً موفقاً! 🎯