Lamentablemente, uno de los mejores escritores de cómics falleció ayer por la tarde. Muchas estrellas de Hollywood, músicos, actores y muchas otras personas están rindiendo homenaje a este increíble escritor, por lo que también debemos hacer algo.
Desafío
Imprimir el logotipo de los Vengadores
Nota: Puede usar cualquier otro carácter en lugar de # que no sea un espacio; mientras que debes usar un espacio para el espacio
En arte ASCII
######
###############
##### ##########
#### ####### ####
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### ########### ###
### ########### ###
### #### ### ###
### ### ### ###
#### #### ####
######## ######
#################
###
Opcional
¿Quién fue (en tu opinión) su mayor héroe y villano en todo el universo de Marvel?
Aplican reglas estándar de código de golf
code-golf
ascii-art
kolmogorov-complexity
Luis felipe De jesus Munoz
fuente
fuente
Respuestas:
Gelatina ,
625958 bytes¡Gracias a @JonathanAllan por jugar golf en 1 byte!
Pruébalo en línea!
Cómo funciona
es un literal entero entero biyectivo base-250, que utiliza los caracteres en la página de códigos de Jelly como dígitos.
Los codifica literales el número entero , que convertidos a duodecimal, produciendo .10250938842396786963034911279002199266186481794751691439873548591280332406943905758890346943197901909163 30 b 620 b 40 b un 54 a 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43896860 b un 3 1230 b 620 b 40 b a 54 a 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43896860 b a 312
b12
Hay algunos ceros, porque 14 espacios (p. Ej.) Están codificados como 3 espacios, 0 hashes y 11 espacios. Esto mantiene la base pequeña (la ejecución más grande consta de 17 hashes), sin agregar ninguna lógica adicional al decodificador.
Ė
(enumerar) prefijos cada dígito de base 12 por su índice basado en 1, luegoŒṙ
realiza la decodificación de longitud de ejecución.Ahora, para cada número entero en la matriz resultante,
Ḃ
extrae el bit menos significativo, luegoa⁶
(Y espacio) reemplaza unos con espacios, mientras deja ceros sin cambios.Finalmente,
s27
divide la matriz de caracteres sin formato en trozos de longitud 27, que seY
separa por saltos de línea.fuente
R ,
198,173,163,157,144, 142 bytesPruébalo en línea!
También
R
honra al gran Stan.Notas:
#
que hemos usado,4
porque guarda 2 bytes y:4
parece un mini "inclinado"A
)Explicacion :
La aplicación de una codificación de longitud de ejecución (
rle
función) en los caracteres de la cadena (excluyendo'\n'
) devuelve 88 repeticiones de la alternancia<space>,<hash>,<space>,<hash>,<space>,<hash>...
.Las 88 repeticiones son todos valores en el rango
[1,17]
, por lo tanto, sumando64
obtenemos los puntos de código de las letras que[A...Q]
obtienen la cadena:"NFMOJEDJFDGGADCCHDACCCACIDACDFHDBCDFHDBCDFGDCCDFGDCCDFFKDFFKDFEDECDFECFCDCADBDKDCHIFHQJC"
Por lo tanto, el código básicamente hace las operaciones opuestas:
fuente
#
, usarlo0
en lugar de"#"
debería ahorrar 2 bytes más. @ J.Doe que puede funcionar mejor para su gzip también.Chicle ,
71666564 bytes¡Gracias a @ovs por jugar golf en 1 byte!
Pruébalo en línea!
fuente
#
a!
.Python 2, 129 bytes
Pruébalo en línea!
fuente
\n
de la cadena comprimida.Carbón ,
716867 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Salida de la mitad del círculo.
Reflejarlo y dibujar en la parte inferior.
Dibuja el brazo izquierdo y la barra transversal de la A.
Dibuja el brazo derecho de la A.
Cambia todos los caracteres a
#
s.fuente
C (gcc) ,
244243242 bytesPruébalo en línea!
-1 Gracias a Peter Cordes
-1 Gracias a ceilingcat
Utiliza compresión de bits.
Explicación:
El objetivo es imprimir un conjunto de números en binario usando el espacio y # como dígitos que representan el logotipo. Un poco de magia bash convierte el logotipo en máscaras binarias:
Esto da como resultado que los 'números' binarios sean:
Hay un patrón obvio en el medio donde cada línea contiene
### ### ###
Podemos ahorrar algo de espacio al comprimir esa sección central en función de guardar ese patrón y OR-ing contra él. Además, todas esas líneas simplemente agregan algunas cosas a la izquierda de la sección central, por lo que hacemos la
z
macro que la toma??????????????
y la convierte###??????????????### ###
. Esto implica el desplazamiento de bits a la izquierda por 10 y OR-ing con el binario de ese patrón, que es 117441415.Ahora podemos entender más fácilmente el código:
fuente
x?y:0
puede reemplazarx&&y
o la prioridad del operador no funciona? Tal vez con en&
lugar de,
separar las 3 llamadas a funciones porque&
tiene mayor prioridad que&&
o,
( en.cppreference.com/w/c/language/operator_precedence ). O no porque solo,
proporciona un punto de secuencia para la impresión frente a la recursividad para evitar un comportamiento indefinido.&&
debido a la precedencia, mientras&
que no hace un corto circuito. Hasta el momento no he encontrado una alternativa más corta, aunque no descartaría una.&
o|
o^
reemplazar,
( porque no provocan un cortocircuito) y&&
reemplazar?
(porque lo hace). Me gusta_<19 && b() & puts() & main(_+1);
(espacios añadidos para facilitar la lectura). El orden de evaluación no está definido, lo que en realidad puede ser un comportamiento indefinido debido a los efectos secundarios nostdout
secuenciados en en.cppreference.com/w/c/language/eval_order , pero en la práctica cualquier compilador elegirá un orden para un conjunto determinado de objetivos + opciones.T-SQL,
341338 bytesLos primeros 4 saltos de línea son solo para legibilidad, el salto de línea final es parte de un literal de cadena.
Similar a mi tributo a Adam West , codifiqué manualmente una cadena larga e hice los siguientes reemplazos:
*7
es reemplazado por+REPLICATE('#',7)
$4
es reemplazado por+SPACE(4)
&
se reemplaza por un salto de línea entre comillasEsto da como resultado una cadena de comando SQL masiva :
Que, cuando se ejecuta, produce la salida necesaria.
Largo, pero aún mejor que mi mejor solución basada en conjuntos ( 463 bytes ):
fuente
CHAR(8000)
lugar deVARCHAR(max)
(el comando enorme es 1453 bytes)CHAR(2E3)
pero no me gustó. También guardé un byte usando un salto de línea literal en lugar deCHAR(13)
.Lienzo ,
747371 bytesPruébalo aquí!
fuente
JavaScript (ES6),
173170 bytesPruébalo en línea!
Node.js , 163 bytes
Siempre que una matriz de cadenas sea una salida válida:
Pruébalo en línea!
fuente
05AB1E ,
1018864 bytes-24 bytes creando un puerto de @ Dennis ♦ 'Jelly answer .
Pruébalo en línea.
Explicación:
Vea esta sugerencia mía 05AB1E (secciones ¿Cómo comprimir enteros grandes? Y ¿Cómo comprimir listas enteras? ) Para comprender cómo funciona la compresión del entero y la lista.
fuente
•∍ΔÎë,½=bOÅ.âαUΔ'òõƶαÔγλ#xÆ]~”FbćÁ˜Ð”wнQ_wā©•12вDg„ #s∍S×J27ô»
reemplazando„#
yεN>yи}˜è
conDg„ #s∍S×
C (gcc) ,
174168164160 bytes-6 bytes gracias a Dennis.
Pruébalo en línea!
fuente
/// , 170 bytes
Pruébalo en línea!
fuente
Bash ,
192176 bytesPruébalo en línea!
-16 gracias a manatwork
Esto es similar a mi respuesta C, excepto que solo usa una compresión de base 16 sin procesar y la pasa a través de bc, luego usa tr para convertir 1 a # y 0 a espacio. Cada fila tiene 1 anexado y despojado para mantener la alineación.
Lamentablemente
dc
es más corto quebc
.fuente
^
. Pero aún mejor, use encut -c2-
lugar de lased
parte.echo
e incluso más corto con endc
lugar debc
: ¡ Pruébelo en línea!echo
, pero vamos,dc
por Stan Lee ... debes estar bromeando;)Haskell,
170163 bytesEditar: -7 bytes gracias a @ Ørjan Johansen
Pruébalo en línea!
Los espacios se codifican como caracteres en mayúscula (longitud:
Z
hasta char), los signos hash como caracteres en minúscula (longitud:a
hasta char) y los últimos tres#
de cada línea más la nueva línea como un espacio. La función lom
decodifica.fuente
"###\n"
.Perl 6 ,
136112 bytesPruébalo en línea!
Analiza un número de base 128 a partir de los valores ordinales de la cadena comprimida, convierte a base 2 y reemplaza la
1
s con espacios. Esto usa ceros como el personaje principal. La cadena tiene como 9 bytes nulos, lo cual fue una perra para escribir en TIO. Hubiera usado la base 127 para la misma cantidad de bytes, pero no nulos, pero eso tiene un retorno de carro, que parece imposible de distinguir de una nueva línea:(
Explicación:
fuente
J ,
130128 bytesPruébalo en línea!
Solución inicial
J , 164 bytes
Pruébalo en línea!
fuente
PHP ,
286212209208 bytesPruébalo en línea!
fuente
Perl 5 , 181 bytes
Pruébalo en línea!
fuente
MATLAB : 144 bytes
Pruébalo en línea! (Técnicamente en octava)
Explicación:
Utiliza la misma estrategia que digEmAll en R, solo con la sintaxis MATLAB. La principal diferencia es que MATLAB tiene conversión automática de caracteres a enteros.
fuente
C # (.NET Core) , 199 bytes
Pruébalo en línea!
Utiliza el mismo enfoque que mi solución al homenaje a Adam West .
fuente
Deadfish ~ ,
726723 bytes-3 bytes gracias a @squid
Pruébalo en línea!
Al nunca haber visto / leído nada de Marvel y solo confiando en spoilers, parece que Thanos es el mejor.
fuente
Máquina de Turing pero mucho peor - 16913 bytes
Hecho con el generador de programas de ASCII_only
fuente
desinflar, 79 bytes
eJyVkcsJADAIQ ++ ZIpD9dyxUqrGUgjlpHvglXdqCJymk1yEiaRXEIOXzuBHCiKObReUxUzYaMdt2wmTBg / FmNXndgLRbNvL7ifsLfMw6iQ ==
fuente
deflate
idioma, ya que parece una cadena de base64Brainf ***,
656652605 bytesEl bucle al inicio inicia la cinta para
Luego, el resto del código genera esos caracteres.
(-47 bytes gracias a orthoplex)
fuente
T-SQL, 244 bytes
Golfizado:
Sin golf:
Pruébelo en línea versión sin golf
fuente