Su tarea es imprimir el siguiente Arte ASCII:
_ _ _______ _
| | | | (_______) _ | |
| |__ | | ____ ____ ____ _ _ _____ ____ ___| |_ ____ ____| |
| __)| |/ _ | _ \| _ \| | | | | ___) / _ |/___) _)/ _ )/ ___)_|
| | | ( ( | | | | | | | | |_| | | |____( ( | |___ | |_( (/ /| | _
|_| |_|\_||_| ||_/| ||_/ \__ | |_______)_||_(___/ \___)____)_| |_|
|_| |_| (____/
Recuerde, esto es código golf , por lo que gana el código con la menor cantidad de bytes. Buena suerte.
code-golf
string
kolmogorov-complexity
Oliver Ni
fuente
fuente
|()/\_
que conduce a formas de compresión completamente diferentes. Hemos tenido desafíos de arte ASCII similares antes, pero me gustaría ver esta pregunta para ver si alguien aprovecha la geometría. Por otro lado, no es muy notable, y tienes razón, no necesitamos una etiqueta de Pascua.Respuestas:
Chicle, 130 bytes
Pruébalo en línea.
Comprimido usando
zopfli --deflate --i10000
.fuente
JavaScript (ES6),
377373360359345 bytes¡Gracias a @Neil por un ahorro de un byte, y a @ edc65 por otros 14!
Pensé que le daría una oportunidad. Comprime patrones repetitivos comunes en el texto.
_____
(5 guiones bajos) se almacena como_5
5
| | | | |
(5 del|
patrón) se almacena como~5
fuente
=>
._
s._
con un_
seguido de cuantos hay en la carrera~1
o_2
apenas parece valer la pena. (¿Por qué no usar,|2
por ejemplo?)BinaryFuck ,
565378 bytesBásicamente, esto almacena los caracteres utilizados en la matriz, luego navega por la matriz, imprimiéndolos en consecuencia. Actualmente bastante largo, lo acortará.
Aquí está el código sin golf:
EDITAR: al reorganizar el orden de los caracteres en las celdas, ¡ahorré 186 bytes!
fuente
1
. Proporcione un enlace a un intérprete y el volcado hexadecimal del código fuente para que sus resultados puedan reproducirse.JavaScript (ES6), 380 bytes
Para completar, este es mi esfuerzo para usar un método de compresión diferente, aunque resulta que no es tan eficiente como la codificación de longitud de ejecución. Cada dígito especifica que se repiten los últimos N caracteres ya generados. Los dígitos posteriores pueden repetir caracteres ya repetidos, por ejemplo, se
| 23
convierten en| | |
. Solo desearía poder comprimir una serie de tres caracteres.fuente
C,
517427407 bytesUngolfed Pruébelo en línea
fuente
JavaScript, 297 bytes
Codificación simple de las diez subcadenas más comunes (por lo que puedo decir). No están en orden debido a las superposiciones; mi codificador (abajo) necesita ver, por ejemplo,
'_ '
y' _'
antes' '
.Esto requiere una cadena y una serie de subcadenas para codificar y devuelve a) la cadena codificada b) la lista de posibles ahorros posteriores c) el número de bytes guardados hasta el momento.
fuente
𝔼𝕊𝕄𝕚𝕟, 72 caracteres / 209 bytes
Try it here (Firefox only).
Bueno, al menos el recuento de caracteres es excelente, pero no podemos usar la página de códigos personalizada. Es solo una descompresión de LZString. También estoy trabajando en otra solución, más sobre eso más adelante.
fuente
Perl 5, 286 bytes
perl -M5.01 happy.pl
, dondehappy.pl
es:Gracias a Dom Hastings (en un comentario al respecto) por una idea que me ahorró dos bytes y me llevó a otra idea mía que ahorró cuatro más.
fuente
L
como taquigrafía para|_
;-)Python 2,
343328316 bytesEsta solución no utiliza funciones de descompresión u otras importaciones.
Versión legible:
Utiliza una versión de codificación de longitud de ejecución con 3 bits para un símbolo del conjunto "\ n _ | () /". El resto del byte es la longitud, pero limité la longitud a 10 y la manipulé para que los resultados sean caracteres imprimibles que son válidos en una cadena de Python sin ningún escape.
Reemplazar la cadena correspondiente con "|" con un solo carácter en los datos codificados ahorra unos pocos bytes más.
Eliminé los espacios finales en las líneas 1 y 5, que pueden estar doblando un poco las reglas, pero parece práctico.
Este programa genera los datos empaquetados:
fuente
Python 2, 159 bytes
Esta fuente contiene caracteres no imprimibles, por lo que se presenta como un hexdump con el que se puede decodificar
xxd -r
.fuente
Raqueta,
367364 bytesSin golf
Basado en un desafío similar, respondí .
fuente
/// ,
282279 bytesMejora: Noté que hay demasiados
//
comandos de reemplazo, así que decidí comprimirlos también (am
), lo que me ahorró 3 bytes.Comprima repetidamente la subcadena más frecuente.
Decimotercera generación, 282 bytes
Pruébalo en línea!
Primera generación, 486 bytes
Sin compresión Escapó el
/
y el\
.Pruébalo en línea!
Segunda generación, 402 bytes.
Comprimido dos espacios para
a
. El/a/ /
medio "reemplaza todas las ocurrencias dea
a dos espacios".Pruébalo en línea!
Tercera generación, 369 bytes.
Comprimido
__
ab
. Al/b/__/
principio significa "reemplazar todas las apariciones deb
a__
".Pruébalo en línea!
Cuarta generación, 339 bytes
Comprimido
|
ac
. Al/c/ |/
principio significa "reemplazar todas las apariciones dec
a|
".Pruébalo en línea!
El resto de las reglas de compresión.
Entonces, la lista de reglas de compresión:
a
.__
ab
.|
ac
.aa
ad
.bb
ae
.cc
af
.dd
ag
.|c
ah
.\/
ai
. Tanto el\
y el/
en las reglas se escapan aún más.b_
aj
.|a
ak
._
al
.//
am
.Como puede ver, hay reglas de compresión superpuestas. Por ejemplo,
g
codificadd
cuál codificaaaaa
cuál codifica 8 espacios.fuente
Tu mamá (no competidora), 331 bytes
Decodifique la cadena y descomprímala usando el compresor Jelly
fuente
Python 3, 377 bytes
similar a la respuesta de JavaScript, usé RLE más un montón de reemplazos para subcadenas comunes.
Creo que fui un poco exagerado con las cosas de reemplazo, probablemente no ayudó mucho, pero bueno.
fuente
JavaScript (ES6), 354 bytes
Otro intento. Desafortunadamente, no es tan eficiente como la longitud de la carrera.
Almacena un montón de números de base 36 en la primera cadena, delimitados por un
y
!
separador. Luego reemplaza los números (junto con el!
) con las representaciones de base-4 de los números. Sustituye a todas las 0 de, 1'S, y 2 está en el número de base-4 con_
,|
respectivamente, y todos los 3'S se sustituyen con los elementos de la segunda cadena secuencial.fuente
Python 3, 263 bytes
Pase inicial usando builtins.
Se agregaron algunas comillas y saltos de línea adicionales para evitar el desplazamiento horizontal solo con fines de visualización (sin contar en la puntuación)
fuente
repr()
cadena cruda era mucho más larga que ascii85CJam, 229
Sin caracteres originales y sin compresión incorporada :)
Pruébalo en línea
fuente
Lua, 353 bytes
Programa:
Gracias a @jrich por la compresión.
fuente
Rubí,
271262248 bytesPruébalo aquí
fuente
Vim ,
374365326319313311 pulsaciones de teclas9 pulsaciones de teclas gracias a @Dr Green Eggs y Ham DJ .
¿Probablemente se pueda jugar más golf usando
:nn
?fuente
<number>a <esc>
mucho. Si lo hacesyl
en un espacio, puedes reemplazar esto con<number>p
. Eso debería ahorrar alrededor de 8. 2. Podría reemplazarea
conA
. Probablemente podría tomar aún más si cambia su enfoque, pero esos son los consejos rápidos que veo._
y|
etc.?:s
solo reemplaza en una línea. Que desea:% s
. También puede guardar algunas pulsaciones de teclas haciendo:im
(imap) en lugar de buscar y reemplazar. (Aunque es posible que necesite usar ctrl-v o ctrl-q para asignar a un espacio):im
solo puedo jugar al golf unos pocos bytes más, supongo.Javascript (ES6)
464352 bytesPruébalo aquí!
fuente
HTML,
482481475 bytesfuente
05AB1E , 171 bytes
Pruébalo en línea.
Explicación:
Vea esta sugerencia mía 05AB1E (sección ¿Cómo comprimir enteros grandes? Y ¿Cómo comprimir listas enteras? ) Para comprender cómo funcionan el entero comprimido y la lista Base-8.
fuente
C (gcc) ,
280279 bytesPruébalo en línea!
En mal estado
Definimos un alfabeto de 8 símbolos
" _|/\\()\n"
y comprimimos los datos empaquetando dos símbolos por byte de acuerdo con su índice en el alfabeto, con el primer símbolo en los bits 0..2 y el segundo en 3..5. El bit 6 está configurado para llevar el byte resultante al territorio ASCII imprimible. Luego se ejecuta un RLE simple en la cadena comprimida. Si un símbolo en la cadena aparece más de dos veces seguidas, se almacena como un par de caracteres, el primero contiene la longitud de ejecución más 32 (conjunto de bit 5) y el segundo el símbolo en sí.Pruébalo en línea!
fuente
Javascript ES6, 314 bytes
Contiene bytes no imprimibles. Utiliza un poco de magia negra JS para correr. Si
console.log()
se necesita para que esta respuesta sea válida, el recuento de bytes será 327.Fue un gran dolor hacerlo bien, y no pude deshacerme de
.slice(0,-2)
:(Se editará en una explicación mañana cuando esté menos cansado.
Se reemplazó cada byte con el valor hexadecimal correspondiente para que el fragmento de código pueda ejecutarse
fuente
JavaScript,
294292bytesEsto ... literalmente es solo codificación del arte ... con esto ...
Si
console.log()
es necesario, el recuento de bytes es307305 bytes.294-> 292, 2B para codificar
\n
a7
.fuente