В играх «Продолжай говорить» и «Никто не взрывается» игрокам поручено обезвреживать бомбы на основе информации, полученной от их «экспертов» (других людей с руководством). Каждая бомба состоит из модулей, одним из которых могут быть пароли, где эксперту выдается этот список возможных паролей длиной всего пять букв:
about after again below could
every first found great house
large learn never other place
plant point right small sound
spell still study their there
these thing think three water
where which world would write
И игроку предоставляется список из 6 возможных букв для каждого места в пароле. Учитывая возможные комбинации букв, выведите правильный пароль. Входные данные могут быть в любом приемлемом формате (2D-массив, строка, разделенная новой строкой и т. Д.). Вы можете отказаться от кода, который вы используете для сжатия / генерации списка / строки / массива / любого пароля. (Спасибо @DenkerAffe)
ПРИМЕЧАНИЕ. Пароли не чувствительны к регистру. Вы можете предположить, что ввод будет решаться только для одного пароля.
Примеры / Тестовые случаи
Входные данные здесь будут представлены в виде массива строк.
["FGARTW","LKSIRE","UHRKPA","TGYSTG","LUOTEU"] => first
["ULOIPE","GEYARF","SHRGWE","JEHSDG","EJHDSP"] => large
["SHWYEU","YEUTLS","IHEWRA","HWULER","EUELJD"] => still
<
, например, в моем решении Bash.Ответы:
Pyth, 13 байт
Тестирование.
источник
Баш, 22 байта
Беги так:
источник
fold -5<<<ABOUTAFTERAGAINBELOWCOULDEVERYFIRSTFOUNDGREATHOUSELARGELEARNNEVEROTHERPLACEPLANTPOINTRIGHTSMALLSOUNDSPELLSTILLSTUDYTHEIRTHERETHESETHINGTHINKTHREEWATERWHEREWHICHWORLDWOULDWRITE|grep `printf [%s] $@`
JavaScript (ES6), 62 байта
53 байта в Firefox 48 или более ранней версии:
Было бы 49 байтов, если бы не требование нечувствительности к регистру:
Показать фрагмент кода
источник
Брахилог , 25 байт
Бесчисленные байты - это массив слов, включая квадратные скобки.
объяснение
источник
Руби,
484239 байтТеперь, когда все готово, оно очень похоже на решение Pyth,
но бездо такой степени, что теперь это в основном прямой порт.%s
форматированияЕсли вы выводите только результат с помощью
puts
, вам не нужно[0]
указывать в конце, такputs
как с этим справимся.С тестовыми примерами:
источник
JavaScript (ES6), 71 байт
Применение:
источник
Python,
646057 байтКод для создания списка слов в
w
виде строки, слова разделяются пробелом (байты не учитываются при расчете длины кода решения):Текущее решение (57 байт): сэкономлено 3 байта благодаря @RootTwo
Эта функция принимает
tuple
(нетlist
!) Ровно 5 строк, которые представляют возможные буквы для каждого символа пароля в качестве ввода.Посмотрите этот код на ideone.com
Вторая версия (60 байт):
Эта функция принимает
tuple
(нетlist
!) Ровно 5 строк, которые представляют возможные буквы для каждого символа пароля в качестве ввода.Посмотрите этот код на ideone.com
Первая версия (64 байта):
Эта функция принимает любую итерацию (например ,
list
илиtuple
) ровно 5 строк, которые представляют возможные буквы для каждого символа пароля в качестве ввода.Посмотрите этот код на ideone.com
источник
"(?i)\\b"+"[%s]"*5%a
w=...
строкой кода: « Фактическое решение (57 байтов, сохранено 3 байта благодаря @RootTwo): »Хун , 125 байт
Ungolfed:
У Hoon нет регулярных выражений, только система парсера-комбинатора. Это делает довольно сложным заставить все работать:
(mask "abc")
примерно переводит в регулярные выражения[abc]
и является ядром анализатора, который мы создаем.;~(plug a b)
является монадическим связыванием двух парсеров под++plug
, которое должно анализировать первый, а затем второй, иначе произойдет сбой.++knee
используется для создания рекурсивного парсера; мы даем ему тип (*tape
) результата и обратный вызов для вызова фактического парсера. В этом случае обратным вызовом будет «снова вызвать полное замыкание, но вместо этого с хвостом списка». В?~
руне тестов список пуст, и дают(easy ~)
(не разбор ничего и возвращение ~) или добавляет другиеmask
и рекурсию снова.Построив парсер, мы можем приступить к его использованию.
++skip
удаляет все элементы списка, для которых функция возвращает yes.++rust
пытается проанализировать элемент с нашим правилом, возвращая либо,unit
что либо,[~ u=result]
либо~
(наша версия Haskell's Maybe). Если это~
(Нет, и правило либо не смогло проанализировать, либо не проанализировало все содержимое), то функция возвращает true и элемент удаляется.Остается список, содержащий только слово, где каждая буква является одним из параметров в данном списке. Я предполагаю, что список паролей уже находится в контексте под именем
pass
.источник
Python 3, 81 байт
Анонимная функция, которая принимает ввод списка строк
x
и возвращает пароль.Список возможных паролей
l
определяется как:Это простая грубая сила; Мне было интересно посмотреть, как быстро я смогу получить это без регулярных выражений.
Как это работает
Попробуйте это на Ideone
источник