Programe su frase favorita

28

Elija una cita o frase que tenga exactamente 5 palabras, como Programming puzzles and code golf!.

Escriba un programa que, cuando se agrega a sí mismo n veces, genera las primeras n + 1 palabras de su frase en orden.

Por ejemplo, si su código de programa era MYPROGy su frase era Programming puzzles and code golf!, ejecutando ...

  • MYPROG debería salir Programming
  • MYPROGMYPROG debería salir Programming puzzles
  • MYPROGMYPROGMYPROG debería salir Programming puzzles and
  • MYPROGMYPROGMYPROGMYPROG debería salir Programming puzzles and code
  • MYPROGMYPROGMYPROGMYPROGMYPROG debería salir Programming puzzles and code golf!

Anexar más de 4 veces no está definido, su programa puede hacer cualquier cosa.

Reglas

  • Su frase debe ser gramaticalmente significativa en inglés. Idealmente, debería estar correctamente capitalizado y puntuado.
  • Su frase puede tener cualquier longitud, pero su entropía, calculada por http://www.shannonentropy.netmark.pl/ , no puede ser inferior a 3.5 .
    (Pegue su frase, presione Calcular y busque la última H (X) .)
  • Su frase solo puede contener caracteres ASCII imprimibles (hexadecimal 20 a 7E). Su código solo puede contener ASCII imprimible y pestañas y líneas nuevas.
  • Su frase debe contener exactamente 5 palabras únicas y 4 espacios. Todos los no espacios cuentan como partes de palabras. Los espacios son los límites de la palabra. Puede que no estén al principio o al final; después de todo debería haber uno, excepto la última palabra.
  • La salida también debe contener un espacio entre palabras. El resultado en cada paso adjunto puede contener espacios finales pero no espacios iniciales.
  • Salida a stdout. No hay entrada

Tanteo

Su puntaje es la longitud en bytes de su programa inicial no agregado. (ej. MYPROGpuntajes 6)

Como se trata de código de golf, gana el puntaje más bajo.

Pasatiempos de Calvin
fuente
21
aww, los requisitos de entropía y singularidad matan mi idea de "búfalo" como una entrada.
Sparr
44
Me iba a divertir mucho en Piet hasta que "Su código solo pueda contener ASCII imprimible y pestañas y líneas nuevas". :(
Sp3000
3
@ Sp3000 Le invitamos a dar una respuesta honoraria. Me encantaría ver una solución de Piet :)
Calvin's Hobbies
Esta es la única situación en la que la pureza de Haskell es exactamente el problema ...
Rhymoid 05 de
Inglés significativo gramatical Demasiado claro lo que es "Inglés significativo gramatical" debido a las diferentes interpretaciones de gramatical y significativo.
MilkyWay90

Respuestas:

6

CJam - 24

"TheguywasnotI"Lm3<]S*:L

Pruébalo en http://cjam.aditsu.net/

Explicación:

Lmelimina las letras contenidas en L (inicialmente "") de "TheguywasnotI"
3<toma las primeras 3 letras
]recoge el contenido de la pila en una matriz se
S*une a la matriz usando el espacio como separador
:Lasigna la cadena resultante a L (también dejándola en la pila )

Versión anterior (28 bytes):

"He is but a dog."S/W):W=]S*

Explicación:

S/se divide por
W):Wincrementos de espacio W (inicialmente W = -1)
=obtiene la W'th palabra
]recoge el contenido de la pila en una matriz se
S*une a la matriz usando el espacio como separador

aditsu
fuente
Este lenguaje es realmente interesante. Como dicen, "Aprendes sobre un nuevo idioma todos los días" ... o algo así. ¡Buen trabajo!
Brobin
Aceptando esto en lugar de la respuesta igualmente corta de Dennis, ya que esto fue publicado primero.
Aficiones de Calvin el
28

Piet (respuesta honorífica)

ingrese la descripción de la imagen aquí

Serpentea hacia abajo, corriendo a la derecha por el azul y reingresando por el verde. Imprime "Las moscas de la fruta como un plátano".

