La distribución Debian Linux (y las distribuciones basadas en Debian, como Ubuntu, Kali y otras) usan un administrador de paquetes llamado APT. Para instalar el programa foo
, escribiría en un terminal
sudo apt-get install foo
Un pequeño huevo de Pascua de APT es el siguiente
apt-get moo
Que después de escribir producirá el siguiente resultado
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
..."Have you mooed today?"...
Debe escribir un programa que produzca esta salida EXACTA en la menor cantidad de bytes posible. (incluidos los espacios finales y una nueva línea)
Aquí está el mismo resultado con \n
agregado para representar caracteres de nueva línea y a *
para representar espacios finales
(__)*\n
(oo)*\n
/------\/*\n
/ | ||***\n
* /\---/\*\n
~~ ~~***\n
..."Have you mooed today?"...\n
Como se solicitó en los comentarios, aquí está el md5sum del mugido.
35aa920972944a9cc26899ba50024115 -
apt-get moo|md5sum
?apt-get moo
PRespuestas:
Bash, 95 bytes
Lo anterior es un hexdump reversible. Para crear el archivo, ejecute
pegue el hexdump y presione Enter, luego Ctrl+ D.
Para ejecutar el archivo creado, ejecute
Cualquier otro nombre de archivo servirá.
Elegí zopfli como compresor, ya que es compatible con el programa Coreutils zcat y logra una mejor compresión que gzip, bzip2 y xz.
zcat<<''
leerá las siguientes líneas (hasta EOF) y las alimentará como entrada parazcat
.Tenga en cuenta que zcat imprimirá una advertencia (ya que eliminé la suma de comprobación del archivo comprimido), al igual que bash (ya que HEREDOC no termina con una línea vacía). Estas advertencias se imprimen en STDERR (suprimido por
2>&-
), que está permitido de forma predeterminada por consenso en Meta .fuente
CJam, 96
Esto usa muchos bytes desagradables, así que aquí hay un volcado hexadecimal:
Puede ejecutar el archivo con el intérprete de Java; Puede ser necesario utilizar la codificación ISO-8859-1, como:
java -Dfile.encoding=ISO-8859-1 …
Pruébalo en línea
Versión ASCII equivalente (y mucho más larga):
Pruébalo en línea
Explicación:
Hay 7 personajes que tienen repeticiones:
_o-|~.
. Cada uno de ellos puede codificarse como un número n del 0 al 6. Para cada secuencia repetitiva, estoy codificando tanto el índice del carácter (n) como el número de repeticiones (k) en un solo byte:,2 * (k * 7 + n)
escrito como un carácter con ese código. Y estoy codificando cualquier carácter individual como2 * c + 1
, donde c es el código ASCII. Todo va en la cadena inicial, y el resto del programa lo decodifica:Versión anterior (109):
Pruébalo en línea
fuente
Pyth, 100
Pruébelo en línea: demostración
r"string"9
run-length-decodifica la cadena.editar:
Aquí hay una solución de 97 char: Demostración . Muy probablemente esto también sea de 97 bytes (en iso-8859-1). Pero demasiado cansado para escribir los bytes y hacer una explicación. Mañana por la noche, supongo.
fuente
GolfScript (107 bytes)
Esta es una codificación muy simple: las líneas nuevas se reemplazan por
^
, y los espacios se codifican por longitud de ejecución. El resultado contiene algunos caracteres no imprimibles, así que lo presento aquí comoxxd
salida:Demostración en línea
Tenga en cuenta que este es un carácter más corto que el código CJam correspondiente. La compensación se usa
'
como delimitador para la cadena principal (guardando dos\
s para escapar de la"
), guardandoi
para convertir valores de caracteres a enteros en el ciclo de decodificación y obteniendo una nueva línea libre; vs tener literales de caracteres para reemplazar los literales de cadena de un solo carácter.Dado que esta pregunta se etiquetó brevemente como printable-ascii , también hice una versión con solo (108) caracteres imprimibles:
En lugar de codificar los run-longitudes de los espacios como caracteres
^A
a^R
(y codifica^J
como^
a las colisiones evitar), que deja intacto saltos de línea y codifica el período previo longitudes comoI
aY
.Por cierto, mi programa GolfScript Kolmogorov de uso general produce un programa de 120 bytes.
fuente
Lua,
186178 bytes8 bytes guardados gracias a una sugerencia de @DJ McMayhem
Sin golf:
fuente
a=repeat(" ",17)
> <> , 217 bytes
Lamentablemente, esta es una respuesta bastante aburrida. Comienza leyendo una cadena que dibuja toda la vaca, con líneas nuevas agregando un valor de 10 a la pila (a). Luego entra en un bucle que simplemente saca a la vaca.
Originalmente hice un bucle para agregar un conjunto de espacios, pero en realidad era más costoso en bytes que solo poner espacios.
EDITAR: Olvidé que el pez está escrito como "> <>"
fuente
PowerShell, 144 bytes
El código anterior funcionará correctamente en entornos que imprimen líneas nuevas de estilo Unix (
\n
). Produce la salida correcta con, por ejemplo, Pash en Linux.Matemáticamente, para PowerShell, tener 8 espacios para la
$a
variable es lo óptimo, ya que menos significa demasiados espacios adicionales entre la variable y la vaca para que$b
valga la pena, y más significa que no podemos duplicar en las dos primeras líneas para la variable cabeza.fuente
\r
es un retorno de carro,\n
es un salto de línea. Juntos,\r\n
forman una nueva línea en Windows. 2. PowerShell no es solo para Windows. He probado su código con Pash (una implementación de código abierto de Windows PowerShell para Mono) y el resultado tiene el hash MD5 adecuado. 3. Debido a lo anterior, me tomé la libertad de deshacer tu publicación. Si no está de acuerdo con esto, vuelva a wiki.\r\n
y\n
, pero como dije, no pude obtener el MD5 correcto en Windows sin algo atroz. Gracias por esa edición, sin embargo. Primero, también he oído hablar de Pash, así que gracias por eso también. Me pregunto lo complicado que sería construir bajo Cygwin ... ;-)Molécula , 145 bytes
Mi primera vez tratando de comprimir el arte ASCII: P
fuente