Su objetivo es escribir un programa que imprima el siguiente poema exactamente como aparece aquí:
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.
El texto debe aparecer exactamente como aparece aquí, y gana la menor cantidad de caracteres.
Editar: es posible que su programa no acceda a Internet.
code-golf
kolmogorov-complexity
Ethan Roseman
fuente
fuente
Respuestas:
Perl 5.10,
392384372235369 (ASCII) / 234 (Unicode)La versión ASCII más corta de esto tiene 369 caracteres de longitud:
Comenzó desde este programa base:
La idea central es mantener el final de la rima y el comienzo de la siguiente
$trail
, aumentando a medida que avanzamos. No es trivial por la necesidad de un caso especial para el primer uso, y el intento de reutilizar la variable del nombre del animal incluso en la frase específica del animal. Otras optimizaciones incluyen:$_
para$buf
acortar aún más la mayoría de las operaciones de sustitución (el uso@_
es por la fuerza del hábito y no gana nada más que cualquier otro personaje)$"
variable)' swallow'
y'iggled '
\n
en literales de cadena reemplazados por líneas nuevas realesTodos menos la última optimización producen esto:
Además, este golf es víctima del problema de codificación no especificado. A medida que, a partir de ahora, cuenta caracteres individuales en lugar de bytes en una codificación específica, se puede lograr una gran ganancia decodificando la fuente del programa desde UCS2 antes de comenzar. El resultado final ya no es muy legible, pero es corto, de acuerdo. (234 caracteres, contados como una diferencia de
perl -E''
lo habitual) (tuve que incluir la nueva línea final para que sea válida UCS2)Una buena cosa era mucho golf antes de recurrir a Unicode, o no sería muy divertido.
Editar:
no puedo encontrar una manera de copiar / pegar la versión de 234 caracteres en este navegador, así que dejo la versión de 235 caracteres. Arreglará esta noche, cuando tenga en mis manos un portapapeles real compatible con UTF8.encontre una forma. Casi a prueba de ideonas.fuente
Perl,
12094 caracteresEl recuento incluye una llamada al intérprete.
Dijiste reproducirlo exactamente como lo hace aquí;)
nótese bien
Esta solución es lo que provocó la restricción de "no Internet". Que sea una lección para futuras especificaciones de preguntas de código de golf :)
fuente
LWP::Simple
es parte del núcleo de Perl, al menos en v5.12.3.Python 3.x: 407 caracteres
fuente
JavaScript (422)
Funciona en las versiones de intérprete de SpiderMonkey utilizadas tanto por anarchy golf como por ideone .
Un poco más bien formateado:
fuente
0
truco para inicializari
a0
en tan sólo 2 bytes. Tener un +1Vim, 373 pulsaciones de teclas
Es curioso lo exponencial que es la lucha.
fuente
C (gcc) ,
429424 bytes-5 bytes gracias a ceilingcat
Pruébalo en línea!
fuente
Ruby, 436 caracteres
fuente
Scala (
706619599550 caracteres)Usar el mapa en lugar de foreach permite exprimir más caracteres ... En codegolf, no nos importa el rendimiento, la elegancia (no mutabilidad) o la lógica ...
fuente
tinta ,
370369354 bytesPruébalo en línea!
Explicación
fuente
Haskell,
515498La puntuación no cuenta nuevas líneas y espacios agregados para la presentación.
Sin golf:
fuente
(++)
con un identificador más corto podría ser una buena idea.#
operador o algo similarPython, 484
Ok, lo hice pero fue bastante aburrido ...
La última oración es siempre con "volar", por lo que se eliminaron algunos caracteres ...
Versión menos golfizada:
fuente
C, por diversión (561 caracteres)
La puntuación no cuenta nuevas líneas y espacios agregados para la presentación.
¡Gracias a JB por sus mejoras!
fuente
&
y[]
?&
s cuando usaba punteros y no funcionó: P. JB, no conozco un método que no requiera indexación (y use aún más caracteres).C #, 556 caracteres
fuente
Perl, 489 caracteres
fuente
PHP , 344 bytes
Pruébalo en línea!
PHP , 405 bytes
Pruébalo en línea!
fuente
Chicle, 255 bytes
fuente
Python 2 ,
453 442 427387 bytes£
!swallow
taquigrafíain
y"..."
eliminadoPruébalo en línea!
fuente
~
lugar de£
(que tiene dos bytes de longitud, ya que no es ASCII).in
y un literal de cadena.Groovy, 475 bytes
Nada demasiado interesante, solo mucha interpolación de cadenas. ¡Los consejos de golf en este caso son bienvenidos!
fuente
tcl, 451 bytes
Disponible para ejecutarse en: http://rextester.com/live/GXF89639 (10º intento)
fuente
Wolfram Language (Mathematica) , 295 bytes
Pruébalo en línea!
Esta solución es un descompresor de 46 bytes que
BinaryDeserialize@ByteArray@ToCharacterCode@"..."
actúa sobre una matriz de 248 bytes disfrazada como una cadena ASCII. Transferir esta cadena entre diferentes programas es un poco complicado. TIO, por ejemplo, explota esta solución en 416 bytes usando la codificación UTF-8 en lugar de mantener la cadena ASCII. Para obtener la solución mínima de 295 bytes, guarde el texto en una variabletext
y ejecuteluego ejecute el archivo generado en la línea de comandos con
fuente
Java 758 caracteres
Aquí está mi esfuerzo de Java (758 caracteres)
fuente
Java, 655 bytes
Esta es una versión de golf de esta respuesta . Hay más de 100 bytes guardados en cosas menores.
fuente
public
se pueden quitar;class M{public static void main
puede serinterface M{static void main
;String S=...,T=...,e=...;String[]a=...;String[]q=...;
puede serString S=...,T=...,e=...,a[]=...,q[]=...;
;for(int i=0;...)...for(int j=i
puede serfor(int i=0,j;...)...for(j=i
;for(j=i;j>0;j--)...a[j]...a[j-1]
puede serfor(j=i;j>0;)...a[j]...[a--j]
;static void p(String v){...}
puede serstatic<T>void p(T v){...}
( 623 bytes ) Pruébelo en línea.Carbón ,
369366 bytesPruébalo en línea!
Enlace a la versión detallada del código.
fuente
PowerShell , 512 bytes
Pruébalo en línea!
Gracias a @Chirishman por su publicación .
fuente
Stax , 195 bytes
Ejecutar y depurarlo
Desempaquetado, sin golf y comentado, se ve así.
Ejecute este
fuente
PowerShell , 349 bytes = Script: 9 + Archivo: 340
Pruébalo en línea!
El script de Powershell para crear el archivo
t
(ver TIO):fuente