La respuesta a la vida, el universo y el arte ASCII

25

Desafío simple: intente generar el siguiente texto en el menor número de bytes posible:

       the        answer
      toli      fetheuniv
     ersea     nde     ver
    ything     the     ans
   wer tol     ife     the
  uni  ver           sean
 dev   ery         thin
gth    ean       swer
tolifetheuni    ver
seandeveryth   ing
       the     ans      wer
       tol     ifetheuniver
       sea     ndeverything

El dibujo original contiene 332 caracteres.

Reglas

  • No hay entrada o una entrada no utilizada.
  • La salida puede estar en cualquier formato razonable (cadena, lista de cadenas, matriz de caracteres, etc.).
  • Puede usar mayúsculas en lugar de minúsculas para el dibujo si así lo prefiere.
  • Se permiten espacios en blanco al final y líneas nuevas.
  • Este es el , ¡así que puede ganar el programa / función más corto para cada idioma!

Notas

  • Esto ha sido identificado como un posible duplicado de No somos ajenos al código de golf, usted conoce las reglas, y yo también . Esa pregunta era sobre buscar y reemplazar texto. Aquí tiene que dibujar una forma usando un texto dado, y al menos dos de las respuestas actuales demuestran que los idiomas de golf pueden vencer a los algoritmos de compresión simples en este caso.
Charlie
fuente
Esto viene de la caja de arena .
Charlie
1
Personalmente, creo que esto es sobre el tema y no un engaño. Sin embargo, no creo que necesite una cita de spoiler.
programador
1
@Phoenix No creo que esto es una víctima, sogl ha outgolfed chicle . Por lo tanto, la compresión no es una forma óptima de hacerlo.
programmer5000
1
Para ser sincero, no me di cuenta de que mi reapertura del voto era vinculante. Por las razones ya mencionadas por @ programmer5000, yo realmente no creo que sea una víctima de No somos extraños ... . Puede ser un engaño de otro desafío, aún por identificar, pero no este.
Arnauld
1
@Nacht, la mejor parte es que al principio dibujé los caracteres 42con *caracteres y luego los reemplacé con el texto, que encajaba perfectamente. No tuve que modificar el dibujo original para que la oración encajara. ¿Coincidencia?
Charlie

Respuestas:

21

Python 3 , 224 220 219 215 211 194 bytes

  • Gracias a @TFeld por 1 5 bytes: en if(j%27<1)*jlugar de if j*(j%27<1)una declaración de impresión simplificada.
  • Gracias a @Leaky Nun por 4 bytes: Invertir 0 y 1, no requirió el relleno por ceros 7*'0'
  • @Leaky nun ahorró 17 bytes con sus increíbles habilidades de golf (¡Muchas gracias!): Increíble uso de indexación modular
i=j=0
k=int("OHZE5WCKDTW6JYMO1JNROAAJQVAN6F8KEO0SMKJM86XIBMCEH5FXXONZGBAVCN3689DS",36)
while k:j+=1;print(k%2*'theanswertolifetheuniverseandeverything'[i%39]or' ',end='\n'*(j%27<1));i+=k%2;k//=2

Pruébalo en línea!

Explicación:

Utiliza compresión base 36 para comprimir este número binario (excluida la nueva línea)

111111100011111111000000111
111111000011111100000000011
111110000011111000111110001
111100000011111000111110001
111000100011111000111110001
110001100011111111111000011
100011100011111111100001111
000111100011111110000111111
000000000000111100011111111
000000000000111000111111111
111111100011111000111111000
111111100011111000000000000
111111100011111000000000000

Básicamente tenemos dos contadores iy j. Al encontrarnos 1, imprimimos un espacio; De lo contrario, si 0se encuentra imprimimos la siguiente letra de la cadena y aumentamos i. jaumenta para cada uno 0 or 1. También imprimimos nuevas líneas cuando es necesario, es decir, cuando se j%27<1hace realidad.

officialaimm
fuente
1
Puede guardar 1 byte cambiando if j*(j%27<1):aif(j%27<1)*j:
TFeld
2
205 bytes
Leaky Nun
2
201 bytes con aritmética de enteros
Leaky Nun
2
200 bytes con indexación modular
Leaky Nun
2
194 bytes
Leaky Nun
8

