O problema com a cifra de César é que as palavras resultantes são muitas vezes impronunciáveis. O problema com o Pig Latin é que é fácil decodificar. Por que não combiná-los?
Entrada
Uma palavra que consiste nas 26 letras em inglês.
Saída
Primeiro, mude cada consoante na palavra para a próxima consoante no alfabeto. Então, b vai para c, d vai para f, e z vai para b. Em seguida, mude cada vogal para a próxima vogal do alfabeto (u vai para a). Por último, somente se a primeira letra da palavra for consoante, mova essa letra para o final da palavra e adicione "ay" ao final da palavra.
Exemplos:
cat -> evday
dog -> uhfay
eel -> iim
- Isso é código-golfe , então o código mais curto vence.
- Caso não importa.
- As vogais que serão usadas são A, E, I, O e U
z → bay
the → jivay
:? (Isto é, se a palavra começa com várias consoantes, não só mover um deles?)Respostas:
Stax , 20 bytes
Execute e depure
Explicação
Passei por algumas iterações e finalmente a reduzi para 20. Minha solução original era 53 bytes.
fonte
Ruby ,
9669 bytesExperimente online!
Curiosidade do dia: tr () corresponde às seqüências da direita para a esquerda. Eu sempre assumi que era da esquerda para a direita.
fonte
R ,
8685 bytesManeira simples.
chartr
possui a propriedade útil e encantadora que pode especificar intervalos de letras , economizando alguns bytes.-1 bytes roubando as strings de tradução da solução Ruby da GB - atualize-a!
Experimente online!
fonte
Java (JDK) , 167 bytes
Experimente online!
Créditos
fonte
05AB1E , 21 bytes
Experimente online!
Explicação
fonte
Node.js 10.9.0 ,
121116 bytesEspera a sequência de entrada em minúsculas.
Experimente online!
Identificando vogais
E faz:
Comentado
fonte
Python 2 ,
1531211109991 bytesExperimente online!
8 bytes cortados devido a uma sugestão de Matthew Jensen
fonte
lambda s:[s[1:]+s[0]+"ux",s][s[0]in'aeiou'].translate(8*".ecdfighjoklmnpuqrstvawxyzb.....")
translate
em Python 2 ...T-SQL, 169 bytes
A entrada é feita através de uma tabela pré-existente, de acordo com nossos padrões de IO .
Executa a substituição de caracteres primeiro, usando a função ( new to SQL 2017 )
TRANSLATE
, e depois verifica o primeiro caractere.Irritante por muito tempo devido ao tamanho da palavra-chave SQL.
fonte
Script de shell, 70 bytes
Experimente online!
fonte
Haskell ,
10297 bytesExperimente online!
fonte
Retina 0.8.2 , 50 bytes
Experimente online! O link inclui casos de teste. Abordagem semelhante à resposta R. Explicação:
o
refere-se ao outro conjunto, ou sejaaei\oub-df-hj-np-tv-zb
, que se expande paraaeioubcdfghjlkmnpqrstvwxyzb
, então seuo
expande parauaeioubcdfghjlkmnpqrstvwxyzb
. Isso resulta na seguinte transliteração:O segundo
u
eb
são ignorados, pois nunca podem ser correspondidos, portanto, isso fornece a cifra desejada. (Observe que na Retina 1 você pode, é claro, usar emv
vez deaei\ou
economizar 5 bytes.)Se a primeira letra não for uma vogal, gire-a até o final e coloque o sufixo
ay
.fonte
Gelatina , 24 bytes
Experimente online!
Economizou 1 byte graças a Jonathan Allan (use a sintaxe de dois caracteres em vez de aspas).
fonte
⁾ay
para um byte. O©
poderia ir após oe
que é isso que você está armazenando. Eu tenhoØẹØḄ,żṙ€¥1ẎyṙḢe©ØḄƊ®⁾ayẋ
.> <> ,
9492 bytesExperimente online!
Editar: salvou 2 bytes usando a entrada 97, em vez de 32, para que o dicionário iniciasse no início da linha. Versão anterior:
fonte
Vermelho , 149 bytes
Experimente online!
Como (quase) sempre, a entrada mais longa
fonte
F # (Mono) , 197 bytes
Experimente online!
fonte
Perl 5 , 56 bytes
Experimente online!
fonte
-
s entrec
ed
oug
eh
?<s>58</s> 56 bytes
no cabeçalho e muitas pessoas adicionam um "Editar: salvou 2 bytes graças ao @Neil". ou alguns quando são ajudados em um comentário.Dyalog APL (SBCS), 57 bytes
Experimente online!
Recebe entrada apenas em maiúsculas! (Porque
⎕A
é o alfabeto maiúsculo)⎕A{(⍺~⍵)⍵}'AEIOU'
: Vetor de consoantes e vogais(⊂⍵⍳⍨∊a)⌷∊1⌽¨a
: Usa índices de cada letra da palavra no alfabeto normal (⊂⍵⍳⍨∊a
) para indexar (⌷
) na cifra∊1⌽¨a
.('AY',⍨1⌽⊢)⍣(∊/⊃¨⍵a)
: Move a primeira letra para o final e acrescenta 'AY', se a primeira letra for uma consoante.Obrigado pelo desafio legal!
fonte
JavaScript (SpiderMonkey) , 107 bytes
Experimente online!
Espera entrada em minúsculas.
Substitui cada caractere da sequência por um na sequência
'aeiouabcdfghjklmnpqrstvwxyzb'
e, em seguida, piglatinifica qualquer coisa com uma consoante inicial.fonte
PHP, 112 bytes
ou
assumir entrada em minúsculas. Execute como pipe
-nR
ou experimente-os online .Você também pode usar em
strtr($s,uzbcadfgehjklminpqrsotvwxy,range(a,z))
vez destrtr($s,range(a,z),ecdfighjoklmnpuqrstvawxyzb)
.fonte