Duas palavras são isomorfos se tiverem o mesmo padrão de repetições de letras. Por exemplo, ambos ESTATE
e DUELED
têm padrãoabcdca
ESTATE
DUELED
abcdca
porque as letras 1 e 6 são iguais, as letras 3 e 5 são iguais e nada mais. Isso também significa que as palavras são relacionadas por uma cifra de substituição, aqui com a correspondência E <-> D, S <-> U, T <-> E, A <-> L
.
Escreva um código que use duas palavras e verifique se são isomorfos. Menos bytes ganha.
Entrada: duas cadeias não vazias de letras maiúsculas A..Z
. Se desejar, você pode levá-las como uma coleção de duas cadeias ou como uma única cadeia com um separador.
Saída: Um valor Truthy consistente para pares que são isomorfos e um valor Falsey consistente, se não forem. Strings de diferentes comprimentos são entradas válidas que nunca são isomorfas.
Casos de teste:
Verdadeiro:
ESTATE DUELED
DUELED ESTATE
XXX YYY
CBAABC DEFFED
RAMBUNCTIOUSLY THERMODYNAMICS
DISCRIMINATIVE SIMPLIFICATION
Falso:
SEE SAW
ANTS PANTS
BANANA SERENE
BANANA SENSES
AB CC
XXY XYY
ABCBACCBA ABCBACCAB
ABAB CD
Sinta-se à vontade para adicionar mais casos de teste que achar úteis.
Entre os melhores
Aqui está um snippet de pilha para gerar uma classificação regular e uma visão geral dos vencedores por idioma.
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
ABAB CD
(para abordagens semelhantes a zip)