Python 2 , 235 218 213 bytes

x=bin(int('OC5POO6MZYQNBWY0RP6BKBZCOZL13MIAB6I8YZ5N7LXSZBVKX7GC57AW5631YCJ6XCLC',36))[2:].replace('1',' ')
for c in'theanswertolifetheuniverseandeverything'*4:x=x.replace('0',c,1)
while x:y,x=x[:27],x[27:];print y

Pruébalo en línea!

Cambió a una base 36 codificada int de las posiciones de las letras como se sugiere en la pregunta.

Reemplaza a cada personaje uno a la vez.

       111        111111                              the        answer
      1111      111111111                            toli      fetheuniv
     11111     111     111                          ersea     nde     ver
    111111     111     111                         ything     the     ans
   111 111     111     111                        wer tol     ife     the
  111  111           1111                        uni  ver           sean
 111   111         1111             --->        dev   ery         thin
111    111       1111                          gth    ean       swer
111111111111    111                            tolifetheuni    ver
111111111111   111                             seandeveryth   ing
       111     111      111                           the     ans      wer
       111     111111111111                           tol     ifetheuniver
       111     111111111111                           sea     ndeverything

Editar: Parece que officialaimm utilizó la base 36 antes que yo.

TFeld
fuente
7

Chicle , 125 bytes