Utilicé PietCreator para hacer esto, pero puedes probarlo aquí . Rehacer los programas de Piet es una molestia, así que comencé a 35x35 y continué de esa manera, lo que significa que usé muchos más codeles de los que necesitaba.

Versiones de tamaño real

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Sp3000
fuente
11

> <> (42)

Los peces son realmente la mejor mascota. Algunas personas mantienen los insectos como mascotas debido a una incomprensible falta de lógica. Este programa hace todo lo posible para razonar con esas personas.

!v'?od gub yna nac tahW;'00p!
<<|ov!
voo <

Tenga en cuenta que esto no es una nueva línea final del programa. La salida completa se invierte en la primera línea; la frase completa es "¿Qué puede hacer cualquier error?" (entropía 3.58418).

Explicación completa:

Este es uno de los programas> <> más divertidos que he escrito, ya que este es el primero que usa la reflexión. La primera línea es donde está la carne del programa.

!ves un no-op, ya que !hace que se omita la siguiente instrucción.

'?od gub yna nac tahW;' almacena la frase completa en la pila (está al revés porque cada letra se inserta en la pila en el orden escrito, por lo que debe invertirse para que salga bien).

00pes donde comienza a suceder la verdadera magia. Tenga en cuenta que no solo almacenó la frase, sino que también almacenó un ;. 00pinserta el carácter superior en la pila en el programa en la posición (0, 0), por lo que ahora el primer carácter del programa es a ;.

El final !omite ese punto y coma y mueve el cursor hacia v, lo que dirige el flujo del programa hacia abajo.

De aquí en adelante, todo es solo rutinas de impresión. Como no hay una nueva línea final, los anexos sucesivos del programa simplemente agregan las dos últimas líneas, en efecto, ya que la primera línea estará a la derecha de voo <y, por lo tanto, nunca se ejecutará.

Al final, el cursor se dirige hacia la parte inferior izquierda del programa y vuelve a la esquina superior izquierda, donde ;se insertó anteriormente, finalizando el programa.

Mike Precup
fuente
Hace un minuto, esto era técnicamente inválido, pero acabo de cambiar la especificación para que se permitan nuevas líneas (y pestañas) en el código (que es lo que quería originalmente).
Aficiones de Calvin
Oh, mi mal, perdí totalmente eso que se aplicaba a la fuente, no solo la frase. Me alegro de que esa fuera la intención, los programas> <> dependen bastante de las nuevas líneas.
Mike Precup
Si desea reducir esto un poco, puede usar una frase con 11 letras y sin caracteres repetidos, como "It is by a rope."Su frase repite caracteres, por lo que tiene una entropía menor de lo que podría.
isaacg
El problema es que cada salida básicamente tiene que tener la misma longitud para imprimir bien, ya que> <> no puede detectar espacios fácilmente. No he podido encontrar uno más corto.
Mike Precup
2
@isaacg Personalmente prefiero la frase de Mike;)
Calvin's Hobbies
10

Python 66

i='i'in dir()and i+1;print("Tfpcfhaialetgny"[i::5],end=" ."[i>3]);

Entropía: 3.61635

Ouput:

The fat pig can fly.

Gracias @JasonS y @grc por los consejos para acortar la parte de detección de variables.

Actualización: vea la respuesta de JasonS para un malvado truco envolvente que lo redujo a 55 bytes. :)

Vectorizado
fuente
i=locals().get('i',-1)+1;es -5 bytes
Jason S
¡Golpéame! Iba a usar i='i'in dir()and i+1. Editar: las reglas cambiaron.
grc
Bueno, ese es otro -4
Jason S
60 bytes con Python 2:i='i'in dir()and i+1;print"Tfpcfhaialetgny"[i::5]+" ."[i>3],
nyuszika7h
9

Python 3, 55 (bonificación 67)

# 55 bytes, H(X)=3.72, Based on bitpwner's 66. "Mix dog and cat fur."
i=0;print("Mdacfionauxgdtr"[i::5],end=" ."[i>3]);i+=1;i

# 67 bytes, H(X)=4.28. "Thanks for supporting Python development."
q=b"qx!%%0077C";a,b,*q=q;print((str(credits)*2)[49:][a:b],end='');q

