Skip to content

Instantly share code, notes, and snippets.

@dpolivaev
Created October 9, 2020 14:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dpolivaev/2f3f72e915f28b8bbcb460c6fc2df605 to your computer and use it in GitHub Desktop.
Save dpolivaev/2f3f72e915f28b8bbcb460c6fc2df605 to your computer and use it in GitHub Desktop.
BowlingKata_ru.txt
Запрограмируйте подсчет очков партии игры в боулинг.
Одна партия состоит из 10 фреймов.
В каждом фрейме у игрока есть два броска.
Если игрок сбивает все 10 кеглей первым броском,
такой бросок называется страйк (англ. strike — удар) и обозначается «Х».
Если игрок сбивает все 10 кеглей за два броска,
такой бросок называется спэр (англ. spare — запасной) и обозначается «/».
Если во фрейме страйк, сумма очков за этот фрейм будет равна количеству сбитых кеглей в этом фрейме (10 кеглей)
плюс количество фактически сбитых кеглей за два следующих броска
(в одном или двух фреймах, в зависимости от того, был ли страйк в следующем броске).
Если во фрейме сбит спэр, то сумма очков будет равна количеству сбитых кеглей в этом фрейме (10 кеглей)
плюс количество фактически сбитых кеглей за первый бросок в следующем фрейме.
Если фрейм остался открытым, то сумма очков будет равна количеству сбитых кеглей в этом фрейме.
Поскольку количество очков во фрейме, в случае страйка и спэр, зависит не только от бросков в этом фрейме,
но и от следующих бросков, особый статус получает последний, 10-й, фрейм.
Если в десятом фрейме первым броском выбивается страйк, игрок может сделать ещё два броска в этом же фрейме.
Если в десятом фрейме удаётся спэр, игрок может сделать ещё один бросок.
Следует отметить, что к спэр и страйкам в 10-м фрейме, естественно, не применяются указанные выше правила,
поскольку нет следующего фрейма.
Если за два первых броска в десятом фрейме остаются несбитые кегли и фрейм получается открытым, игра заканчивается.
Таким образом, максимальное количество очков в одной партии — 300,
поскольку максимально в каждом фрейме можно заработать 30 очков
(10 очков за страйк в этом фрейме плюс 20 очков за страйки в следующих двух бросках).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment