Adam West falleció, y me gustaría honrar su memoria aquí en PPCG, aunque dudo que él supiera de nuestra existencia. Si bien hay muchas, muchas cosas diferentes por las que este hombre es conocido, ninguna es más prominente que su papel como el Batman original . Siempre recordaré a mi padrastro que sigue viendo a Batman y Robin de la vieja escuela hasta el día de hoy. Este desafío es de naturaleza simplista, no está en línea con el hombre complicado que era Adam West. Sin embargo, es lo mejor que se me ocurrió, ya que esta es la imagen más icónica de la carrera del hombre.
Quería publicar esto antes, pero estaba esperando que alguien inventara algo mejor.
Imprima lo siguiente (con o sin espacios finales / líneas nuevas):
* *
**** * * ****
**** ******* ****
****** ******* ******
********* ********* *********
***********************************************
*************************************************
*************************************************
*************************************************
***********************************************
***** ********************* *****
**** *** ***** *** ****
** * *** * **
Este es el código de golf , ganará el conteo de bytes más bajo.
fuente
Respuestas:
Jalea , 44 bytes
Pruébalo en línea!
Cómo funciona
Este es un literal numérico. Todos los caracteres se reemplazan con sus índices basados en 1 en la página de códigos de Jelly, el resultado se interpreta como un entero biyectivo base-250, produciendo
Luego,
b25
convierta ese entero en base 25 yo99
reemplace 0 con 99 , produciendoJx$
sustituye a la j ésimo base-25 dígitos n con n copias de j , produciendoAhora, los
ị⁾ *
índices en el par de caracteres. La indexación se basa en 1 y es modular, por lo que los números impares se reemplazan por espacios, incluso los que tienen asteriscos. Esto produces25
corta el resultado en trozos de longitud 25 . Si escribimos cada fragmento en su propia línea, obtenemosEl átomo de rebote
ŒB
palindromiza cada fragmento agregando una copia invertida sin su primer carácter, produciendoFinalmente,
Y
presenta los avances de línea reales.fuente
“QƤḣọḲ£¿ẆịµñẒṢƊ¬ƒỤ2ỴÐ,ịṁ&Ḅ<ḋsḳn.⁷ṛḃṡ⁾6bḋeṁ’ṃ⁾ *s25ŒBY
era lo suficientemente corto en 53 bytes ...Wordfuck ,
57612686 bytesSupongo que usar su nombre como código fuente le da a Adam West algo de honor.
Pruébalo en línea! (cerebro inflado)
Adam West cantando (gracias @carusocomputing)
fuente
Pitón,
530529528524 bytesfuente
B.pop(0)
poco molesto. ¿Por qué no invertirB
para poder usar el mucho más eficiente (y más corto)B.pop()
? Elpop(0)
tiene que mover todos los elementos restantes de la lista hacia abajo una ranura. Claro, sucede a velocidad C, pero sigue siendo menos eficiente que aparecer desde el final de la cadena.POP
,BIFF
,POW
,OOF
me hicieron escupir lo que estaba bebiendo en mi monitor. Gracias lol. +1.JavaScript (ES6),
148146bytesManifestación
Mostrar fragmento de código
fuente
Python,
149142 bytes7 bytes guardados gracias a @ PM2Ring
fuente
x=''.join(s*int(k,36)for s,k in zip(' *'*3,l))
MATL ,
6159 bytesPruébalo en línea!
Cómo funciona
Utiliza las siguientes técnicas estándar:
1
a11
, por lo que la secuencia de longitudes de ejecución se comprime mediante conversión de base , de base11
a base94
(caracteres ASCII imprimibles excepto comillas simples, que necesitarían escapar).fuente
[1:12 20 24 99]
, lo que dificulta la compresión. Mi mejor intento es a 60 bytesY|
,? No sé suficiente cajero automático MATL para probar si eso es realmente más corto ...[1:24 99]
, eliminé un byte . Si utilizo[0:24]
(base 25) No sé cómo convertir0
en99
en pocos bytesY|
no funciona en MATL / Octave como lo hace en Jelly / Python. En este último,0 or 99
produce 99 ...05AB1E , 47 bytes
Pruébalo en línea!
fuente
replace 99 trick
de él (ahorró 4 bytes en el camino directo). Sin embargo, todavía estoy buscando una mejor manera..∞
lugar de€û»
(las réplicas se unen implícitamente a las listas en las nuevas líneas primero en la versión heredada, antes de aplicar la réplica). También he intentado usar₂в
en lugar de25в
, pero por desgracia el número entero comprimido es entonces de 1 byte más largo, así, por lo que no guarda nada:•2Ø°×á[1∊Œ)’˜Àå<тIÞ‡p5ÉQ•₂в
.vim,
168156bytesEsto supone un entorno Unix, para
rev
. Utilizo una codificación bastante sencilla (recuento, carácter), con N y A añadiendo uny
*
respectivamente, y B haciendo la copia y el reverso.En el archivo real, las entradas entre corchetes se reemplazan por los bytes literales que representan.
<C-v>
es 0x16,<ESC>
es 0x1b y<CR>
es 0x0d.Pruébalo en línea
fuente
:nm N a <C-v><esc>
y:nm A a*<C-v><esc>
<C-v>
en un archivo de lo que es, así que utilicé el método indirecto para poder probarlo{ cat foo.vim; echo ':wq'; } | vim out.txt
. No estoy seguro de por qué no se me ocurrió intentar<C-v><C-v>
ayer.-v
bandera te permite usar descripciones de teclas vim (me gusta<C-v>
y otras cosas)<NL>
lugar de<NEWLINE>
?Carbón ,
69545248 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: Gracias a @ ASCII-solamente, guardados 4 bytes por el cambio de una bandera independiente para bucle sobre índices,
7 bytes mediante el uso de la (indocumentado?)y otras 4 bytes usando el alfabeto para la longitud de recorrido de codificación. Se guardaron otros 2 bytes porque⸿
Carácter,AtIndex
automáticamente toma el módulo. Se guardaron otros 4 bytes porqueMap
crea automáticamente una variable de índice. Explicación:El exterior
Map
devuelve una matriz.Print
maneja esto imprimiendo cada elemento en su propia línea, evitando así tener que manualmenteJoin
con\n
.La cadena codifica todas las medias filas de la salida. Las letras alternas se refieren al número de
*
sy espacios (a=0
se usa para manejar una fila que comienza con un espacio). El espacio es una opción conveniente del delimitador, pero también se comprime bien (x también se comprime a un total de 55 bytes). Cada fila se procesa por separado. (Nota: el desverbosificador no puede eliminar el separador entre una cadena comprimida y sin comprimir; de lo contrario, el código tendría que ser,
legible).Pase sobre cada letra, expandiéndose al número apropiado de
*
so espacios. La variablem
es el índice del bucle interno para estoMap
, mientrasl
contiene la letra. El resultado seJoin
edita en una sola cadena usando la cadena vacía predefinidaw
.Una vez que se imprimen todas las filas, refleje todo a la izquierda, superponiendo la columna central.
Traté de manejar las nuevas líneas, espacios y estrellas todo en un bucle, pero en realidad tomó dos bytes más de esta manera:
fuente
Clojure,
833437 bytesCasi por definición, Clojure nunca ganará ningún premio por brevedad, pero mientras esperaba CADA SEMANA GANADA para los DOS (cuéntelos - DOS ) episodios de Batman (¡el mismo tiempo de Bat, el mismo canal de Bat!) Está claro que hay ¡no hay tiempo que perder!
¡Rápido Robin, al Bat-REPL!
Versión sin golf:
RIP Adam West. No importa cuán ridículos sean esos espectáculos, aquellos de nosotros que éramos niños los saludamos.
fuente
C (gcc) , 191 bytes
Pruébalo en línea!
fuente
Varias soluciones, todas utilizando Run Length Encoding, con una variedad de técnicas para codificar los datos RLE.
Python 3,
125121 bytesEsta versión usa una
bytes
cadena para almacenar los datos.Dejar
s
ser una cadena de estrellas o de espacios. Entonces lan
codificación de bytess
está dada porPython 2,
133126bytesEsta versión usa codificación alfabética. El valor de la letra determina la longitud de la cadena de salida, el caso de la letra determina si está compuesta de espacios o estrellas.
Mi solución original de 133 bytes Python 2.
Esta versión utiliza cadenas de longitud cero para que pueda alternar fácilmente entre cadenas de estrellas y espaciales.
Solo por diversión, aquí hay una frase que usa la codificación alfabética.
Python 2, 148 bytes
Para aún más diversión, aquí hay un patrón en Conway's Game of Life que genera una versión del logotipo de Batman. Tuve que duplicar cada línea para mantener la relación de aspecto aproximadamente igual a la versión de texto. Este patrón realmente no calcula el logotipo (aunque es posible hacer cálculos en Life, es Turing completo), simplemente lo reproduce desde los bucles de memoria, por lo que supongo que no puedo publicarlo como una entrada de golf de código (aunque me hice crearlo utilizando un script en Python que escribí hace unos años). ;)
Está codificado en un formato RLE bastante estándar que la mayoría de los motores Life pueden cargar. Si no tiene un programa GoL (por ejemplo, Golly ), puede verlo en acción en línea con este motor Life en línea , que puede importar archivos Life RLE. Aquí hay una versión PNG de ese patrón Life , algunos programas Life (incluido Golly) pueden cargar patrones Life desde PNG y varios otros formatos de archivo de imagen.
fuente
T-SQL,
283 276222 bytesImplementando la compresión GZIP de la cadena original de Batman, través del método publicado aquí . Esto funciona solo en SQL 2016 y versiones posteriores.
Para versiones anteriores de SQL, use mi método anterior ( 276 bytes ):
Básicamente estoy codificando manualmente una cadena gigante que determina qué imprimir a continuación, usando el siguiente método:
#7
es reemplazado por+REPLICATE('*',7)
$4
es reemplazado por+SPACE(4)
&
es reemplazado por+CHAR(13)
Después del reemplazo, se ve la cadena completa de 958 caracteres (con saltos de línea en cada línea en el símbolo de Batman:
Que se ejecuta como SQL dinámico, produciendo el siguiente resultado:
fuente
PHP , 137 bytes
Pruébalo en línea!
PHP , 177 bytes
Pruébalo en línea!
PHP , 179 bytes
Pruébalo en línea!
fuente
Java,
296214 bytesGolfizado:
Sin golf:
fuente
";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172"
para datos, yfor(char a:x){a=(int)a-48; [...]
básicamente está sumando 48 a cada uno de los números y convirtiéndolos a su equivalente ascii char. Creo que esto te ahorrará 70-80 bytes. También creo que codificar los datos en la lamba también reducirá los bytes.boolean b=false;
puede serboolean b=1<0
, o incluso mejor, podría usar unint
y también combinar la declaración parai
en la misma línea;).i
en su bucle for, creo que puede usarlofor(int i=0;i++<a-48;)
comofor
-head.Chicle , 75
volcado xxd:
Pruébalo en línea .
fuente
Coffeescript (282 Bytes)
Explicación (usando plain-ol ES6)
fuente
V , 102 bytes
Pruébalo en línea!
Hexdump:
Utiliza la codificación de longitud de ejecución para generar la siguiente mitad de Batman:
Y luego invierte y duplica cada línea.
fuente
Python 2 , 134 bytes
Pruébalo en línea!
La longitud de ejecución codifica cada línea desde la mitad izquierda en la base 36. La duplica para formar la línea completa, que se imprime. Los espacios iniciales no están codificados; en cambio, la mitad izquierda está acolchada hasta la longitud 25.
fuente
Mathematica 151 Bytes
Barato y poco creativo. La cadena es solo del
Compress
comando incorporado utilizado en la salida requerida.Actualizar:
Creo que puedo hacerlo mejor con las funciones incorporadas
ImportString
\ExportString
pero no puedo ver para copiar y pegar las cadenas resultantesExportString
correctamente. P.ejParece que no puedo copiar la salida de texto de la segunda línea para reemplazar la
%
de la tercera línea.fuente
Golpetazo ,
407322 bytesPruébalo en línea!
realmente horrible, necesita más tiempo o ayuda para jugar al golf. genera la salida con 0 un 1 y translitera al final. Codificado en dígitos hexadecimales la cantidad de 0 y 1, teniendo cuidado de hacer el último dígito 0 para las dos primeras filas como un indicador para la columna central de salida. Utiliza printf pressision ya sea para dígitos o cadenas para generar 0 y 1. cree que el
%.$[0x${X}]C
patrón podría usarse para jugar golf.fuente
Pitón 3,
232197183164 bytesOtra respuesta más de Python. Sin embargo, no hay código de compresión aburrido. Emocionante código de compresión.
Estoy usando el número mágico 35 porque de esa manera, no ocurren caracteres de control, espacios o cosas que tendrían que escapar. Es triste que tenga que procesar los espacios y las estrellas por separado, eso me cuesta un poco.
Sin golf:
fuente
print
llamada en la misma línea que elfor
. 2 Si usa unabytes
cadena, puede deshacerse de esasord
llamadas. 3 Puede reemplazarlorange
comprimiendo un par de iteradores. Aquí hay un generador que combina ambas esas ideas:((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2))
. Esos cambios reducirán su cuenta a 164.PowerShell, 305 bytes,
307 bytes,316 bytesTal vez alguien más pueda ayudarme a acortarlo aún más, aunque no puedo entender cómo a menos que haya una forma más concisa de definir un acelerador de tipo personalizado.
Editar: versión acortada (gracias @root). La cadena codificada (codificación previa a base64) puede recortarse en ocho posiciones de matriz y, por lo tanto, el rango puede reducirse. No estoy seguro de por qué StreamWriter está introduciendo esta hinchazón en MemoryStream. Se apreciaría una idea del comportamiento subyacente.
Sin golf:
Código de compresión:
fuente
[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()
$ms.ToArray()
son ambos 0. ¿Son necesarios?('225','193','82','192','106','2','0','0')
, se pueden eliminar para crearH4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg==
. No entiendo de dónde vienen.Perl 5, 168 bytes
Tenga en cuenta el espacio final al final de solo la primera línea. Requiere
-M5.01
, que es gratis.Probablemente se pueda jugar al golf un poco más.
fuente
LaTeX, 314 bytes
La versión no golfista con explicaciones:
fuente
C # (.NET Core) ,
342 333 328 185175 bytesPruébalo en línea!
Muchos bytes guardados después de cambiar el enfoque. Tomando el dibujo como una matriz 2D, calculé la codificación RLE por archivos:
Los índices impares representan
sy los índices pares representan
*
s. Luego sustituí cada número por una representación ASCII imprimible (tomando el carácter '#' como 1), y obtuve:Entonces, el algoritmo simplemente calcula el dibujo descomprimiendo esta cadena y agregando nuevas líneas en los lugares adecuados.
fuente
l
una variable, simplemente úsela directamente en el bucle..ToString(i, 2)
->.ToString(i,2)
es decir, eliminar el espacio en blanco.1e10
) para esos números? Este desafío es realmente útil aquí.PowerShell ,
129128 bytesPruébalo en línea!
Sin golf:
Salida:
La idea principal es muy simple.
La codificación del emblema:
Decodificación (este script):
Length
vecesAlgunas cosas inteligentes
½
as*t
(73 asteriscos, 0, 74 espacios asteriscos).Extra: Scipt para codificar el emblema
fuente
Mathematica, 271 bytes
fuente
Braingolf ,
590580579577428423312 bytes-111 bytes porque LeakyNun es un dios del golf
Pruébalo en línea!
Braingolf no es bueno en el arte ASCII, pero maldita sea, lo intenté.
De ninguna manera estoy explicando este grupo ** k
fuente
/// ,
171166 bytes5 bytes guardados porque estaba usando
\r\n
en la fuente, lol.Pruébalo en línea!
Comprimido mediante el uso de sucesivas iteraciones de reemplazar las subcadenas "más económicas" con un solo carácter. Esto es casi óptimo, aunque una de dos cosas podría ser el caso:
fuente