Algunas personas aquí son probablemente ávidos lectores de XKCD. Entonces, me imagino que los desafiaría a hacer algo que Megan puede hacer fácilmente: crear un script que genere miles de parábolas tranquilizadoras sobre lo que las computadoras nunca pueden hacer.
Tu guion
- Se puede escribir en cualquier idioma.
- Debe tener código de golf
- Debe tomar una entrada (
stdin
o el equivalente de su idioma) en el número de parábolas que escupirá (puede suponer que esto no excederáMAX_INT
o equivalente). - Producirá una serie de parábolas generadas aleatoriamente .
Las parábolas son las siguientes.
- Comienza con
'Computers will never '
- A continuación, uno de los 16 verbos en inglés únicos que puede elegir libremente para optimizar su programa, pero debe incluir
code-golf
yunderstand
. - A continuación, uno de los 16 sustantivos únicos en inglés que, una vez más, puede elegir libremente para optimizar su programa, pero debe incluir
a salad
yan octopus
. - A continuación, una de las 16 cláusulas únicas en inglés que puede elegir libremente para optimizar su programa, pero debe incluir
for fun
yafter lunch
. - Termina con un carácter de nueva línea (
\n
o equivalente)
Entonces, por ejemplo, si la entrada es 2
, una salida válida sería
Computers will never code-golf a salad for lunch
Computers will never hug a tree in vain
El tamaño del programa se cuenta en bytes, no en caracteres (por lo que no hay galimatías unicode). Las lagunas estándar no están permitidas.
Este es mi primer desafío, así que si debo hacer algunos cambios obvios, comente.
Editar: Estoy contemplando restar el tamaño del diccionario del conteo de bytes, para alentar la 'compresión' del diccionario. Veré en futuras respuestas si esto es remotamente factible; si es así, puede contar con un bono.
Respuestas:
CJam,
238232 (o 209) bytesUtiliza muchos verbos / sustantivos / cláusulas de respuestas ya publicadas, pero algunas también son nuevas. Tengo base convertida los caracteres para eliminar algunos bytes adicionales.
La cadena convertida base puede jugarse 24 bytes más (para obtener una solución de 209 bytes ; tenga en cuenta que debe considerar el recuento de caracteres en lugar del recuento de bytes, ya que todos los caracteres tienen un código ASCII de menos de 255 pero el sitio aún considera que algunos tienen unicode ) pero quería que la cadena constara solo de caracteres ASCII imprimibles.
Solo como referencia, aquí está la versión de 209 bytes:
Toma el número de líneas para imprimir desde STDIN como:
Salida:
Pruébalo en línea aquí
fuente
Aquí hay un enfoque ligeramente diferente:
Python,
368308297bytesEDITAR, en realidad lo jugué esta vez. Afeitado de 60 caracteres.
Aquí está el truco de golf del que estoy más orgulloso:
¡Ni siquiera sabía que Python podría hacer eso! Aquí hay una explicación más simple:
asigna a y b a 0 y 1, y luego a 1 y 2, y luego a 2 y 3.
Esto utiliza la biblioteca de lingüística de NodeBox para generar una lista de verbos / sustantivos / cláusulas, y luego los selecciona aleatoriamente.
Esta biblioteca no es tan buena para generar palabras aleatorias (de ahí los 368 bytes), pero lo bueno de este enfoque es que obtienes algunas parábolas tranquilizadoras bastante aleatorias. Esto es lo que quiero decir.
Pero bueno, no creo que el programa de nadie más genere el dicho: "Las computadoras nunca deslumbrarán a un fanático de los animales por el pastel de ceniza".
Aquí hay una versión sin golf (574 bytes):
Y por último pero definitivamente no menos importante, aquí están algunas de mis parábolas tranquilizadoras favoritas, que predigo que se convertirán en frases populares en los próximos 10-15 años.
y mi favorito personal:
fuente
from random import choice as C
podría serfrom random import*;C=choice
for i in ' '*(something)
para que pueda guardar trivialmente dos bytes de eliminar el espacio entrein
y' '
JavaScript ES6, 331
336bytesMostrar fragmento de código
Escogí palabras que funcionan como verbos y sustantivos para acortar la lista, pero avíseme si eso no está permitido. Pruébelo más arriba usando fragmentos de pila (el código allí ha sido formateado para usar ES5) o en http://jsfiddle.net/5eq4knp3/2/ . Aquí hay un ejemplo de salida:
fuente
s
para saltar más allá de las otras partes del discurso en la lista. Las dos tildes no son operadores bit a bit, y solo funcionan como una forma más corta de hacerloMath.floor()
.r=s=>12
es lo mismo quefunction r(s){return 12}
, solo que más corto. También vea los documentos en MDN .~~
es algo así como unMath.floor
(pero se comporta de manera diferente para los números negativos), y=>
es una definición de función de estilo ES6 con un límitethis
.Python -
390 385383Salida de ejemplo aleatorio:
fuente
Perl - 366
Aquí hay una prueba:
fuente
CJam,
353317301 bytesEstoy usando la lista de palabras de Falko, para ser justos, de modo que la única diferencia en el golf se debe a los idiomas y no al contenido (podría cambiar la lista de palabras si la gente también comienza a jugar golf).
fuente
NetLogo, 396
También utilicé la lista de palabras de Falko, con dos excepciones (que no cambian la duración del programa).
Dependiendo de cómo defina "programa", puede eliminar los primeros cinco y últimos tres caracteres, por lo tanto, una puntuación de 388.
fuente