0000000: 45 8f c5 01 03 31 0c 04 ff ae 62 4b 0b 99 02 c7  E....1....bK....
0000010: d8 7d 84 e7 f9 59 30 5e 41 59 4a 84 71 ef e6 3d  .}...Y0^AYJ.q..=
0000020: 4e c1 ea fd b7 42 48 91 66 d6 ae 6e da 89 d3 1c  N....BH.f..n....
0000030: ef 60 ba 97 ae 6e b6 74 2e a5 76 d9 ad ae e4 16  .`...n.t..v.....
0000040: 69 59 08 a6 a6 e8 23 d4 22 af 08 d0 20 7d 17 f0  iY....#."... }..
0000050: 8a 9b 7c 76 c2 61 7b c8 4b 01 41 23 50 24 32 87  ..|v.a{.K.A#P$2.
0000060: f5 98 9e 88 35 24 21 83 ac 50 b2 e0 a2 16 0e 42  ....5$!..P.....B
0000070: bb ba a5 bc ae 6e bd 76 b7 69 d9 f9 07           .....n.v.i...

Pruébalo en línea!

Dennis
fuente
¿Cómo generaste esto? Lo más cerca que pude llegar fue 127
musicman523
1
Con zopfli .
Dennis
Hice uso zopfli, pero juro que he intentado con y sin saltos de línea finales, con espacios adicionales .... no pueda introducirse bajo 127
musicman523
6

05AB1E , 83 79 74 bytes

-4 bytes gracias a Erik the Outgolfer

Emite una lista de cadenas para guardar un byte.

•2ÖH₆Ôn₅Ò\ÊÑĆ¸Ý¾*£„ÔûC∞qΘœ™‚¹µ—₃₄fm•vNÈy×vyiðë¾¼’€€Ž»to‚쀀ªÜ€ƒ‰Ö’è}}}J27ô

Pruébalo en línea!

Explicación

2ÖH₆Ôn₅Ò\ÊÑĆ¸Ý¾*£„ÔûC∞qΘœ™‚¹µ—₃₄fm es la representación base 255 del número decimal:

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Que codifica carreras de 1s y 0s respectivamente, incluso los índices son los 1s y los desniveles desiguales los 0s. Esto evalúa el número binario:

111111100011111111000000111
111111000011111100000000011
111110000011111000111110001
111100000011111000111110001
111000100011111000111110001
110001100011111111111000011
100011100011111111100001111
000111100011111110000111111
000000000000111100011111111
000000000000111000111111111
111111100011111000111111000
111111100011111000000000000
111111100011111000000000000

Código

•...•                                         Convert from base 255 to decimal
     v                                }       For each digit, do:
      NÈy×                                       is_even(index) repeated that many times
          v                          }           For each digit, do:
           yi                       }               If digit is truthy, then:
             ð                                         Push space
              ë                                     Else:
               ¾¼                                      Get and increment counter, starts at 0
                 ’€€Ž»to‚쀀ªÜ€ƒ‰Ö’                    Push "theanswertolifetheuniverseandeverything"
                                   è                   Get the character at that index
                                       J      Join whole stack
                                        27ô   Split into parts of 27
kalsowerus
fuente
Reemplace "ÔAo îιË3š1ĆRÕ₃FWš{ÓÛÏ.!XµM§&¶ñD°3PŸ{óNι2Ðbмh"253öcon •—."Ôq‚Ā0Ál0j¿«ªžé¨0õ₄7“Ÿ!½ÏiæÆø-δq–Å05q½Yñá+•por -4.
Erik the Outgolfer
@EriktheOutgolfer gracias, actualicé mi respuesta y ahora finalmente sé para qué sirven :)
kalsowerus
Buena respuesta :). Espero que sigas aprendiendo el idioma. Si tienes alguna pregunta, no dudes en chatear conmigo.
Magic Octopus Urn
@MagicOctopusUrn ¡Muchas gracias! :)
kalsowerus
6

Python 2 , 220213212 bytes

-1 byte por conmutación ()*4para %39de @officialaimm

s=""
w=l=i=0
for g in`int("352G7FS4XC8J2Q2M2HNK7IZI65Z9TVUMHOZ6MR3HY46RQBLWY4PR",36)`[:-1]:
	for j in g*int(g):l+=1;s+=[' ',"theanswertolifetheuniverseandeverything"[w%39]][i%2]+"\n"*(l%27<1);w+=i%2
	i+=1
print s

Pruébalo en línea!

Este es un enfoque diferente de las otras respuestas de Python. Utilizo una codificación hexadecimal de base 36 (7 bytes guardados) de una codificación de estilo de imagen RLE de estilo PNG de la imagen (una cadena de dígitos que indica el número de píxeles repetidos consecutivos).

La cadena de dígitos es :

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Luego repito esos dígitos e imprimo alternativamente ese número de '' s o caracteres de la paleta ('theanswer ...'). Cuando se repite más de 9 caracteres, simplemente agregaría un 0 y luego el resto.

Coty Johnathan Saxman
fuente
+1 para un enfoque diferente. Puede guardar un byte usando "theanswertolifetheuniverseandeverything"[w%39] TIO
officialaimm
Gracias y notado. Estaba tratando de trabajar junto con un 'o' reemplazo para la configuración booleana de soporte que tengo aquí ahora, pero está arruinando mis nuevas líneas ...
Coty Johnathan Saxman
No sabía que PNG usaba este algoritmo de compresión, pensé que era GIF.
wizzwizz4
Buena atrapada. No era PNG (ni GIF), sino RLE. Agregaré un enlace a la respuesta.
Coty Johnathan Saxman
5

SOGL V0.12 , 74 bytes

"ō⅓׀?@C⁶¬IΧΖO‘@øŗč"βΘ⅔Μv∙KΩqψ3╥W≡A;2ļm½±iq╗∆Δ⁶Πqīσ‽ε⁰5τΩ⅜δσΞoΤi┘‽N¹\Λ:‘'    n

Pruébalo aquí!

"...‘              push "the answer to life the universe and everything". because of a bug-not-really-bug, the starting quote is required
     @øŗ           remove spaces
        č          chop it into characters
         "...‘     push a string of spaces and ŗ where ŗ gets replaced with each next characters of the character array
              ' n  split into an array of line length 27
dzaima
fuente
5

Permítame responder mi propia pregunta ...

Carbón , 140126121 bytes

A⟦⟧βF⁶⁸F⁻℅§”c#*U[“⎆Vl¶·δ‴ü"Ip8ξZ{e/⪫¦σMM⪫¢Q⁸ULê←⪫W?—υ⁻$⌀)”ι³⁴«¿﹪鲧”m⌊0Y℅¿№”XJ-⁵η}Z¿8_*<o%!±Ÿ”L⊞Oβω ¿¬﹪L⊞Oυω²⁷⸿

Pruébalo en línea!

Tienes aquí un enlace a la versión detallada más cercana.

Explicación (ver versión detallada para más detalles):

  • La )%*(+&(+)''%'%'('%'%&%#%'%'%%%$%-&%%%%+&&%&%)&(.&%*.%%2%'%(%)%'.)%'.cadena (68 bytes, 48 ​​bytes comprimidos) es una representación de la codificación RLE del dibujo. Cada código de caracteres menos 34 es el número de espacios (posiciones pares) o el número de caracteres de texto (posiciones impares) para imprimir consecutivamente.
  • El algoritmo simplemente descomprime la cadena codificada en RLE y escribe el siguiente carácter de la gtheanswertolifetheuniverseandeverythincadena (39 bytes, 27 bytes comprimidos) cada vez que se necesita escribir un carácter que no sea un espacio en blanco. Cuando verifico la longitud de una lista para obtener el siguiente carácter y esa lista comienza con un elemento, el último carácter de la cadena se escribe en la primera posición.
  • Cada 27 caracteres escritos inserto una nueva línea.

Expresiones de gratitud

  • Muchas gracias a Neil y sus increíbles consejos por permitirme guardar 28 bytes y finalmente poder vencer a Bubblegum. :-)
Charlie
fuente
1
Si usas, Assign(Minus(1, c), c);entonces puedes usar if (c) { ... } else Print(" ");.
Neil
En realidad, si usa for (68)y AtIndex("...", i)luego puede usar Modulo(i, 2)en su lugar y no necesita cnada.
Neil
Y si lo usa, if (Not(Modulo(Length(PushOperator(u, w)), 27)))entonces tampoco lo necesita a.
Neil
Ah, y AtIndexhace una automática Moduloasí que Modulo(b, 39)puede ser justo b.
Neil
1
ues una variable predefinida que es solo una matriz vacía (se guarda usando A⟦⟧υ). Cada vez que empujas algo, su longitud aumenta en 1. Esto es más corto que una asignación explícita para incrementar.
Neil
5

JavaScript (ES6), 207 205 203 bytes

Devuelve una matriz de cadenas con algunos espacios finales.

let f =

_=>[16515968,33489856,k=58950624,k+16,k-40,31458204,7865230,1966983,462847,233471,117670784,k=134185856,k].map(n=>'heanswertolifetheuniverseandeverythingt '.replace(/./g,(_,i,s)=>s[n>>i&i<27?k++%39:39]))

console.log(f().join('\n'));

Arnauld
fuente
4

Retina , 183 bytes


7386¶6469¶555353¶465353¶33135353¶23239024¶133394¶034374¶090343¶090333¶735363¶735903¶735903¶theanswertolifetheuniverseandeverything
.*$
$&$&$&$&
(\d)(.)
$1$* $2$*
+s`1([ 1¶]+)(.)
$2$1

