Seu objetivo é escrever um programa que imprima o seguinte poema exatamente como aparece aqui:
There was an old lady who swallowed a fly.
I don't know why she swallowed that fly,
Perhaps she'll die.
There was an old lady who swallowed a spider,
That wriggled and iggled and jiggled inside her.
She swallowed the spider to catch the fly,
I don't know why she swallowed that fly,
Perhaps she'll die.
There was an old lady who swallowed a bird,
How absurd to swallow a bird.
She swallowed the bird to catch the spider,
She swallowed the spider to catch the fly,
I don't know why she swallowed that fly,
Perhaps she'll die.
There was an old lady who swallowed a cat,
Imagine that to swallow a cat.
She swallowed the cat to catch the bird,
She swallowed the bird to catch the spider,
She swallowed the spider to catch the fly,
I don't know why she swallowed that fly,
Perhaps she'll die.
There was an old lady who swallowed a dog,
What a hog to swallow a dog.
She swallowed the dog to catch the cat,
She swallowed the cat to catch the bird,
She swallowed the bird to catch the spider,
She swallowed the spider to catch the fly,
I don't know why she swallowed that fly,
Perhaps she'll die.
There was an old lady who swallowed a horse,
She died of course.
O texto deve aparecer exatamente como aqui, e o menor número de caracteres vence.
Editar: seu programa pode não acessar a Internet.
code-golf
kolmogorov-complexity
Ethan Roseman
fonte
fonte
Respostas:
Perl 5.10,
392384372235369 (ASCII) / 234 (Unicode)A versão ASCII mais curta disso possui 369 caracteres:
Começou a partir deste programa base:
A idéia central é manter o fim da rima e o começo da próxima
$trail
, aumentando-a à medida que avançamos. Isso não é trivial pela necessidade de um caso especial para o primeiro uso e pela tentativa de reutilizar a variável nome do animal, mesmo na frase específica do animal. Outras otimizações incluem:$_
para$buf
reduzir ainda mais a maioria das operações de substituição (o uso de@_
é por força do hábito e não ganha nada mais do que qualquer outro personagem)$"
variável)' swallow'
e'iggled '
\n
em literais de string substituídos por novas linhas reaisTodos, exceto a última otimização, produzem isso:
Além disso, esse golfe é vítima do problema de codificação subespecificado. Como, a partir de agora, conta caracteres individuais em vez de bytes em uma codificação especificada, há um grande ganho a ser alcançado ao decodificar a fonte do programa do UCS2 antes de iniciar. O resultado final não é mais muito legível, mas é curto, tudo bem. (234 caracteres, contados como uma diferença do
perl -E''
normal) (tive que incluir a nova linha à direita para torná-la UCS2 válida)Ainda bem que havia muito para jogar golfe antes de recorrer ao Unicode, ou não seria muito divertido.
Editar:
não consigo encontrar uma maneira de copiar / colar a versão de 234 caracteres neste navegador, por isso estou deixando a versão de 235 caracteres. Vou consertar esta noite, quando coloco minhas mãos em uma prancheta real com reconhecimento de UTF8.encontrou uma maneira. Quase à prova de ideona.fonte
Perl,
12094 caracteresContagem inclui chamada para o intérprete.
Você disse para reproduzi-lo exatamente como faz aqui;)
NB
Essa solução foi o que levou à restrição de 'não Internet'. Que seja uma lição para futuras especificações de perguntas sobre código-golfe :)
fonte
LWP::Simple
faz parte do núcleo do Perl, pelo menos na v5.12.3.Python 3.x: 407 caracteres
fonte
JavaScript (422)
Funciona nas versões do intérprete SpiderMonkey usadas pelo anarchy golf e pelo ideone .
Um pouco mais bem formatado:
fonte
0
truque para inicializari
a0
em apenas 2 bytes. Tenha +1Vim, 373 pressionamentos de tecla
Engraçado como é exponencial essa luta.
fonte
C (gcc) ,
429424 bytes-5 bytes graças ao ceilingcat
Experimente online!
fonte
Ruby, 436 caracteres
fonte
Scala (
706619599550 caracteres)Usar o mapa em vez do foreach permite espremer mais caracteres ... No codegolf, não nos importamos com desempenho, elegância (não mutabilidade) ou lógica ...
fonte
tinta ,
370369354 bytesExperimente online!
Explicação
fonte
Haskell,
515498A pontuação não conta novas linhas e espaços adicionados para apresentação.
Ungolfed:
fonte
(++)
com um identificador mais curto pode ser uma boa ideia.#
operador ou algo semelhantePython, 484
Ok, eu fiz isso, mas era bem chato ...
A última frase é sempre com "fly", então alguns caracteres foram removidos ...
Versão menos golfe:
fonte
C, por diversão (561 caracteres)
A pontuação não conta novas linhas e espaços adicionados para apresentação.
Obrigado a JB por suas melhorias!
fonte
&
e[]
?&
s ao usar ponteiros e não funcionou: P. JB, não conheço um método que não exija indexação (e use ainda mais caracteres).C #, 556 caracteres
fonte
Perl, 489 caracteres
fonte
PHP , 344 bytes
Experimente online!
PHP , 405 bytes
Experimente online!
fonte
Chiclete, 255 bytes
fonte
Python 2 ,
453 442 427387 bytes£
usado antes era um caractere de byte duplo !!swallow
taquigrafiain
e"..."
removidoExperimente online!
fonte
~
vez de£
(que tem dois bytes, desde que não seja ASCII).in
e uma string literal.Groovy, 475 bytes
Nada muito interessante, apenas muita interpolação de cordas. Dicas de golfe neste são bem-vindas!
fonte
tcl, 451 bytes
Disponível para execução em: http://rextester.com/live/GXF89639 (10ª tentativa)
fonte
Wolfram Language (Mathematica) , 295 bytes
Experimente online!
Esta solução é um descompressor de 46 bytes que
BinaryDeserialize@ByteArray@ToCharacterCode@"..."
atua em uma matriz de 248 bytes, disfarçada como uma sequência ASCII. Transferir essa string entre diferentes programas é um pouco complicado. O TIO, por exemplo, aumenta essa solução em 416 bytes usando a codificação UTF-8 em vez de manter a string ASCII. Para obter a solução mínima de 295 bytes, salve o texto em uma variáveltext
e executeem seguida, execute o arquivo gerado na linha de comandos com
fonte
Caracteres Java 758
Aqui está o meu esforço Java (758 caracteres)
fonte
Java, 655 bytes
Esta é uma versão em golf desta resposta . Há mais de 100 bytes salvos em pequenas coisas.
fonte
public
podem ser removidas;class M{public static void main
pode serinterface M{static void main
;String S=...,T=...,e=...;String[]a=...;String[]q=...;
pode serString S=...,T=...,e=...,a[]=...,q[]=...;
;for(int i=0;...)...for(int j=i
pode serfor(int i=0,j;...)...for(j=i
;for(j=i;j>0;j--)...a[j]...a[j-1]
pode serfor(j=i;j>0;)...a[j]...[a--j]
;static void p(String v){...}
pode serstatic<T>void p(T v){...}
( 623 bytes ) Experimente online.Carvão ,
369366 bytesExperimente online!
Link para a versão detalhada do código.
fonte
PowerShell , 512 bytes
Experimente online!
Os nossos agradecimentos a @Chirishman pela sua publicação .
fonte
Stax , 195 bytes
Execute e depure
Descompactado, não jogado e comentado, parece com isso.
Execute este
fonte
PowerShell , 349 bytes = Script: 9 + Arquivo: 340
Experimente online!
O script do Powershell para criar o arquivo
t
(consulte o TIO):fonte