El problema con el cifrado César es que las palabras resultantes a menudo son impronunciables. El problema con Pig Latin es que es fácil de decodificar. ¿Por qué no combinarlos?
Entrada
Una palabra que consta de las 26 letras en inglés.
Salida
Primero, cambie cada consonante de la palabra a la siguiente consonante del alfabeto. Entonces, b va a c, d va a f, y z va a b. Luego, cambie cada vocal a la siguiente vocal del alfabeto (u va a a). Por último, solo si la primera letra de la palabra es una consonante, mueva esa letra al final de la palabra y agregue "ay" al final de la palabra.
Ejemplos:
cat -> evday
dog -> uhfay
eel -> iim
- Este es el código de golf , por lo que gana el código más corto.
- El caso no importa.
- Las vocales que se utilizarán son A, E, I, O y U
z → bay
the → jivay
:? (Es decir, si la palabra comienza con varias consonantes, ¿solo movemos una de ellas?)Respuestas:
Stax , 20 bytes
Ejecutar y depurarlo
Explicación
Pasé por algunas iteraciones y finalmente lo bajé a 20. Mi solución original fue de 53 bytes.
fuente
Ruby ,
9669 bytesPruébalo en línea!
Dato curioso del día: tr () hace coincidir las cadenas de derecha a izquierda. Siempre supuse que era de izquierda a derecha.
fuente
R ,
8685 bytesManera simple.
chartr
tiene la propiedad encantadora y útil de que puede especificar rangos de letras , que ahorran unos pocos bytes.-1 bytes robando las cadenas de traducción de la solución Ruby de @ GB - ¡vota!
Pruébalo en línea!
fuente
Java (JDK) , 167 bytes
Pruébalo en línea!
Créditos
fuente
05AB1E , 21 bytes
Pruébalo en línea!
Explicación
fuente
Node.js 10.9.0 ,
121116 bytesEspera la cadena de entrada en minúsculas.
Pruébalo en línea!
Identificando vocales
Y lo hace:
Comentado
fuente
Python 2 ,
1531211109991 bytesPruébalo en línea!
8 bytes eliminados debido a una sugerencia de Matthew Jensen
fuente
lambda s:[s[1:]+s[0]+"ux",s][s[0]in'aeiou'].translate(8*".ecdfighjoklmnpuqrstvawxyzb.....")
translate
en Python 2 ...T-SQL, 169 bytes
La entrada es a través de una tabla preexistente, según nuestros estándares de IO .
Realiza la sustitución de caracteres primero, usando el ( nuevo en SQL 2017 )
TRANSLATE
, luego verifica el primer carácter.Molesto largo debido principalmente a la longitud de la palabra clave SQL.
fuente
Script de shell, 70 bytes
Pruébalo en línea!
fuente
Haskell ,
10297 bytesPruébalo en línea!
fuente
Retina 0.8.2 , 50 bytes
Pruébalo en línea! El enlace incluye casos de prueba. Enfoque similar a la respuesta R. Explicación:
o
se refiere al otro conjunto, es deciraei\oub-df-hj-np-tv-zb
, que se expande aaeioubcdfghjlkmnpqrstvwxyzb
, por lo que seuo
expande auaeioubcdfghjlkmnpqrstvwxyzb
. Esto da como resultado la siguiente transliteración:Los segundos
u
yb
se ignoran, ya que nunca pueden coincidir, por lo que esto proporciona el cifrado deseado. (Tenga en cuenta que en Retina 1, por supuesto, puede usarlo env
lugar deaei\ou
ahorrar 5 bytes).Si la primera letra no es una vocal, gírala hasta el final y sufijo
ay
.fuente
Jalea , 24 bytes
Pruébalo en línea!
Guardado 1 byte gracias a Jonathan Allan (use la sintaxis de dos caracteres en lugar de comillas).
fuente
⁾ay
para un byte. El©
podría ir después dee
eso, ya que eso es lo que está almacenando. TengoØẹØḄ,żṙ€¥1ẎyṙḢe©ØḄƊ®⁾ayẋ
.> <> ,
9492 bytesPruébalo en línea!
Editar: ahorró 2 bytes al tomar el mod de entrada 97 en lugar de 32, por lo que el diccionario podría comenzar al comienzo de la línea. Versión previa:
fuente
Rojo , 149 bytes
Pruébalo en línea!
Como (casi) siempre, la entrada más larga
fuente
F # (Mono) , 197 bytes
Pruébalo en línea!
fuente
Perl 5 , 56 bytes
Pruébalo en línea!
fuente
-
s entrec
yd
og
yh
?<s>58</s> 56 bytes
en el encabezado y muchas personas agregan "Editar: 2 bytes guardados gracias a @Neil". o algo así cuando se les ayuda en un comentario.Dyalog APL (SBCS), 57 bytes
Pruébalo en línea!
¡Toma entradas solo en mayúsculas! (Porque
⎕A
es alfabeto en mayúsculas)⎕A{(⍺~⍵)⍵}'AEIOU'
: Vector de consonantes y vocales(⊂⍵⍳⍨∊a)⌷∊1⌽¨a
: Utiliza índices de cada letra de la palabra en el alfabeto normal (⊂⍵⍳⍨∊a
) para indexar (⌷
) en el cifrado∊1⌽¨a
.('AY',⍨1⌽⊢)⍣(∊/⊃¨⍵a)
: Mueve la primera letra al final y agrega 'AY', si la primera letra es una consonante.¡Gracias por el genial desafío!
fuente
JavaScript (SpiderMonkey) , 107 bytes
Pruébalo en línea!
Espera entrada en minúsculas.
Reemplaza cada carácter de la cadena con el que está detrás de ella en la cadena
'aeiouabcdfghjklmnpqrstvwxyzb'
y luego piglatinifica cualquier cosa con una consonante inicial.fuente
PHP, 112 bytes
o
Asumir entrada en minúsculas. Ejecutar como tubería
-nR
o probarlos en línea .También podría usar en
strtr($s,uzbcadfgehjklminpqrsotvwxy,range(a,z))
lugar destrtr($s,range(a,z),ecdfighjoklmnpuqrstvawxyzb)
.fuente