# 60 bytes, H(X) = 3.51. "Fix the bed old pal"
s="Fixthebedoldpal";a,b,c,*s=s;print(a+b+c,end='. '[s>[]]);s

¿Quieres decir que se envuelve?

OK, alguna explicación sobre el n. ° 2 (spoilers)

  • creditses una python incorporada que contiene texto que me gustaría usar. Es de un tipo especial con un formato reprpara que pueda escribirlo en el intérprete interactivo y ver una buena salida, así que tengo que str()hacerlo. Pasé un poco de tiempo mirando las construcciones para esto, y "Gracias por apoyar el desarrollo de Python" como una frase era demasiado buena para dejarla pasar.

  • Como hay mucho texto y solo quiero mis 5 palabras, quiero almacenar las posiciones inicial y final de cada subcadena. Eso está en los bytes al principio. byteslos objetos en python3 actúan como matrices de enteros cuando usas operaciones de secuencia en ellos.

  • Pero el código solo puede contener caracteres imprimibles, así que tuve que encontrar un desplazamiento (49) que hiciera que todos mis valores de posición se imprimieran como caracteres.

  • "Gracias" está cerca del comienzo de la cadena, mientras que las otras palabras están más cerca del final, lo que significa que mis valores de posición estaban demasiado separados para que todos estuvieran en el rango imprimible. Multiplicar la cadena por 2 hace otra copia de "Gracias" que está más cerca de las otras palabras.

  • Tomar el [49:]segmento de la cadena es un byte de origen menos que agregar 49 a ambos, a y b.

  • La construcción utilizada en las tres respuestas es x=<value>;dostuff and increment;x. El seguimiento xno hace nada en absoluto, pero cuando se combina con la siguiente copia del código se convierte en lo xx=<value>que evita que xse sobrescriba el contador.

  • a,b,*q=q es el desempaquetado de secuencia de Python 3 perfectamente normal.

Jason S
fuente
+1. Truco malvado. :) ¿Puedo actualizarlo a mi respuesta?
Vectorizado el
Bueno, usé tu medio
Jason S
Actualmente me estoy maravillando de tu segunda respuesta. Tantos trucos empacados en él.
Vectorizado el
2
¿Me puede decir cómo funciona la segunda respuesta?
sajas
8

Pitón 2 (37)

Después de que Sarah se convirtió en presidenta de su capítulo local de Mensa, se convirtió en un foco de atención romántica de hombres que buscaban una pareja inteligente. En cada cita, Sarah intentaba establecer una conexión personal, pero los hombres simplemente la investigaban sobre preguntas filosóficas abstrusas. Frustrada porque a nadie le importaba su lado emocional, exclamó ...

i=4;print"mniIMeosQy!t"[i::5],;i-=1;i

Salida:

My
My IQ
My IQ is
My IQ is not
My IQ is not me!

La entropía es H(x)=3.5exactamente.

Crédito a Jason S., cuya respuesta básicamente usé al por mayor. El iitruco envolvente es maravilloso.

xnor
fuente
¡Agradable! Accesorios para encontrar una frase más corta con la entropía correcta. Me di por vencido. También olvidé que printpy2 antepone espacios en lugar de agregarlos
Jason S
¡Esto es sorprendentemente corto para una respuesta de Python! Bien hecho.
isaacg
Puede eliminar la coma que tiene en el medio de su programa para desplegar hasta 36 caracteres.
xleviator
8

C - 65

Comentario de abuso :)

char*z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//

Debido a esto, las nuevas líneas son importantes y el código debe agregarse de la siguiente manera:

char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//...
Allbeert
fuente
¡Esta es una buena solución!
MilkyWay90
4

CJam, 24 bytes

"LwOtmiaKoezs"W):W>5%]S*

Si se ejecuta cinco veces, imprime que Liz estuvo bien para mí . Puntuación no incluida, lo siento.

Cómo funciona