Pruébalo en línea! Explicación: La primera etapa agrega la codificación RLE del mapa de bits de la celda y el texto, que la segunda etapa duplica a la longitud correcta, mientras que la tercera etapa decodifica la codificación RLE. La cuarta etapa luego mueve el texto a las celdas.

Neil
fuente
4

Jalea , 83 bytes

“¡eu⁾ṃṣƬİḂṃ½)ṣṾṘƇ@^AṀẆṫ+¢ṗɲ⁾ṭḋZ`⁺×Ṗj½Ṇ-Þḣ2żṿƤc’BCẋ"`“ÆZ⁺ƙ{ÆߥŀŒ1gỤ3Ḍṭṁ ṃjɓ»ṁȯ€⁶s27Y

Pruébalo en línea!

Cómo funciona

“XX’BCẋ"`“YY»ṁȯ€⁶s27Y
“XX’                   a large number
    B                  binary
     C                 complement
      ẋ"`              1 becomes [1] and 0 becomes []
             ṁ         reshape
         “YY»             "theanswertolifetheuniverseandeverything"
              ȯ€⁶      replace [] with " "
                 s27   split into chunks of length 27
                    Y  join with newline
Monja permeable
fuente
3

Agregar ++ , 1398 bytes

+32
&
&
&
&
&
&
&
+84
&
-12
&
-3
&
-69
&
&
&
&
&
&
&
&
+65
&
+13
&
+5
&
+4
&
-18
&
+13
&
-104
&
+22
&
&
&
&
&
&
+84
&
-5
&
-3
&
-3
&
-73
&
&
&
&
&
&
+70
&
-1
&
+15
&
-12
&
-3
&
+16
&
-7
&
-5
&
+13
&
-108
&
+22
&
&
&
&
&
+69
&
+13
&
+1
&
-14
&
-4
&
-65
&
&
&
&
&
+78
&
-10
&
+1
&
-69
&
&
&
&
&
+86
&
-17
&
+13
&
-104
&
+22
&
&
&
&
+89
&
-5
&
-12
&
+1
&
+5
&
-7
&
-71
&
&
&
&
&
+84
&
-12
&
-3
&
-69
&
&
&
&
&
+65
&
+13
&
+5
&
-105
&
+22
&
&
&
+87
&
-18
&
+13
&
-82
&
+84
&
-5
&
-3
&
-76
&
&
&
&
&
+73
&
-3
&
-1
&
-69
&
&
&
&
&
+84
&
-12
&
-3
&
-91
&
+22
&
&
+85
&
-7
&
-5
&
-73
&
&
+86
&
-17
&
+13
&
-82
&
&
&
&
&
&
&
&
&
&
&
+83
&
-14
&
-4
&
+13
&
-100
&
+22
&
+68
&
+1
&
+17
&
-86
&
&
&
+69
&
+13
&
+7
&
-89
&
&
&
&
&
&
&
&
&
+84
&
-12
&
+1
&
+5
&
-100
&
+93
&
+13
&
-12
&
-72
&
&
&
&
+69
&
-4
&
+13
&
-78
&
&
&
&
&
&
&
+83
&
+4
&
-18
&
+13
&
-104
&
+106
&
-5
&
-3
&
-3
&
-3
&
-1
&
+15
&
-12
&
-3
&
+16
&
-7
&
-5
&
-73
&
&
&
&
+86
&
-17
&
+13
&
-104
&
+105
&
-14
&
-4
&
+13
&
-10
&
+1
&
+17
&
-17
&
+13
&
+7
&
-5
&
-12
&
-72
&
&
&
+73
&
+5
&
-7
&
-93
&
+22
&
&
&
&
&
&
&
+84
&
-12
&
-3
&
-69
&
&
&
&
&
+65
&
+13
&
+5
&
-83
&
&
&
&
&
&
+87
&
-18
&
+13
&
-104
&
+22
&
&
&
&
&
&
&
+84
&
-5
&
-3
&
-76
&
&
&
&
&
+73
&
-3
&
-1
&
+15
&
-12
&
-3
&
+16
&
-7
&
-5
&
+13
&
-17
&
+13
&
-104
&
+22
&
&
&
&
&
&
&
+83
&
-14
&
-4
&
-65
&
&
&
&
&
+78
&
-10
&
+1
&
+17
&
-17
&
+13
&
+7
&
-5
&
-12
&
+1
&
+5
&
-7
&
P

Pruébalo en línea!

Parece que la codificación es la forma más corta (al menos en Add ++)

caird coinheringaahing
fuente
3

Vim, 239 pulsaciones de teclas

:h4<CR>3hy5bZZitheanswerto<Esc>p:%s/ \|,//g<CR>ye3P
lqqi<CR><Esc>qqw3li <Esc>lq3@wbhr<CR>16l@q@w3-@w6l@ql@w9l@qll3@whr<CR>3l9@w4l@q 2@w4l@q2@w4l@q9l2@wlr<CR>9l@w4klr<CR>4whr<CR>jj
el<C-v>3k"aD0jji <Esc>qqdiwukPi <Esc>q5@qwy04j$"ap6+<C-v>GPp3kw3i <Esc>2@q4kbXj2@qywh<C-v>4jp2je<C-v>jj4A <Esc>8j5i <Esc>b<C-v>jj2I <Esc>

Saltos de línea agregados para "legibilidad"

Explicación

La primera línea se extrae life, the universe and everythingde una página de ayuda, que es un byte más corto que simplemente escribirlo. Luego lo convierte en esto:

theanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverything

La segunda línea divide la cadena en:

the answer
toli fetheuniv
ersea nde ver
ything the ans
wer tol ife the
uni ver sean
dev ery thin
gth ean swer
tolifetheuni ver
seandeveryth ing
the ans wer
tol ifetheuniver
sea ndeverything

Y luego la línea final sangra para hacer:

       the        answer
      toli      fetheuniv
     ersea     nde     ver
    ything     the     ans
   wer tol     ife     the
  uni  ver           sean
 dev   ery         thin
gth    ean       swer
tolifetheuni    ver
seandeveryth   ing
       the     ans      wer
       tol     ifetheuniver
       sea     ndeverything
Alondra
fuente
3

Jalea , 76 bytes

“¡¢ʋỵṆ⁻kỴ⁷ṁḤæ ƊVṛĠ¥¡¢tṢ}ȧƘ=ẒṆ_`-p1ḷṠ’ḃ⁴ĖŒṙḂ¬R“£:(ḥB⁼Ṇ#¥Ṡ1ɗĠðȮ $¿⁹½ɓ»ṁȯ€⁶s27Y

Pruébalo en línea!

Dennis
fuente
2

Retina , 185 bytes


7!8&sw'6Bi6fe!Av¶5#sea5nde5v'4y%g5!5&s¶3w#1B5ife5!¶2A2v#92se&¶1dev3#y9%¶gth4e&7sw'Bife!A4v'se&dev#yth3ing¶7!5&s6w'7B5ife!Av'7sea5ndev#y%g
'
#¶
&
an
%
thin
#
er
!
the
A
uni
B
tol
\d
$* 

Pruébalo en línea!

ovs
fuente
2

JavaScript, 215 bytes

solución basada en guest44851

$=>'a21xb0k9qf30155yiv016ewp3018lkhz0ohfdb077or302cl5b0mgzr0b8hz028ghs7028gi67028gi67'.split(p=0).map(x=>parseInt(x,36).toString(2).slice(1).replace(/./g,x=>" theanswertolifetheuniverseandeverything"[+x&&1+p++%39]))
tsh
fuente
2

Ruby , 216 bytes

o=i=1
puts"6iffnqxq0opdbco5e3f1zk5d7eezo2j6zwly9z5yykqsc1hl5svaof".to_i(36).to_s(17).chars.map{|c|
o=!o
c.to_i(17).times.map{o ? (i+=1)&&"ngtheanswertolifetheuniverseandeverythi"[i%39]:" "}.join
}.join.scan /.{1,27}/

Pruébalo en línea!

Explicación Similar a las soluciones de Python, pero utilicé Run Length Encoding antes de convertir a la base 36. Por lo tanto, la cadena de datos tiene solo 54 caracteres en lugar de 68.

Pero aún así terminó por más tiempo, con suerte, se puede jugar más.

Simon George
fuente
2

Un puerto de mi respuesta de carbón :

C # (.NET Core) , 229 bytes

_=>{var r="";for(int i=0,j,k=0,n=0;i<68;i++)for(j=0;j++<")%*(+&(+)''%'%'('%'%&%#%'%'%%%$%-&%%%%+&&%&%)&(.&%*.%%2%'%(%)%'.)%'."[i]-34;){r+=i%2<1?' ':"theanswertolifetheuniverseandeverything"[k++%39];if(++n%27<1)r+='\n';}return r;}

Pruébalo en línea!

Charlie
fuente
2

C (gcc) , 220 219 217 213 210 bytes

-1 byte gracias a ceilingcat

-3 bytes gracias a Jerry Jeremiah

q,i,j,t;main(c){for(;c="HDIG@GEGJ@FFFDFD@EGFDFD@DDBDFDFD@CDCDLE@BDDDJE@ADEDHE@AMED@AMDD@HDFDGD@HDFM@HDFM"[t++];)for(c%=64,j=c?q=!q,c:2;--j;)putchar(c?q?32:"theanswertolifetheuniverseandeverything"[i++%39]:10);}

Pruébalo en línea!

gastropner
fuente
Una función es solo la mitad de un programa, solo use un programa completo para 214 bytes
Jerry Jeremiah
@JerryJeremiah Muy cierto; ¡buena atrapada! También podría afeitarme un byte más.
Gastropner
1

JavaScript, 265 237 219 bytes

(i=0)=>'jwq80,13ntvk,26p62g,25g7w8,239k3c,zg4xc,7rpbk,1e9dc,b8mw,5mbc,4f9reg,4f9r0g,4f9r0g'.split`,`.map(b=>parseInt(b,36).toString(2).slice(1).replace(/./g,c=>'  theanswertolifetheuniverseandeverything'[+c||2+i++%39]))

Pocos bytes apagados gracias a @tsh.

JSFiddle


fuente
.substr -> .slice (1) guardar algunos bytes
tsh
"La salida puede estar en la lista de cadenas", así que solo omita eljoin
tsh
@tsh. Gracias. . .
1

Pyth , 121 bytes

Esto contenía demasiados bytes que no pude mostrar en TIO, así que aquí hay un hexdump:

00000000: 7558 6848 477c 2a64 6548 622c 5658 434d  uXhHG|*deHb,VXCM
00000010: 2290 8d8d 817e 7e7b 7875 7572 6663 5753  "....~~{xuurfcWS
00000020: 504d 4946 4343 3f3c 3939 3633 302d 2d2a  PMIFCC?<99630--*
00000030: 2721 211e 1b16 160d 0909 0300 225d 545d  '!!........."]T]
00000040: 3133 6a43 2202 1232 a464 b09d 7303 4244  13jC"..2.d..s.BD
00000050: 9386 74d2 e954 b89e e722 3132 2a34 2e22  ..t..T..."12*4."
00000060: 6179 1aa6 55ad c176 932b 6088 d5c5 556c  ay..U..v.+`...Ul
00000070: e4f4 5575 12a0 e7fb 1f                   ..Uu.....

