Dadas duas seqüências, encontre a tabela de conversão ( cifra de substituição ) entre as duas, se a tradução não for possível, a saída será falsa. A resposta deve ser minimizada e criada da esquerda para a direita. O primeiro caractere a ser traduzido entre as palavras deve ser o primeiro na tabela de tradução. Além disso, qualquer letra que não seja traduzida (no mesmo local em que foi originalmente) NÃO deve estar na tabela de tradução.
Provavelmente, mais facilmente definido através de exemplos:
Casos válidos
"bat", "sap" => ["bt","sp"]
Observe a ordem, uma saída de ["tb","ps"]
não é válida para este desafio.
"sense", "12n12" => ["se","12"]
Observe como o n
não é traduzido porque é uma relação de 1 para 1.
"rabid", "snail" => ["rabd","snal"]
Observe como o i
não é traduzido porque é uma relação de 1 para 1.
"ass", "all" => ["s","l"]
A não está incluído, permanece o mesmo, s
pode ser mapeado l
devido à correspondência de padrões.
"3121212", "ABLBLBL" => ["312","ABL"]
Corresponde perfeitamente ao padrão.
Falsy Cases
"banana", "angular" => false
(não é do mesmo tamanho, impossível).
"animal", "snails" => false
(cada caractere só pode ser usado UMA VEZ em cada lado da tradução).
"can","cnn" => false
(n é implicitamente usado na tradução, portanto, definir uma tabela de tradução com n-> a seria inválido)
Assim, [aimal,sails]
é uma resposta inválida, tornando essa falsidade.
"a1", "22" => false
Veja "advertências", isso é listado como falso. Nesse caso, é porque a
e 1
não é possível mapear os dois 2
. (Cada caractere só pode ser usado UMA VEZ em cada lado da tradução).
Esta resposta parece ser uma boa referência: /codegolf//a/116807/59376
Se você tiver dúvidas sobre a funcionalidade de dois pares de palavras não listados, adie para esta implementação.
Regras de E / S
- A entrada pode ser como uma matriz de 2 elementos ou como 2 entradas separadas.
- A saída pode ser delimitada por uma matriz ou nova linha / espaço, semelhante à forma como eu a mostrei.
- A saída falsa pode ser 0, -1 ou falsa. Erro / Saída vazia também está bem.
- Você está garantido de que
a
não será igualb
ea
nemb
estará vazio. a
eb
são seqüências de letras somente para impressão ASCII.
Ressalvas
- As traduções devem ocorrer da esquerda para a direita, veja o exemplo 1.
- Você não deve gerar caracteres que permaneçam iguais.
- Seu programa pode ter apenas duas seqüências de caracteres
a
eb
. - Cada caractere só pode ser usado UMA VEZ em cada lado da tradução. Isto é o que faz a tradução do
snails
queanimals
impossível. - Substituições recursivas não devem ocorrer. Exemplo de substituição recursiva:
"a1","22"->[a1,12]
onde a é substituído primeiro por 1, os 1s resultantes são substituídos por 2. Isso não está correto, suponha que todas as traduções ocorram independentemente uma da outra, o que significa que isso é falso. Significado: "a1" com tabela de tradução de [a1,12] é avaliado como 12 (não 22)