احسب نقاط لعبة بولينج.
البولينج لعبة يدحرج فيها اللاعبون كرة ثقيلة لإسقاط قوارير مصفوفة على شكل مثلث. اكتب الكود اللازم لتتبّع نقاط لعبة بولينج.
تتكوّن اللعبة من 10 أشواط. يتكوّن الشوط من رمية كرة واحدة أو رميتين، مع وجود 10 قوارير منتصبة عند بداية الشوط. وهناك ثلاث حالات لاحتساب الشوط.
الشوط المفتوح هو الذي تُسجَّل فيه نتيجة أقل من 10. وفي هذه الحالة تكون نتيجة الشوط هي عدد القوارير المُسقَطة.
السبير هو إسقاط القوارير العشر كلها في الرمية الثانية. والقيمة الإجمالية للسبير هي 10 زائد عدد القوارير المُسقَطة في الرمية التالية.
السترايك هو إسقاط القوارير العشر كلها في الرمية الأولى. والقيمة الإجمالية للسترايك هي 10 زائد عدد القوارير المُسقَطة في الرميتين التاليتين. وإذا تبع السترايكَ سترايكٌ آخر مباشرةً، فلا يمكن تحديد قيمة السترايك الأول حتى تُرمى الكرة مرة أخرى.
إليك مثالًا بثلاثة أشواط:
| الشوط الأول | الشوط الثاني | الشوط الثالث |
|---|---|---|
| X (سترايك) | 5/ (سبير) | 9 0 (شوط مفتوح) |
الشوط الأول يساوي (10 + 5 + 5) = 20
الشوط الثاني يساوي (5 + 5 + 9) = 19
الشوط الثالث يساوي (9 + 0) = 9
وهذا يعني أن المجموع الجاري الحالي هو 48.
الشوط العاشر في اللعبة حالة خاصة. إذا حقّق اللاعب سبيرًا أو سترايكًا، فإنه يحصل على رمية تكميلية واحدة أو رميتين تكميليتين على الترتيب. والرميات التكميلية موجودة لحساب مجموع الشوط العاشر. واحتساب سترايك أو سبير في الرمية التكميلية لا يمنح اللاعب رميات تكميلية إضافية. والقيمة الإجمالية للشوط العاشر هي مجموع عدد القوارير المُسقَطة.
في شوط عاشر من X1/ (سترايك وسبير)، تكون القيمة الإجمالية 20.
وفي شوط عاشر من XXX (ثلاث مرات سترايك)، تكون القيمة الإجمالية 30.
اكتب الكود اللازم لتتبّع نقاط لعبة بولينج. ويجب أن يدعم عمليتين:
roll(pins : int) في كل مرة يدحرج فيها اللاعب كرة.
والوسيط هو عدد القوارير المُسقَطة.score() : int في نهاية اللعبة فقط.
وتُرجع مجموع نقاط تلك اللعبة.سجّل في Exercism لتتعلّم وتتقن TypeScript عبر 108 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.