"LwOtmiaKoezs"  " Push that string. ";
W):W            " Push W (initially -1), increment and save the result in W. ";
>               " Shift that many characters from the string. ";
5%              " Select every fifth character, starting with the first. ";
]S*             " Wrap the stack in an array and join its strings using spaces. ";
Dennis
fuente
Buena idea, aunque la frase es un poco débil: p
aditsu
Lo admito, pero tenía que ser xxx xxx xx xx xx , sin letras repetidas. Esa es la única oración que se me ocurrió que tenía al menos un poco de sentido ...
Dennis
¿Qué tal "Sun estuvo bien para mí"? También puede reemplazar "Sol" con otra palabra o nombre.
aditsu
Eso está mejor, gracias.
Dennis
3

Pyth , 32

p?kqZ4d@P"It is by a rope."dZ~Z1

Frase: "Es por una cuerda".

Entropía: 3.5

Cómo funciona:

p significa imprimir con separador especificado.

El primer argumento ?kqZ4d, da el separador. ?kqZ4dsignifica k if Z==4 else d. kes '', mientras des ' '.

El segundo argumento, el valor a imprimir, se genera dividiendo ( P) en el espacio ( d), y la indexación en esa lista ( @) en Z.

Finalmente, Zque se inicializa automáticamente a 0, se incrementa en 1 ( ~Z1).

isaacg
fuente
2
No podría pensar en un contexto en el que esta fase encajaría naturalmente en ^^
flawr
1
@flawr "¿Dónde viví el balón?" "Es por una cuerda".
isaacg
3

Golfscript, 53

Este fue divertido.

{'1'-print}:puts;.'You; are; not; a; duck.'';'/\,=\1+

Frase: "No eres un pato". (lo cual es completamente cierto; entropía 3.5110854081804286)

Explicación:

La pila comenzará como ''en la primera "ejecución" (ya que no se proporciona STDIN). '1'Se adjuntan a esto para indicar cuántas veces se ha pegado el código.

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: '' ''
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (0)
                              # Stack: '' [words] 0
=                             # Stack: '' 'You'
\1+                           # Stack: 'You' '1'

Ahora, qué sucede en la segunda carrera:

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: 'You' '1' '1'
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (1)
                              # Stack: 'You' '1' [words] 1
=                             # Stack: 'You' '1' ' are'
\1+                           # Stack: 'You' ' are' '11'

Y así.

"Pero", estás pensando, "¿cómo consigues que los 1 no salgan?" Ah, esa es la parte divertida de hacky. Golfscript implementa puts(que se llama cuando finaliza el programa) así:

{print n print}:puts;

Simplemente lo cambié a

{'1'-print}:puts;

Para que los 1s se supriman de la salida final.

Pomo de la puerta
fuente
3

J - 42 char

Podría elegir una frase más corta, pero ¿por qué? No sería mi favorito.

