Dadas dos cadenas, encuentre la tabla de traducción ( cifrado de sustitución ) entre las dos, si la traducción no es posible, la salida es falsa. La respuesta debe minimizarse y crearse de izquierda a derecha. El primer carácter a traducir entre palabras debe ser el primero en la tabla de traducción. Además de esto, cualquier carta que no esté traducida (en el mismo lugar que estaba originalmente), NO debe estar en la tabla de traducción.
Probablemente más fácilmente definido a través de ejemplos:
Casos Válidos
"bat", "sap" => ["bt","sp"]
Observe el pedido, una salida de ["tb","ps"]
no es válida para este desafío.
"sense", "12n12" => ["se","12"]
Observe cómo n
no se traduce porque es una relación 1 a 1.
"rabid", "snail" => ["rabd","snal"]
Observe cómo i
no se traduce porque es una relación 1 a 1.
"ass", "all" => ["s","l"]
A no está incluido, permanece igual, se s
puede asignar l
debido a la coincidencia de patrón.
"3121212", "ABLBLBL" => ["312","ABL"]
Combina perfectamente con el patrón.
Falsy Cases
"banana", "angular" => false
(No es de la misma longitud, imposible).
"animal", "snails" => false
(cada carácter solo se puede usar UNA VEZ en cada lado de la traducción).
"can","cnn" => false
(n se usa implícitamente en la traducción, por lo tanto, definir una tabla de traducción con n-> a no sería válido)
Por lo tanto, [aimal,sails]
es una respuesta no válida, lo que hace que esto sea falso.
"a1", "22" => false
Ver "advertencias", esto aparece como falso. En este caso, es porque a
y 1
no se pueden asignar a ambos 2
. (Cada carácter solo se puede usar UNA VEZ en cada lado de la traducción).
Esta respuesta parece ser un buen punto de referencia: /codegolf//a/116807/59376
Si tiene preguntas sobre la funcionalidad de dos pares de palabras que no figuran en la lista, consulte esta implementación.
Reglas de E / S
- La entrada puede ser como una matriz de 2 elementos o como 2 entradas separadas.
- La salida puede ser como una matriz o nueva línea / espacio delimitado, similar a como lo he mostrado.
- La salida falsa puede ser 0, -1 o falsa. La salida de error / vacío también está bien.
- Le garantizamos que
a
no será igualb
y quea
tampocob
estará vacío. a
yb
son secuencias de letras imprimibles solo en ASCII.
Advertencias
- Las traducciones deben ocurrir de izquierda a derecha, ver ejemplo 1.
- No debe generar caracteres que sigan siendo los mismos.
- Su programa solo puede tomar dos cadenas
a
yb
. - Cada carácter solo se puede usar UNA VEZ en cada lado de la traducción. Esto es lo que hace la traducción de
snails
aanimals
imposible. - Los reemplazos recursivos no deberían ocurrir. Ejemplo de reemplazo recursivo:
"a1","22"->[a1,12]
donde a se reemplaza primero por 1, luego los 1 resultantes se reemplazan por 2. Esto no es correcto, suponga que todas las traducciones ocurren independientemente unas de otras, lo que significa que esto es falso. Significado: "a1" con la tabla de traducción de [a1,12] se evalúa a 12 (no 22)