Вступление
Однажды вы просто отдыхали в своем офисе в ЦРУ, когда вдруг на вашем компьютере появилось предупреждение. Ваши программы только что перехватили сотни закодированных сообщений! Быстрая проверка показывает правило для кодирования, но вам нужна программа для быстрого декодирования.
Вызов
Вам будет предоставлен список строк, разделенных запятыми. Каждая строка будет содержать либо:
- Часть закодированного сообщения
- Это часть закодированного сообщения, если оно не в форме
a=b
. Обратите внимание , что это является частью сообщения , если оноab=c
. Добавьте эту строку в закодированное сообщение.
- Это часть закодированного сообщения, если оно не в форме
- Часть схемы кодирования
- Это будет в форме
a=b
. Это означает, что все a в сообщении должны быть заменены на b. Обратите внимание, что это может бытьa==
, это означает, что все `ы должны быть заменены на = '.
- Это будет в форме
Ваша программа должна затем вывести сообщение, декодированное по найденной схеме.
Другая информация: Ваш ввод будет содержать только запятые для разделения строк. Он может содержать другие символы, например! 1 # и т. Д. Он не будет содержать заглавных букв. Биты информации декодирования не декодируют друг друга. Только сообщение затронуто информацией декодирования. Для каждого персонажа будет дана только одна замена, например, нет"io,"i=u","i=g"
Примеры
Входные данные:"ta","y=s","y","a=e","b=t","b"," ","j","j=1"
Выход:test 1
Входные данные:"z=p","zota","g=e","yugkb","y=t","u=o","k=s","li","fg","b=="
Выход:potatoes=life
Входные данные:"p","=","==n","ot","p=a","hiz","i=e","z=r"
Выход:another
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах!
источник
"massega","e=a","a=e"
и тому подобное?"io,"i=u","i=g"
Ответы:
Желе , 19 байт
Попробуйте онлайн!
Как?
источник
m
является диадическим атомом, который берет каждый правый элемент слева *. Вот, например,['x','=','y','<space>','a','=','b']m2
уступил бы['x','y','a','b']
. (* если право не равно нулю, когда вместо него добавляется отражение.)Питон 3, 98
Эта
lambda
функция получает список строк (входные) и возвращает строку (декодированное сообщение).Примеры:
источник
'=' == x[1:2]
это будет верноx = 'a=bc'
, что не является частью схемы кодированияHaskell, 85 байт
использование
Описание
f
создает таблицу поиска.concat[c|c<-x,[]==f[c]]
извлекает сообщение.map(\v->maybe v id$lookup v$f x)
совершает поиск.источник
JavaScript (ES6), 87 байт
источник
Retina,
84827774 байтаПринимает разделенный запятыми список в качестве входных данных. Обратите внимание на завершающий перевод строки
Попробуйте онлайн!
Объяснение:
Сначала мы перемещаем все выражения формы
.=.
в конец строки и отделяем их от сообщения двойной запятой (,,
). Это связано с тем , что на следующем этапе, мы можем найти все кодировки, проверяя , если каждый символ вперед из,,
имеет соответствие=.
впоследствии. Это достигается тем,M!&`(.).*,,.*\1=.|.+,
что находит все такие совпадения и помещает их в разделенный строкой список строк. Затем мы модифицируем каждую строку, чтобы она содержала только один незашифрованный символ или зашифрованную версию символа. Наконец, мы заменяем все переводы строк и запятые на пустую строку, чтобы наш вывод был хорошо отформатирован.источник
Пакет, 188 байт
Объяснение: Дважды просматривает список строк (удобно
for
использовать строку в формате CSV). Первый раз ищет строки, которые не содержат в=
качестве второго символа, и объединяет их с результатом. Во второй раз ищет строки, которые содержат в=
качестве второго символа, и выполняет подстановку. (еще удобнее, замена уже в пакетном формате.)источник
PHP, 116 байт
Онлайн версия
источник
PHP,
8987 байтдве версии:
принимает входные данные из аргументов командной строки; беги с
-nr
.strtr
(трансляция, если аргумент содержит
=
, сообщение остальное)strtr
.источник
05AB1E , 31 байт
Попробуйте онлайн!
источник