Introdução
Um dia, você estava relaxando em seu escritório na CIA, quando de repente você vê um alerta no seu computador. Seus programas acabaram de interceptar centenas de mensagens codificadas! Um exame rápido revela a regra da codificação, mas você precisa de um programa para decodificar rapidamente.
Desafio
Você receberá uma lista de strings, separadas por vírgulas. Cada sequência conterá:
- Parte da mensagem codificada
- É parte da mensagem codificada, se for não na forma
a=b
. Observe que faz parte da mensagem, se estiverab=c
. Adicione essa sequência à mensagem codificada.
- É parte da mensagem codificada, se for não na forma
- Parte do esquema de codificação
- Isso será na forma de
a=b
. Isso significa que todos os a na mensagem devem ser substituídos por b. Observe que poderia sera==
, o que significa que todos os a`s devem ser substituídos por = 's.
- Isso será na forma de
Seu programa deve enviar a mensagem, decodificada usando o esquema encontrado.
Outras informações: sua entrada conterá apenas vírgulas para separar as strings. Pode conter outros caracteres, como! 1 #, etc. Não conterá letras maiúsculas. Bits de informações de decodificação não decodificam um ao outro. Somente a mensagem é afetada pelas informações de decodificação. Apenas uma substituição será dada para cada personagem, por exemplo, não"io,"i=u","i=g"
Exemplos
Entrada:"ta","y=s","y","a=e","b=t","b"," ","j","j=1"
Resultado:test 1
Entrada:"z=p","zota","g=e","yugkb","y=t","u=o","k=s","li","fg","b=="
Resultado:potatoes=life
Entrada:"p","=","==n","ot","p=a","hiz","i=e","z=r"
Resultado:another
Isso é código-golfe , então a resposta mais curta em bytes vence!
fonte
"massega","e=a","a=e"
e similares?"io,"i=u","i=g"
Respostas:
Geléia , 19 bytes
Experimente online!
Quão?
fonte
m
é um átomo diádico que retira todos os elementos da direita * da esquerda *. Aqui, por exemplo,['x','=','y','<space>','a','=','b']m2
renderia['x','y','a','b']
. (* Menos certo é zero quando ele acrescenta uma reflexão em seu lugar.)Python 3, 98
Esta
lambda
função recebe uma lista de strings (entrada) e retorna uma string (a mensagem decodificada).Exemplos:
fonte
'=' == x[1:2]
será verdade parax = 'a=bc'
, que não é uma parte do esquema de codificaçãoHaskell, 85 bytes
Uso
Descrição
f
cria uma tabela de pesquisa.concat[c|c<-x,[]==f[c]]
extrai a mensagem.map(\v->maybe v id$lookup v$f x)
realiza a pesquisa.fonte
JavaScript (ES6), 87 bytes
fonte
Retina,
84827774 bytesLeva uma lista separada por vírgula como entrada. Observe a nova linha à direita
Experimente Online!
Explicação:
Primeiro, movemos todas as expressões do formulário
.=.
para o final da string e as separamos da mensagem com uma vírgula dupla (,,
). Isso é feito para que, na próxima etapa, possamos encontrar todas as codificações verificando se cada caractere à frente da,,
tem uma correspondência=.
posteriormente. Isso é alcançado através doM!&`(.).*,,.*\1=.|.+,
qual encontra todas essas correspondências e as coloca em uma lista de cadeias separada por avanço de linha. Em seguida, modificamos cada sequência para conter apenas um caractere não codificado ou a versão codificada do caractere. Finalmente, substituímos todos os feeds de linha e vírgulas pela string vazia, para que nossa saída seja formatada corretamente.fonte
Lote, 188 bytes
Explicação: Percorre a lista de cadeias duas vezes (
for
gosta de uma cadeia no formato CSV). Na primeira vez, procura por seqüências que não contenham um=
como o segundo caractere e concatena-as com o resultado. Na segunda vez, procura por seqüências que contenham um=
caractere como o segundo caractere e executa a substituição. (ainda mais convenientemente, a substituição já está no formato de lote).fonte
PHP, 116 bytes
Versão Online
fonte
PHP,
8987 bytesduas versões:
recebe entrada de argumentos de linha de comando; corra com
-nr
.strtr
(tradução se argumento contiver
=
, mensagem mais).strtr
.fonte
05AB1E , 31 bytes
Experimente online!
fonte