Eu simplesmente amo esse código simples, é tão divertido ler palavras não muito legíveis por humanos e preencher as lacunas ...
Ot wes thi bist uf tomis, ot wes thi wurst uf tomis,
ot wes thi egi uf wosdum, ot wes thi egi uf fuuloshniss,
ot wes thi ipuch uf biloif, ot wes thi ipuch uf oncridaloty,
ot wes thi siesun uf loght, ot wes thi siesun uf derkniss,
ot wes thi sprong uf hupi, ot wes thi wontir uf dispeor,
wi hed ivirythong bifuri as, wi hed nuthong bifuri as,
wi wiri ell guong dorict tu hievin, wi wiri ell guong dorict thi uthir wey –
on shurt, thi piroud wes su fer loki thi prisint piroud,
thet sumi uf ots nuosoist eathurotois onsostid un ots biong riciovid,
fur guud ur fur ivol, on thi sapirletovi digrii uf cumperosun unly.
As regras são super simples:
- Aceite algum texto como entrada (caracteres ascii, letras maiúsculas / minúsculas e pontuação).
- Para cada vogal, gire-a para a próxima vogal ou volte ao início.
- a => e
- e => i
- i => o
- o => u
- u => a
- As vogais maiúsculas permanecem maiúsculas, as vogais minúsculas permanecem minúsculas.
- Envie o texto após essas conversões.
- Não há necessidade de apoiar sotaques.
- Os demais caracteres devem permanecer inalterados.
- Tente fazer isso no menor número de bytes.
- Qualquer idioma antigo que você gosta.
Casos de teste
It was the best of times, it was the worst of times,
it was the age of wisdom, it was the age of foolishness,
it was the epoch of belief, it was the epoch of incredulity,
it was the season of light, it was the season of darkness,
it was the spring of hope, it was the winter of despair,
we had everything before us, we had nothing before us,
we were all going direct to heaven, we were all going direct the other way –
in short, the period was so far like the present period,
that some of its noisiest authorities insisted on its being received,
for good or for evil, in the superlative degree of comparison only.
Fora:
Ot wes thi bist uf tomis, ot wes thi wurst uf tomis,
ot wes thi egi uf wosdum, ot wes thi egi uf fuuloshniss,
ot wes thi ipuch uf biloif, ot wes thi ipuch uf oncridaloty,
ot wes thi siesun uf loght, ot wes thi siesun uf derkniss,
ot wes thi sprong uf hupi, ot wes thi wontir uf dispeor,
wi hed ivirythong bifuri as, wi hed nuthong bifuri as,
wi wiri ell guong dorict tu hievin, wi wiri ell guong dorict thi uthir wey –
on shurt, thi piroud wes su fer loki thi prisint piroud,
thet sumi uf ots nuosoist eathurotois onsostid un ots biong riciovid,
fur guud ur fur ivol, on thi sapirletovi digrii uf cumperosun unly.
Em:
The quick brown fox jumps over the lazy dog.
Fora:
Thi qaock bruwn fux jamps uvir thi lezy dug.
Em:
Home is where the heart is.
Fora:
Humi os whiri thi hiert os.
Em:
Boaty McBoatface
Fora:
Buety McBuetfeci
Em:
AEIOUaeiou
Fora:
EIOUAeioua
Em:
Programming Puzzles And Code Golf
Fora:
Prugremmong Pazzlis End Cudi Gulf
code-golf
text-processing
AJFaraday
fonte
fonte
Respostas:
Stax , 7 bytes
Execute e depure
Experimente online!
Explicação (descompactada)
Pode ser capaz de economizar mais, continuará tentando.
fonte
MS-SQL, 51 bytes
Funciona no SQL 2017 ou superior:
A nova função
TRANSLATE
realiza a substituição de caracteres individuais, sendo ideal para esse desafio.A entrada é feita através de uma tabela preexistente t com a coluna varchar v , de acordo com nossas regras de IO .
Nesse caso, a tabela deve ser criada usando um agrupamento com distinção entre maiúsculas e minúsculas , executando em um servidor com distinção entre maiúsculas e minúsculas ou usando a
COLLATE
palavra - chave (não contada no total de caracteres):EDIT : SSMS pode cortar a citação longa acima ao retornar o resultado em uma janela "resultados para texto", esta é uma configuração do cliente, não um bug no meu programa .
Para corrigir, vá para
Tools > Options > Query Results > SQL Server > Results to Text
e aumente o "Número máximo de caracteres exibidos em cada coluna".fonte
REPLACE
alguns truques:REPLACE(TRANSLATE(v,'1234567890','xxxxxxxxxx'),'x','')
para eliminar todos os números de uma sequência, por exemplo. Ainda longo, mas muito menor que 10REPLACE
s aninhados .Bash + coreutils , 24
Experimente online!
fonte
Haskell , 52 bytes
Experimente online!
Lynn me salvou dois bytes apontando que
!!0
é menor quehead
.Explicação
Se você nunca codificou em Haskell, isso provavelmente parecerá uma pilha de bobagens. Então, primeiro vamos desmontar e depois dividir:
Primeiro, temos uma função
!
, que recebe uma strings
e um caracterec
. Nossa primeira captura de correspondência de padrão aceita entrada se a sequência não estiver vazia. Se a string não estiver vazia, comparamos seu primeiro caractere comc
. Se o primeiro caractere não for igual a,c
nós o lançamos e chamamos!
novamente com o restante da string ec
. Se for igual, retornamos o segundo caractere na string.Nossa próxima correspondência de padrões captura a string em todos os outros casos, ou seja, se a string estiver vazia. Neste caso, apenas retornamos
c
.Em suma, essa função pega um caractere
c
e uma strings
e retorna o caractere após a primeira ocorrência dec
ins
. Se passarmos comaeiouaAEIOUA
isso, executaremos nossa cifra em um único caractere. Para fazer toda a nossa função, devemos mapear isso através da string.fonte
Retina ,
1098 bytesExperimente online!
Guardado 1 byte graças a Neil! E outro byte graças a Martin!
A nova versão da retina possui classes de vogais, o que torna o resultado um pouco mais curto. A transliteração também faz uso da classe "other". Portanto, a
to
classe se parece com "aeiouAEIOUA", enquanto afrom
classe se parece com "uaeiouAEIOUA"Isso não causa problemas, pois o segundo
u
mapeamento paraA
nunca será feito, poisu
já foi mapeado paraa
.fonte
T`_o`uvUV
._
no set trataria isso literalmente, mas parece que não faz isso.Y
muito, então vou tentar amanhã.Perl 5 + -p,
2423 bytesExperimente online
-1 byte graças a @DomHastings
fonte
-p
como +1, mas consideramos que esta resposta está em "Perl 5 +-p
".;
como delimitador, poderá salvar um byte!Python 3, 62 bytes
Faça uma tabela de tradução (dicionário) com
str
ostr.maketrans
método estático . Traduzir caracteres relevantes para o caractere de destino.fonte
x
parâmetro. Em python, as funções lambda não precisam de uma declaração de retorno.C,
8576676564 bytesPorto de Kevin Cruijssen é Java resposta . Experimente online aqui .
Agradecimentos a Kevin Cruijssen por jogar 9 bytes, a Christoph por jogar 11 bytes e a roofcat pelo golfe de 1 byte.
Versão não destruída:
fonte
\0
. Além disso, isso não funciona quando compilado com clang: tio.run/##S9ZNzknMS///...const char *res = strchr("AEIOU...", 0)
retorna um ponteiro para o terminador na string literal.putchar(res[1])
lê além do final da string literal. Aparentemente, com o gcc, ele encontra outro byte zero e funciona, mas com o clang ele obtém um73 'I'
(provavelmente damain
literal da string "Era ...", mas não verifiquei o asm). Portantoputchar
, não retorna 0, e eventualmente falhamos quando*c++
lê uma página não mapeada.f(char*c){for(;*c;)putchar(1[strchr("AEIOUAaeioua",*c++)?:c-2]);}
. É tudo por agora, eu acho.a[b]==*(a+b)==*(b+a)==b[a]
,. Portanto1[...]==(...)[1]
R , 43 bytes
Experimente online!
Aqui está a minha solução, envolvida em uma,
cat
para que ela seja impressa com mais facilidade: Experimente online!fonte
Gelatina , 11 bytes
Experimente online!
fonte
Python 2 ,
796867 bytes-1 byte graças a @ArnoldPalmer
Experimente online!
fonte
JavaScript (ES6), 60 bytes
Experimente online!
fonte
s=>s.replace(/./g,c=>'auoieaAUOIEA'.match(".(?=${c})")||c)
only.
=>unlya
Ruby
-p
, 31 bytesExperimente online!
fonte
Pitão, 17 bytes
Experimente aqui
fonte
Tiago 2.0,
2521 bytesEu me diverti jogando golfe com Shaggy.
Execute-o aqui.
fonte
S.p(f)
usado.Java 10,
9787 bytes-10 bytes depois de ter sido inspirado pela resposta JavaScript de @Arnauld (sua versão de 60 bytes) .
Experimente online.
Explicação:
fonte
05AB1E ,
141311 bytesExperimente online!
fonte
|
e»
: Experimente online: 11 bytes .Retina 0.8.2 , 20 bytes
Experimente online! O link inclui casos de teste.
fonte
APL + WIN, 55 bytes
Solicita a sequência de entrada:
fonte
Caxumba, 38 bytes
O Mumps normalmente não adiciona um retorno de carro, já que não vi um requisito para separar entrada e saída, ele parece um pouco estranho na primeira execução. Por exemplo, a saída do último caso de teste é assim:
Se você deseja adicionar um retorno de carro, adicione dois bytes assim:
fonte
Vim + tpope / vim-abolish , 30 bytes
Solução alternativa, também 30 bytes:
De acordo com a meta , as respostas do vim podem usar plugins sem penalidade de bytes. Esta não é uma resposta vim, mas uma resposta vim + abolir .
Abolir é um plugin extremamente útil. Esta seção do README descreve bem como esse comando (o
Subvert
comando) funciona.fonte
CJam ,
2919 bytesExperimente online!
-10 bytes graças a Peter Taylor
Explicação:
fonte
q
e nãol
receber entrada. O primeiro caso de teste parece ser multilinhas. Também você pode reduzir"eioua"
para_1m<
. Na verdade, você pode ir mais longe e jogar golfe com isso emq"aeioua"_eu+_1m<er
AutoHotkey , 24 bytes
O AuotHotkey substitui automaticamente as letras com distinção entre maiúsculas e minúsculas.
fonte
PHP, 90 bytes
Experimente online
Código
Explicação
75 bytes se executado com o
php -r
uso$argv
fonte
J , 33 bytes
Experimente online!
fonte
str , 18 bytes
Experimente online!
Explicação
fonte
PHP, 38 bytes
Muito simples, não muito criativo, usa
strtr
para substituir as vogais:Execute com
echo '<input>' | php -nF <filename>
ou Experimente online .fonte
argn
? Se sim, então isso não é válido; você precisaria passar a string como argumento e usar$argv1]
.-F
sinalizador, ele funciona com entrada na linha de comando. Nos documentos do PHP sobre as opções :-F --process-file PHP file to execute for every input line. Added in PHP 5.
A definição da variável Try it online é apenas porque algumas pessoas não têm o PHP instalado localmente, e eu não consegui fazer o-F
sinalizador funcionar no TIO.q / kdb +,
3633 bytesSolução:
Exemplos:
Explicação:
Descobrir o índice de vogais, adicionar um para avançar e avançar. Ainda acho que essa abordagem pode ser significativamente melhorada ...
Bônus:
Minha antiga solução de ** 36 bytes (()) que eu acho muito legal, mas preciso jogar as listas para torná-la competitiva:
fonte
Carvão , 35 bytes
Experimente online!
Método ingênuo.
Explicação:
fonte
PHP , 76 bytes.
Confira!
Este foi o mais curto que pude fazer isso em PHP.
fonte