Игра «Виселица»
Просмотр в формате PDFВ симуляторе игры «Виселица» загадано слово из строчных латинских букв. Игрок делает ходы последовательно, каждый раз называя одну букву. В начале у игрока есть lives попыток.
Текущее состояние слова отображается строкой той же длины: все ещё не открытые буквы заменяются символом '_'. Изначально все буквы скрыты.
При обработке очередного хода с буквой c действуют такие правила:
- Если буква
cуже называлась раньше, то ход считается повторным. Состояние слова не меняется, количество попыток не уменьшается, а в журнал записываетсяREPEAT. - Иначе, если буква
cвстречается в загаданном слове хотя бы один раз, то в состоянии слова открываются все её вхождения. В журнал записываетсяHIT, количество попыток не меняется. - Иначе буква
cотсутствует в слове. Тогда количество попыток уменьшается на1, а в журнал записываетсяMISS.
Партия завершается сразу, как только выполнено одно из двух условий:
- открыты все буквы слова — результат
WIN; - количество попыток стало равно
0— результатLOSE.
Если после этого в последовательности ещё остались ходы, они полностью игнорируются и в журнал не попадают.
Входные данные
В первой строке дано загаданное слово — непустая строка из строчных латинских букв длиной от 1 до 50.
Во второй строке дано целое число lives — начальное количество попыток.
В третьей строке дано целое число q — количество ходов.
В четвёртой строке дана строка длины q, состоящая из строчных латинских букв: именно в таком порядке симулятор должен обработать названные игроком буквы.
Выходные данные
Для каждого хода, который был обработан до окончания партии, выведите в отдельной строке результат этого хода: HIT, MISS или REPEAT.
Затем выведите в отдельной строке финальное состояние слова после последнего обработанного хода. Если партия завершилась раньше, нужно вывести состояние слова на момент завершения.
В последней строке выведите итог партии:
WIN, если все буквы открыты;LOSE, если закончились попытки;PLAY, если ходы закончились, а партия ещё не завершена.
Ограничения
1 <= |word| <= 501 <= lives <= 261 <= q <= 100
Примеры
Пример 1
Входные данные
a
1
1
a
Выходные данные
HIT
a
WIN
Пример 2
Входные данные
ab
1
2
ca
Выходные данные
MISS
__
LOSE
Комментарии