Игра «Виселица»

Просмотр в формате PDF

Submit solution


Очки: 160
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Автор:
Problem types
Allowed languages
C++, Python

В симуляторе игры «Виселица» загадано слово из строчных латинских букв. Игрок делает ходы последовательно, каждый раз называя одну букву. В начале у игрока есть 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| <= 50
  • 1 <= lives <= 26
  • 1 <= q <= 100

Примеры

Пример 1

Входные данные

a
1
1
a

Выходные данные

HIT
a
WIN
Пример 2

Входные данные

ab
1
2
ca

Выходные данные

MISS
__
LOSE

Комментарии

Еще нет ни одного комментария.