DevLab

Bouldinq Oyununun Hesablanması

Orta
arraylogic
3000 ms
256 MB

Bouldinq (bowling) oyunçuların ağır bir topu yuvarladaraq üçbucaq şəklində düzülmüş kegilləri (pins) aşırtmağa çalışdığı bir oyundur. Sizin vəzifəniz verilmiş atışlara əsasən bouldinq oyununun yekun xalını hesablayan proqram yazmaqdır.

Oyun 10 freymdən (mərhələdən) ibarətdir. Bir freym başlanğıcda dayanan 10 kegili aşırtmaq üçün verilən 1 və ya 2 atışdan ibarətdir. Freymin hesablanması üçün 3 hal mövcuddur:

  1. Açıq freym (Open frame): İki atışın cəmində 10-dan az kegil aşırdıldıqda qeydə alınır. Bu halda freymin xalı sadəcə aşırdılan kegillərin sayıdır.

  2. Sper (Spare - /): Bütün 10 kegil ikinci atışda aşırdıldıqda qeydə alınır. Sperin ümumi dəyəri 10 + oyunçunun növbəti (ilk) atışında aşırdığı kegillərin sayıdır.

  3. Strayk (Strike - X): Bütün 10 kegil elə birinci atışdaca aşırdıldıqda qeydə alınır. Straykın ümumi dəyəri 10 + oyunçunun növbəti iki atışında aşırdığı kegillərin sayıdır. Əgər ard-arda strayklar gələrsə, xal hesablamaq üçün topun bir və ya iki dəfə də atılmasını gözləmək lazımdır.

10-cu freym (Xüsusi hal): Oyunun onuncu freymi fərqlidir. Əgər oyunçu 10-cu freymdə sper və ya strayk edərsə, müvafiq olaraq ona 1 və ya 2 əlavə atış verilir. Bu əlavə atışlar yalnız 10-cu freymin xalını tamamlamaq üçündür. Əlavə atışlarda edilən strayk və ya sperlər yeni atış haqqı qazandırmır. 10-cu freymin ümumi dəyəri sadəcə bu freymdə (əlavə atışlar daxil olmaqla) aşırdılan bütün kegillərin cəmidir. (Maksimum 30).

Qısa Nümunə:

  • Freym 1: X (Strayk) ➔ Dəyəri = 10 + 5 + 5 = 20

  • Freym 2: 5, / (Sper) ➔ Dəyəri = 5 + 5 + 9 = 19

  • Freym 3: 9, 0 (Açıq) ➔ Dəyəri = 9 + 0 = 9 Bu 3 freymdən sonra ümumi xal: 48.

Giriş verilənləri: Birinci sətirdə oyun ərzində edilən bütün atışların sayını bildirən N tam ədədi verilir. İkinci sətirdə isə aralarında boşluq olmaqla hər atışda aşırdılan kegillərin sayını bildirən N ədəd tam ədəd verilir. Bu ardıcıllıq tam və düzgün bitmiş bir bouldinq oyununu təmsil edir.

Çıxış verilənləri: Oyunun yekun xalını tam ədəd kimi çap edin.

1Nümunə 1:
Giriş:
20 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6
Çıxış:
90
İzah:Bu oyunda bütün 10 freymin hər biri "açıq freym"dir (yəni heç bir freymdə bütün 10 kegil aşırdılmayıb). Hər freymdə oyunçu cəmi 9 kegil (3 + 6) aşırır. Bonus xallar qazandıracaq sper və ya strayk olmadığı üçün, sadəcə 10 freymin hər birində toplanan 9 xal cəmlənir: 10 × 9 = 90.
2Nümunə 2:
Giriş:
20 6 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Çıxış:
16
İzah:1-ci Freym: Oyunçu ilk atışda 6, ikinci atışda 4 kegil aşıraraq Sper edir. Sperin dəyəri 10 + növbəti tək atış kimi hesablanır. Növbəti atış 3 olduğundan, 1-ci freymin yekun xalı 10 + 3 = 13 olur. 2-ci Freym: Atışlar 3 və 0-dır (açıq freym). Bu freymin xalı sadəcə olaraq 3 + 0 = 3-dür. Qalan freymlər: Hamısı 0-dır. Ümumi xal: 13 (birinci freym) + 3 (ikinci freym) = 16. (Burada 3 rəqəmi həm sperin bonusu kimi, həm də ikinci freymin öz xalı kimi 2 dəfə hesabata daxil olur).

Məhdudiyyətlər

  • 12 ≤ N ≤ 21

  • Hər atışda aşırdılan kegil sayı: 0 ≤ P ≤ 10

  • Bütün giriş verilənləri qaydalara tam uyğun bitmiş bir oyundur (natamam oyun yoxdur).

REDAKTOR
Giriş edin
Giriş:
20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Çıxış:
0