Desafío: Produzca el siguiente resultado utilizando la menor cantidad de caracteres posible:
_ _ _ _ _ _ _
| | | | ___| | | ___ __ _____ _ __| | __| | |
| |_| |/ _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` | |
| _ | __/ | | (_) | \ V V / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___( ) \_/\_/ \___/|_| |_|\__,_(_)
|/
Reglas y restricciones:
No puede usar FIGLet ni ninguna herramienta similar. (De
figlet Hello, world!
lo contrario, sería una solución trivial y prácticamente inmejorable).Su programa debe consistir completamente en caracteres ASCII imprimibles , específicamente, puntos de código 9 (TAB), 10 (LF) y 32 - 126. (Si su idioma / SO requiere saltos de línea CRLF, puede usarlos en lugar de LF simples). Sí , lamentablemente descalifica cualquier lenguaje que requiera caracteres no ASCII (o datos no textuales) como parte de su sintaxis.
El resultado debe verse exactamente como el ejemplo anterior. Sin embargo, puede incluir espacios en blanco adicionales alrededor de la salida si lo desea. Puede asumir un espaciado de pestañas de 8 caracteres (o la configuración predeterminada nativa de su plataforma elegida, si tiene una coherente).
PD. Para establecer el par, se me ocurrió una solución Perl de 199 char. Sin embargo, no lo publicaré aún, en caso de que alguien lo invente de forma independiente. (Además, es un poco cursi.) Por supuesto, esto no debería desanimarlo a publicar su propia solución, incluso si es más larga.
Actualización: ahora que Han lo ha derrotado en un char, aquí está mi cursi solución Perl de 199 char:
use Compress'Zlib;say uncompress unpack u,'M>-I]BT$*`S$,`^]YQ=R:0,&_Z<DP?8@?WVQJ]E2J"%E$$@)R(/(/MCJ*\U!OM`Z#=5`4Y>6M=L\L%DMP&DB0V.4GQL&OOGB$4:%`4TT4!R8O-Z(^BTZWNV?>F86K:9+""-35*-LNC:T^D:_$#%^`";"DD0'
Es muy similar a la solución de DC (y todas las otras soluciones basadas en zlib / gzip en varios idiomas), excepto que usé uuencoding en lugar de base64 para el texto comprimido y algunos otros trucos menores de golf.
Actualización 2 : Creo que es hora de aceptar oficialmente un ganador. El primer lugar es para el código PHP de konsolenfreddy , ya que, independientemente de cómo cuente los caracteres, es el más corto enviado hasta ahora. De hecho, combinarlo con el flujo DEFLATE optimizado de mi código Perl de 199 caracteres produce una solución aún más corta de 176 caracteres:
<?=gzinflate(base64_decode("fYtBCgMxDAPvecXcmkDBv+nJMH2IH99savZUqghZRBICciDyD7Y6ivNQbwOg3VQFOXlrXbPLBZLcBpIkNjlJ8bBr754hFGhQFNNFAcmLzeiPotOt7tn3plq2mSwgjU1SjbLo2tPpGvxAxfgA"));
Sin embargo, creo que Han merece una mención honorífica especial por acercarse tanto sin usar ninguna herramienta de descompresión preescrita. ¡Felicitaciones a los dos y un feliz año nuevo a todos!
fuente
Respuestas:
Stax , 137 bytes
Ejecutar y depurarlo
Funciona así.
0
s seguidas de a1
se traducen en caracteres no espaciales.1
s restantes se reemplazan con espacios.fuente
Perl 5.10 - 195
198202203caracteresAquí hay una entrada que no requiere ninguna biblioteca más allá de la coincidencia básica de expresiones regulares. La cadena codificada tiene 131 caracteres, y el código para decodificarla e imprimirla ocupa 64 caracteres (suponiendo que no haya una nueva línea al final de la fuente). La idea es representar cadenas comunes de 3 caracteres con letras minúsculas.
El codificador es mucho más largo y desafortunadamente no es muy legible en este momento. La idea básica es utilizar la programación dinámica para encontrar la codificación más corta para cada línea, dado un conjunto fijo de sustituciones de cadenas. La cadena de sustituciones en la última línea se creó por prueba y error, y es posible que otra cadena de sustituciones conduzca a un programa más corto que el anterior.
Un truco aquí es que algunas sustituciones tienen menos de 3 caracteres de longitud: debido a la forma en que
substr
funciona Perl ,x
se reemplaza por '_
' yy
por '_
'. Esto último es necesario porque\w
en las expresiones regulares '_
', que luego se reemplaza por '(_)
'.fuente
print
porsay
say
necesitas haceruse 5.010;
o ejecutar el script como una línea conperl -E 'script here'
. El primero hace que el código sea más largo y el segundo no es apropiado para un script de varias líneas. ¿Me he perdido algo?-E
no cuenta en número de char.s''...'
lugar de$_=q!...!
; solo recuerda escapar de la comilla simple. Con eso y ensay
lugar deprint
(y dejando de lado la última línea nueva), llego a 198 caracteres.#
para los largos espacios en blanco y obtuve su solución a 190 caracteres. Me pregunto si es posible ir por debajo de 184 caracteres, que superaría todas las soluciones comprimidas de zlib hasta ahora.Brainfuck - 862 caracteres:
fuente
[<---->---]
la primera línea. (Presumiblemente, finalmente habría terminado, pero noPython (2.x), 194 caracteres
fuente
Javascript,
273265264 caracteres:(
fuente
return
, -1 char :)Esta respuesta es más larga que simplemente imprimir la cadena; Sin embargo, solo por diversión, aquí está:
Python, 485 caracteres ☺
Como tengo una de las representaciones ASCII más cortas del texto original comprimido, ¡debo tener la barra de desplazamiento más larga en mi código! Es una victoria! :)
fuente
PHP,
194189 caracteresEs básicamente lo mismo que la respuesta de Python y Perl, un poco más corta
fuente
php -r'=...'
truco no parece funcionar para mí, pero podrías usarlo<?=...
para 184 caracteres. Además, su salida parece tener un espacio extra donde se encuentran losr
yl
.-r'=..'
. ¿php -r
No cuenta el? Está incluido en mis 189 caracteres ...-r
embargo, el cambio de PHP es algo así como un caso límite, ya que, además de tomar el código como parámetro y ejecutarlo, también modifica el entorno de análisis ligeramente en comparación con la ejecución del código desde un archivo. Me inclinaría a contarlo como 2 caracteres adicionales, lo que, por cierto, lo iguala<?
.J,
167160caracteres (47 + 113)Otro envío sin compresión integrada. Utiliza una codificación de longitud variable bastante sencilla, que codifica cada carácter como una serie de 1 bits y separa los caracteres por 0 bits. La cadena comprimida tiene solo 113 caracteres.
fuente
Python (2.7.x), 218 caracteres
Bastante sencillo ... no muy complacido con este intento.
fuente
Bash,
199196193 caracteresSuficientemente cerca...
EDITAR: ¡Hasta 193!
fuente
gzip -d
conzcat
.bash,
196192fuente
Perl, 230 caracteres.
Esto es básicamente lo mismo que mi respuesta de Python. Me gustaría ver la versión de 199 caracteres ... suena a magia.
fuente
Perl
294290 bytes.La cadena comprimida sola, es
151130 bytes.Esto no es corto, pero fue muy divertido escribirlo.
fuente
Perl, 346 bytes
La cadena comprimida sola es de 111 bytes.
Tratando de entender lo que
key= (0,(1,((((7,5),(6,(8,(11,(9,10))))),(4,3)),2)))
estaba haciendo la pitón , terminé haciendo una versión de Perl muy similar.fuente
PHP 590
obviamente, no estoy tratando de ganar, simplemente me interesé en probar otro esquema de compresión, aunque ni siquiera puede superar la solución PHP de texto plano 302 más simple de solo copiar y pegar
funciona como un mapa de bits en 10 canales
"golf"
legible
fuente
Pylongolf2, 300 bytes
No pude encontrar ningún método de codificación con clase, por lo que probablemente no estoy compitiendo.
fuente
Golf básico 84, 325
Suponiendo que una calculadora pueda imprimir comillas invertidas, barras invertidas, tuberías simples y guiones bajos.
fuente
HTML + JS (223 caracteres unicode)
Solo por diversión:
NB: debe guardarlo en un archivo HTML "UTF-8 con BOM".
fuente
PowerShell , 220 byes = script: 9 + archivo: 211
Pruébalo en línea!
El script de Powershell para crear el archivo
t
(ver TIO):fuente