Слово-убийца в «Виселице»

Задача по программированию с проверкой онлайн

Сложность
Сложная
Языки
Python
JavaScript
TypeScript
Java
Go
Темы
Строки
Словари и множества
Рекурсия и перебор

Вы играете в «Виселицу» со словарём dictionary: различные слова из строчных латинских букв длиной от 1 до 10 (до нескольких тысяч слов). Вы загадываете слово из словаря и пишете вместо него ряд прочерков по числу букв. Соперник проходит по своему списку из 26 различных букв по порядку. Очередную букву он называет, только если в словаре есть слово, которое содержит эту букву и согласуется со всем, что он уже знает (длина, открытые позиции, названные буквы, которых нет в слове); иначе пропускает её. Если названная буква есть в вашем слове, вы открываете все её позиции, иначе соперник теряет очко. Игра идёт, пока он не назовёт все буквы вашего слова.

Даны словарь и список lists порядков букв соперника (каждый — строка из 26 различных букв). Для каждого порядка верните слово, при котором соперник потеряет больше всего очков; при равенстве — то, что раньше в словаре.

Пример: ["banana", "caravan", "pajamas"], ["abcdefghijklmnopqrstuvwxyz"] → ["pajamas"] (после a соперник называет c и теряет одно очко).


Источник: Coding Competitions Archive, codejam/2011/round_1a/the_killer_word · © Google LLC · Apache-2.0 · условие переведено и дополнено

Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Ещё задачи

Все задачи для тренировки