(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '

Esto funciona debido a la dualidad mónada / díada de J: cada verbo puede invocarse como una mónada, con un argumento a la derecha, o como una díada, con un argumento a la izquierda y otro a la derecha.

Considere la siguiente sesión con J REPL:

   'You multiplied 6 by 9. '
You multiplied 6 by 9.
   'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
You multiplied 6 by 9. You multiplied 6 by 9.
   ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '   NB. break into words
+---+----------+-+--+--+---+----------+-+--+--+
|You|multiplied|6|by|9.|You|multiplied|6|by|9.|
+---+----------+-+--+--+---+----------+-+--+--+
   (#\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '             NB. count off
1 2 3 4 5 6 7 8 9 10
   (6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '         NB. mod 6
1 2 3 4 5 0 1 2 3 4
   (1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
1 0 0 0 0 0 1 0 0 0
   (#~ 1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '  NB. select
+---+----------+
|You|multiplied|
+---+----------+
   (#~ 1 = 6 | #\)&.;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. ' NB. undo ;:
You multiplied

Allí, ,se trata como una diada, porque está entre dos argumentos, y (#~1=6|#\)&.;:es una mónada porque no tiene argumento izquierdo. Entonces, si tuviéramos un verbo que pudiera actuar como ,cuando sea diádico y (#~1=6|#\)&.;:cuando sea monádico, estaríamos listos.

Como ya habrás adivinado, tal conjunción existe y parece :. Monádico f :ges equivalente a f, y es equivalente a gcuando diádico. Esto resuelve el problema.

Ejemplos, que puedes probar por ti mismo en tryj.tk :

   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by 9.

Y sí, la naturaleza de la inversa de ;:hace que no haya espacios finales.

Utilizando It is by a rope.como la frase da 35 Char: (#~1=6|#\)&.;: :,'It is by a rope.'. No necesitamos el espacio final como lo hacemos para mi oración, por ;:razones arcanas .

algoritmo de tiburón
fuente
3

BBC Basic, 40

Incluye una nueva línea. Sería 30 si las palabras clave pudieran considerarse como tokenizadas en lugar de ASCII.

Cogí a mi novia durmiendo con el lechero, así que la dejé y me acuesto con su hermana por venganza. As my ex do I!(cinco "palabras" de dos letras con caracteres únicos) no era suficiente entropía, así que agregué el smiley al final para que la entropía fuera exactamente 3.5. Después de todo, en realidad tengo una vida bastante normal, no una extraña trama de telenovela.

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

Repitiendo el programa 5 veces obtenemos

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

Solo READse ejecutan las 5 declaraciones, y los primeros 5 elementos de datos se leen desde la primera DATAdeclaración. El resto de los datos es redundante. Salida:

  (once)
  As 
  (5 times)
  As my ex do I:-P 
Level River St
fuente
2

Rubí, 50

puts'The fat pig can fly.'[0..File.size($0)/12-1]#

Esto usa su propia longitud para determinar cuántas palabras imprimir. Sus repeticiones se hace caso omiso de otra manera por que termina en el carácter de comentario, #. Frase prestada de Bitpwner : es muy conveniente tener una frase corta con el mismo número de letras en cada palabra.

Dado que cada palabra + final es de 4 caracteres, la fórmula sería, por ejemplo, para un programa de 56 longitudes (File.size($0)/56)*4 - 1, pero puedo dividir con anticipación 56/4 = 14, por lo tanto File.size($0)/14 - 1, guardar algunos caracteres. 50no es un múltiplo de 4, pero 12está lo suficientemente cerca para el rango necesario.

Tim S.
fuente
2

Chip , 165 + 3 = 168 bytes

+3 para bandera -w

| ,z `Z`Z  `Z
| |ZZZ>Z>ZZZ>ZZZZ
>((((((((((((((((
|)-)))-)-)))-))))g
|)d)xx-x-)xx-))x)e
||b+))-x-x))-x)xc
|`v))xa(-x(x-((^d
|*`.))d| b | b
|Z~<b( |~Zf|
>~T| | |   |

"Gané un traje rojo" (3.5) (en realidad no he ganado tal cosa) (... todavía)

Observe la nueva línea final, por lo que la copia concatenada aparece debajo del código existente.

Pruébalo en línea! (el original) ¡
Pruébelo en línea! (el original, más las cuatro copias)

Esto es un poco enredado. Resultó que lo más complicado fue la condición de terminación. (Mi primera iteración imprimió la (s) palabra (s), seguida de una secuencia interminable de bytes nulos ...).

Cómo funciona

Primero la frase:
12 caracteres únicos + 4 espacios = exactamente 3.5 entropías.

Y el código:
cada copia imprime la primera palabra, luego le dice a la copia de abajo que imprima la siguiente palabra. Si solo hay una instancia, no hay una segunda copia, por lo que no se imprime nada excepto la primera palabra.

Si hay dos copias, ambas imprimirán la primera palabra simultáneamente (los bytes se OR juntan para que esté bien), entonces solo la segunda copia imprimirá la segunda palabra.

Si las cinco copias están presentes, todas imprimirán la primera palabra, etc., etc., y la quinta copia imprimirá la última palabra por sí misma.

El circuito de terminación terminará el programa tan pronto como todas las copias no se impriman activamente.

Phlarx
fuente
1

Rubí, 63

+1;puts"See Dick and Jane run!"[/(.*?( |!)){#$.}/]if($.+=1)==$.
histocrat
fuente
1

Perl, 37

print qw(My IQ is not me!)[$i++].' ';

Similar a lo que tenía la casualidad, pero aprovechando el qw de perl para salvar algunos personajes más.

usuario0721090601
fuente
1

Rebmu mensaje longitud + 27

Si tuviéramos que ir con "¡Mi coeficiente intelectual no soy yo!" eso sería 43. Pero apoyo este mensaje:

uV?'s[S[{The}{rebellion}{against}{software}{complexity.}]]proTKsPROsp

Equivalente Rebol / Rojo:

unless value? 's [
    s: [{The}{rebellion}{against}{software}{complexity.}]
]

print/only take s
print/only space

Rebol tiene 3 condicionales básicos: SI, Y A MENOS. A MENOS es equivalente a SI NO, pero puede ser más claro: "Haga siempre lo siguiente A MENOS QUE esta condición sea verdadera".

En este caso, la condición es que probamos para ver si el símbolo S ha recibido un valor en el contexto actual. Tenemos que usar una cita, porque intentar usar una S sin comillas en una expresión condicional lo evaluaría y posiblemente generaría un error. ( value?No cita su parámetro por defecto porque es posible que desee tener el símbolo que se está comprobando sea en una variable, por ejemplo, sym: 'sa continuación, if value? sym [...]en realidad comprobar si S se definió, no SYM)

Solo la primera pasta del programa asignará la serie de cadenas a S. Las pastas sucesivas tomarán una cadena del encabezado de la serie y la pasarán a IMPRIMIR / SOLAMENTE, que imprimirá su argumento sin agregar un avance de línea.

(Nota: IMPRIMIR / SOLO es una forma sugerida de reemplazo de decir PRIN, que se está considerando en Rebol 3 y Rojo; ahora se está probando un reemplazo de impresión en Rebmu).

Dr. Rebmu
fuente
1

AHK , 44 bytes

i++
Send % SubStr("He is an OK ex",i*3-2,3)

Tenga en cuenta la nueva línea al final. Lo único inteligente aquí es que la cadena son todas palabras de 3 letras, por lo que no tenemos que dividir nada. En cambio, simplemente extraemos una subcadena basada en i. La salida es a la pantalla activa como si estuviera escrita en el teclado.

Tostadas de ingeniero
fuente
0

Javascript (53)

Tomé el texto de aditsu ya que no estoy haciendo nada elegante con el texto, por lo que las palabras elegidas son algo irrelevantes para la solución (excepto el conteo de bytes).

var i=i|0;alert("He 0is 0but 0a 0dog".split(0)[i++]);

¿ alertCuenta en este caso? Editar: Leer las reglas probablemente no, ya que no estoy uniendo las cadenas con espacios. Agregaré espacios para que sea justo.

También tenga en cuenta que lo caro vares realmente relevante en este caso.

Ingo Bürk
fuente
¿Alguien puede explicar por qué var i|=0;NO funciona aquí?
flawr
@flawr No puedes hacer |=o similar con var. Sin var, obtienes un ReferenceError: i is not defined. var i=i|0se expande a var i=undefined|0, y undefined|0es aparentemente 0.
nyuszika7h
Esto funciona debido a la elevación. var i=i|0es equivalente a var i;i=i|0. Es por eso que no obtienes el error de referencia. La razón por la que se establecerá en 0 la primera vez es lo que dijo @ nyuszika7h.
Ingo Bürk
1
Pero esto alertará a las palabras por separado.
orgulloso Haskeller
0

Perl, 43 56

print substr'Mine was not Red 5!',4*$i++,4;

Acepto que no puedo ganar este. Mi intento original explica por qué:

@a=('This',' code',' is',' too',' long.');print$a[$i++];
competitivo
fuente
0

Lua, 77

Una solución bastante simple:

i=(i or 0)+1;io.write((i==1 and""or" ")..("Thebigfoxwasup."):sub(3*i-2,3*i))

(H (X) = 4.23)

ahuff44
fuente
0

Javascript, 138

g=this;clearTimeout(g.t);g.i|=0;i++;g.t=setTimeout(
    function(){console.log(["I'll","sleep","when","I'm","dead."].slice(0,i).join(' '))},0);

(la nueva línea adicional se agrega solo para facilitar la lectura)

Impresiones I'll sleep when I'm dead. Utiliza un temporizador para asegurarse de que la salida solo se imprima una vez

aebabis
fuente
0

Pure Bash, 51 bytes

a=(All you need is Love!)
printf "${i:+ }${a[i++]}"

H (X) = 3.59447

Esto podría reducirse un poco más al cazar furtivamente una de las frases más cortas, pero estoy feliz de seguir con Descartes la cita más famosa de Lennon de . (Lo siento @ Descartes, pero todas las palabras deben ser únicas).

Salida:

$ ./phrase.sh 
All$ cat phrase.sh phrase.sh phrase.sh > phrase3.sh
$ chmod +x phrase3.sh 
$ ./phrase3.sh 
All you need$ 
$ cat phrase.sh phrase.sh phrase.sh phrase.sh phrase.sh > phrase.sh
$ chmod +x phrase5.sh 
$ ./phrase5.sh 
All you need is Love!$ 

Se encarga de insertar espacios entre palabras, pero no espacios iniciales o finales.

Se basa en el hecho de que en bash, las variables indefinidas, cuando se expanden como cadenas tienen el valor "", pero cuando se expanden aritméticamente tienen el valor 0.

Trauma digital
fuente
Las 5 palabras deben ser únicas ...
trichoplax
Dado que su código parece lo suficientemente versátil como para manejar cualquier frase de 5 palabras, estoy seguro de que puede pensar en una que tenga la entropía requerida de 3.5 (demasiadas letras dobles en esta ...).
trichoplax
@ githubphagocyte Esperaba que me dieras el beneficio de redondear ;-) Ok, lo arreglé con un extra !ahora, parece que es el truco.
Trauma digital
0

PHP 89 78 char

Es un poco detallado, y definitivamente no ganará, pero fue divertido de todos modos. Esto es lo que se me ocurrió

Frase:

code golf is pretty fun

Entropía = 3.82791

Código:

<?
$i=(isset($i)?$i+1:0);
$w=["code","golf","is","really","fun"];
echo $w[$i].";

Golfizado:

<?$i=(isset($i)?$i+1:0);$w=["code","golf","is","really","fun"];echo $w[$i].
Brobin
fuente
0

Python3 - 122 bytes

Abra las puertas de la bahía de pod [HAL]

Creo que ganaré un poco de credibilidad nerd con este. Si solo la pregunta permitiera una palabra más ...

Lo que hace mi programa es tomar el nombre del archivo (p.py es la base) y verifica cuántas veces se repite el nombre de la base. Luego toma rebanadas de una cadena de nveces. nsiendo el número de ps en el nombre del archivo.

import sys,re
for i in range(len(re.findall(re.compile('p'),sys.argv[0]))):print('Otpbdphoaoeedyon   r    s'[i::5],end='')

~ $ python p.py
Open

~ $ python pp.py
Open the

~ $ python ppp.py
Open the pod

~ $ python pppp.py
Open the pod bay

~ $ python ppppp.py
Open the pod bay doors

El beneficio de la expresión regular es que el programa puede llamarse como quiera y seguirá funcionando (siempre que cambie el nombre base en el código): mi programa original se llamaba golfed.py.

Decaimiento Beta
fuente
0

05AB1E , 21 bytes (sin competencia)

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?

Pruébalo en línea!

Usos:

This works for literally anything. 
H(x) = 4.02086

Explicación

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?
“€Œ‰‹€‡Øš‹É.“ª        # Pushes "This works for literally anything."
              #       # Split on spaces
               ¾è     # get element at index of counter_variable (default 0)
                 ¼    # Increment the counter_variable
                  ?   # Print the selected element
                   ð? # Prints a space
Datboi
fuente
No vi esto, publicado casi lo mismo con “€í€Ü€…‚¿‹·“jeje
Magic Octopus Urn
0

SmileBASIC, 54 bytes

DATA"Does"," anybody"," have"," a"," key?
READ W$?W$;

Hubiera preferido "La arena se puede comer". pero eso falla la prueba de entropía de alguna manera. Por supuesto, podría haber elegido una frase más corta, pero eso es aburrido.

La READpalabra clave lee un valor DATAy lo almacena en una variable. Al usar READnuevamente obtendrá el siguiente elemento, y así sucesivamente.

12Me21
fuente