Pruébalo en línea!

Puede agregar una llamada a wco xxden el script bash para ver la longitud del byte o el hexdump que produje anteriormente.

Curiosamente, este programa muestra un error menor (?) En Pyth. Los bytes de retorno de carro (0x0d) se leen como bytes de nueva línea (0x0a) cuando están en literales de cadena. Esto me obliga a agregar 6 bytes: X ... ]T]13para reemplazar los diez incorrectos con trece.

De lo contrario, la idea detrás de este código era bastante simple: registrar cada posición donde se produce una serie de espacios en blanco. Luego, empareje cada uno de esos índices con el número de espacios en esa ejecución. Luego, reconstruya la cadena original repitiendo la frase cuatro veces, luego insertando en las ubicaciones correctas. Si el número de espacios registrados fue cero, se inserta una nueva línea.

FryAmTheEggman
fuente
1

Java (OpenJDK 8) , 258 252 251 bytes

z->{int i=0,x,j,N[]={16515968,33489856,x=58950624,x+16,x-40,31458204,7865230,1966983,462847,233471,117670784,x=134185856,x};for(int n:N)for(j=32;j-->0;n/=2)System.out.print(n%2<1?j<1?"\n":" ":"theanswertolifetheuniverseandeverything".charAt(i++%39));}

Pruébalo en línea!

Es una implementación bastante ingenua. Primero una máscara, para los caracteres impresos, luego un rollo sobre el texto hasta que esté listo.

  • ¡6 bytes guardados gracias a Carlos Alejo!
Olivier Grégoire
fuente
Puede guardar algunos bytes con int[]{16515968,33489856,x=58950624,x+16,x-40,31458204,7865230,1966983,462847,233471,117670784,x=134185856,x}.
Charlie
0

Javascript, dibujo aproximado. 319 bytes

s=32
t="theanswertolifetheuniverseandeverything"
j=0
o=""
b=document.createElement('canvas'),c=b.getContext('2d')
b.width=b.height=s
c.font="25px Verdana"
c.fillText('42',0,20)
m=c.getImageData(0,0,s,s)
i=0
while(i<m.data.length) {
 d=m.data[i+3]
 o+=d?t[j%t.length]:" "
 if(d)j++
 i+=4
}
o.match(/.{1,32}/g).join("\n")

^ por lo que vale, no mucho en realidad, pero antes de eliminar el código fallido.

sq2
fuente