Die Antwort auf das Leben, das Universum und die ASCII-Kunst

25

Einfache Herausforderung: Versuchen Sie, den folgenden Text in so wenigen Bytes wie möglich auszugeben:

       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

Die Originalzeichnung enthält 332 Zeichen.

Regeln

  • Keine Eingabe oder eine nicht verwendete Eingabe.
  • Die Ausgabe kann in jedem vernünftigen Format erfolgen (Zeichenfolge, Liste der Zeichenfolgen, Zeichenmatrix usw.).
  • Sie können für die Zeichnung Großbuchstaben anstelle von Kleinbuchstaben verwenden, wenn Sie dies bevorzugen.
  • Leerzeichen und Zeilenumbrüche dürfen nachgestellt werden.
  • Das ist , also kann das kürzeste Programm / die kürzeste Funktion für jede Sprache gewinnen!

Anmerkungen

Charlie
quelle
Das kommt aus dem Sandkasten .
Charlie
1
Persönlich denke ich, dass dies ein Thema ist und kein Betrug. Ich glaube nicht, dass Sie ein Spoiler-Zitat brauchen.
Programmer5000
1
@Phoenix Ich glaube nicht, dass dies ein Schwachsinn ist, Sogl hat Bubblegum ausgelutscht . Daher ist die Komprimierung kein optimaler Weg, dies zu tun.
Programmer5000
1
Um ehrlich zu sein, wusste ich nicht, dass meine Wiedereröffnung bindend ist. Aus den Gründen, die bereits von @ programmer5000 erwähnt wurden, glaube ich nicht, dass es ein Betrug von Wir sind keine Fremden ... ist . Es mag ein Betrug einer anderen - noch zu identifizierenden - Herausforderung sein, aber nicht dieser.
Arnauld
1
@Nacht das beste daran ist, dass ich zuerst die 42mit zeichen gezeichnet habe *und sie dann durch den text ersetzt habe, der perfekt passt. Ich musste die ursprüngliche Zeichnung nicht modifizieren, um den Satz passend zu machen. Zufall?
Charlie

Antworten:

21

Python 3 , 224 220 219 215 211 194 Bytes

  • Danke an @TFeld für 1 5 Bytes: if(j%27<1)*jstatt if j*(j%27<1)und vereinfachte Druckanweisung .
  • Dank @Leaky Nun für 4 Bytes: Invertieren von 0 und 1, benötigt keine Auffüllung durch Nullen 7*'0'
  • @Leaky Nonne sparte 17 Bytes mit seinen großartigen Golffähigkeiten (Vielen Dank !!!!): die großartige Verwendung der modularen Indizierung
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

Probieren Sie es online!

Erläuterung:

Verwendet Base-36-Komprimierung zum Komprimieren dieser Binärzahl (ohne Zeilenumbruch)

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

Wir haben grundsätzlich zwei Zähler iund j. Bei der Begegnung mit einem 1drucken wir ein Leerzeichen; Andernfalls 0drucken wir den nächsten Buchstaben aus der Zeichenfolge und erhöhen ihn i. jerhöht sich für jeden 0 or 1. Wir drucken auch neue Zeilen, wann immer dies erforderlich ist, dh wann es j%27<1wahr wird.

officialaimm
quelle
1
Sie können 1 Byte sparen, indem Sie if j*(j%27<1):aufif(j%27<1)*j:
TFeld
2
205 Bytes
Undichte Nonne
2
201 Bytes mit ganzzahliger Arithmetik
Leaky Nun
2
200 Bytes mit modularer Indizierung
Leaky Nun
2
194 Bytes
Undichte Nonne
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

Probieren Sie es online!

Auf eine Basis 36 umgeschaltet, die int der Buchstabenpositionen codiert, wie in der Frage angedeutet.

Ersetzt jedes Zeichen einzeln.

       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

Edit: Es scheint, als hätte officialaimm die Basis 36 vor mir benutzt.

TFeld
quelle
7

Bubblegum , 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...

Probieren Sie es online!

Dennis
quelle
Wie haben Sie das gemacht? Der nächste, den ich bekommen konnte, war 127
musicman523
1
Mit Zopfli .
Dennis
Ich habe zopfli benutzt, aber ich schwöre, ich habe es mit und ohne Zeilenumbruch versucht, mit zusätzlichen Leerzeichen .... konnte nicht unter 127 kommen
musicman523
6

05AB1E , 83 79 74 Bytes

-4 Bytes dank Erik dem Outgolfer

Gibt eine Liste von Zeichenfolgen aus, um ein Byte zu speichern.

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

Probieren Sie es online!

Erläuterung

2ÖH₆Ôn₅Ò\ÊÑĆ¸Ý¾*£„ÔûC∞qΘœ™‚¹µ—₃₄fm ist die Basis-255-Darstellung der Dezimalzahl:

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Das codiert Läufe von 1s bzw. 0s, wobei sogar Indizes das 1s und ungerade das 0s sind. Dies ergibt die Binärzahl:

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

Code

•...•                                         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
quelle
Ersetzen Sie "ÔAo îιË3š1ĆRÕ₃FWš{ÓÛÏ.!XµM§&¶ñD°3PŸ{óNι2Ðbмh"253ömit •—."Ôq‚Ā0Ál0j¿«ªžé¨0õ₄7“Ÿ!½ÏiæÆø-δq–Å05q½Yñá+•für -4.
Erik der Outgolfer
@EriktheOutgolfer danke, aktualisiert meine Antwort und jetzt weiß ich endlich, was diese sind :)
Kalsowerus
Gute Antwort :). Hoffe, Sie weiterhin die Sprache zu lernen. Wenn Sie Fragen haben, können Sie sich gerne mit mir unterhalten.
Magic Octopus Urn
@MagicOctopusUrn Vielen Dank! :)
Kalsowerus
6

Python 2 , 220 213 212 Bytes

-1 Byte durch Umschalten ()*4für %39von @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

Probieren Sie es online!

Dies ist ein anderer Ansatz als die anderen Python-Antworten. Ich verwende eine hexadezimale Base-36- Codierung (7 Bytes gespeichert) für eine PNG-artige RLE-artige Codierung des Bildes (eine Ziffernfolge, die die Anzahl der aufeinanderfolgenden wiederholten Pixel angibt).

Die Ziffernfolge lautet :

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Dann durchlaufe ich diese Ziffern und drucke abwechselnd die Anzahl von '' s oder Zeichen aus der Palette ('theanswer ...'). Wenn mehr als 9 Zeichen wiederholt werden, füge ich einfach eine 0 und dann den Rest hinzu.

Coty Johnathan Saxman
quelle
+1 für unterschiedlichen Ansatz. Sie können ein Byte speichern, indem Sie "theanswertolifetheuniverseandeverything"[w%39] TIO
officialaimm
Danke und notiert. Ich habe versucht, es zusammen mit einem "oder" -Ersatz für das Boolesche Bracket-Setup zu verarbeiten, das ich jetzt hier habe, aber es bringt meine Zeilen durcheinander ...
Coty Johnathan Saxman
Ich wusste nicht, dass PNG diesen Komprimierungsalgorithmus verwendet - ich dachte, das wäre GIF.
Wizzwizz4
Schöner Fang. Es war nicht PNG (noch GIF), sondern eigentlich RLE. Ich werde der Antwort einen Link hinzufügen.
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

Probieren Sie es hier aus!

"...‘              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
quelle
5

Gestatten Sie mir, meine eigene Frage zu beantworten ...

Charcoal , 140 126 112 Bytes

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

Probieren Sie es online!

Sie haben hier einen Link zur nächsten ausführlichen Version.

Erklärung (Details siehe ausführliche Version):

  • Das )%*(+&(+)''%'%'('%'%&%#%'%'%%%$%-&%%%%+&&%&%)&(.&%*.%%2%'%(%)%'.)%'. Zeichenfolge (68 Bytes, 48 ​​Bytes komprimiert) ist eine Darstellung der RLE-Codierung der Zeichnung. Jeder Zeichencode minus 34 ist die Anzahl der Leerzeichen (gerade Positionen) oder die Anzahl der Textzeichen (ungerade Positionen), die nacheinander gedruckt werden sollen.
  • Der Algorithmus dekomprimiert einfach die RLE-codierte Zeichenfolge und schreibt gtheanswertolifetheuniverseandeverythinjedes Mal, wenn ein Nicht-Leerzeichen-Zeichen geschrieben werden muss , das nächste Zeichen der Zeichenfolge (39 Byte, 27 Byte komprimiert). Wenn ich die Länge einer Liste überprüfe, um das nächste Zeichen zu erhalten, und diese Liste mit einem Element beginnt, wird das letzte Zeichen der Zeichenfolge an der ersten Position geschrieben.
  • Alle 27 geschriebenen Zeichen füge ich eine neue Zeile ein.

Danksagung

  • Vielen Dank an Neil und seine tollen Tipps, die es mir ermöglicht haben, 28 Bytes zu sparen und Bubblegum endlich zu besiegen. :-)
Charlie
quelle
1
Wenn Sie Assign(Minus(1, c), c);dann verwenden, können Sie nur verwenden if (c) { ... } else Print(" ");.
Neil
Wirklich, wenn Sie for (68)und AtIndex("...", i)dann verwenden, können Sie Modulo(i, 2)stattdessen verwenden und Sie brauchen cüberhaupt nicht.
Neil
Und wenn Sie if (Not(Modulo(Length(PushOperator(u, w)), 27)))dann verwenden, brauchen Sie auch nicht a.
Neil
Oh, und AtIndexmacht eine automatische Moduloso Modulo(b, 39)kann es eben sein b.
Neil
1
uist eine vordefinierte Variable, die nur ein leeres Array ist (spart mit A⟦⟧υ). Jedes Mal, wenn Sie etwas darauf drücken, erhöht sich seine Länge um 1. Dies ist kürzer als eine explizite Zuweisung zum Inkrementieren.
Neil
5

JavaScript (ES6), 207 205 203 Bytes

Gibt ein Array von Zeichenfolgen mit Leerzeichen zurück.

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
quelle
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

Probieren Sie es online! Erläuterung: Die erste Stufe fügt die RLE-Codierung der Zellenbitmap und des Texts hinzu, die die zweite Stufe dann auf die richtige Länge dupliziert, während die dritte Stufe die RLE-Codierung decodiert. Die vierte Stufe verschiebt dann den Text in die Zellen.

Neil
quelle
4

Jelly , 83 Bytes

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

Probieren Sie es online!

Wie es funktioniert

“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
Undichte Nonne
quelle
3

Add ++ , 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

Probieren Sie es online!

Es sieht aus wie Hardcoding, es ist der kürzeste Weg (zumindest in Add ++)

Caird Coinheringaahing
quelle
3

Vim, 239 Tastenanschläge

: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>

Zeilenumbrüche für "Lesbarkeit" hinzugefügt

Erläuterung

Die erste Zeile ruckelt life, the universe and everythingan einer Hilfeseite , die ein Byte kürzer ist als das einfache Ausfüllen . Das macht es dann so:

theanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverything

Die zweite Zeile unterteilt die Zeichenfolge in:

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

Und dann rückt die letzte Zeile ein:

       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
BlackCap
quelle
3

Jelly , 76 Bytes

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

Probieren Sie es online!

Dennis
quelle
2

Netzhaut , 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
$* 

Probieren Sie es online!

ovs
quelle
2

JavaScript, 215 Byte

Lösung basierend auf guest44851

$=>'a21xb0k9qf30155yiv016ewp3018lkhz0ohfdb077or302cl5b0mgzr0b8hz028ghs7028gi67028gi67'.split(p=0).map(x=>parseInt(x,36).toString(2).slice(1).replace(/./g,x=>" theanswertolifetheuniverseandeverything"[+x&&1+p++%39]))
tsh
quelle
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}/

Probieren Sie es online!

Erläuterung Ähnlich wie bei den Python-Lösungen, aber vor der Konvertierung in Basis 36 habe ich die Lauflängencodierung verwendet. Die Datenzeichenfolge besteht also nur aus 54 Zeichen anstelle von 68.

Aber es endete immer noch länger, hoffentlich kann es weiter golfen werden.

Simon George
quelle
2

C (gcc) , 220 219 217 213 210 Bytes

-1 Byte danke an ceilingcat

-3 Bytes dank 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);}

Probieren Sie es online!

Gastropner
quelle
Eine Funktion ist nur ein halbes Programm - verwenden Sie einfach ein vollständiges Programm für 214 Bytes
Jerry Jeremiah
@ Jerry Jeremiah Sehr wahr; schöner Fang! Könnte auch ein weiteres Byte davon rasieren.
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]))

Dank @tsh ein paar Bytes weniger.

JSFiddle


quelle
.substr -> .slice (1) spart einige Bytes
tsh
"Die Ausgabe kann in einer Liste von Zeichenfolgen erfolgen"join
tsh
@tsh. Vielen Dank. . .
1

Pyth , 121 Bytes

Dies enthielt zu viele Bytes, die ich nicht in TIO anzeigen konnte. Hier ist ein 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.....

Probieren Sie es online!

Sie können dem wcoder xxdim Bash-Skript einen Aufruf hinzufügen , um die Bytelänge oder den Hexdump anzuzeigen, den ich oben erstellt habe.

Interessanterweise zeigt dieses Programm einen kleinen Fehler (?) In Pyth. Alle Wagenrücklaufbytes (0x0d) werden in String-Literalen als Zeilenumbruchbytes (0x0a) gelesen. Das zwingt mich, 6 Bytes hinzuzufügen:X ... ]T]13 um die falschen zehn durch dreizehn zu ersetzen.

Ansonsten war die Idee hinter diesem Code recht einfach: Notieren Sie sich jede Position, an der eine Leerzeichenfolge auftritt. Verbinden Sie dann jeden dieser Indizes mit der Anzahl der Leerzeichen in diesem Lauf. Stellen Sie dann die ursprüngliche Zeichenfolge wieder her, indem Sie die Phrase viermal wiederholen und dann an den richtigen Stellen einfügen. Wenn die Anzahl der aufgezeichneten Leerzeichen Null war, wird stattdessen eine neue Zeile eingefügt.

FryAmTheEggman
quelle
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));}

Probieren Sie es online!

Es ist eine ziemlich naive Implementierung. Zuerst eine Maske für die gedruckten Zeichen, dann einen Rollover über den Text, bis der Vorgang abgeschlossen ist.

  • Dank Carlos Alejo 6 Bytes gespart!
Olivier Grégoire
quelle
Mit können Sie einige Bytes speichern int[]{16515968,33489856,x=58950624,x+16,x-40,31458204,7865230,1966983,462847,233471,117670784,x=134185856,x}.
Charlie
0

Javascript, ungefähre Zeichnung. 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")

^ Für das, was es wert ist, nicht viel, aber bevor ich den fehlgeschlagenen Code lösche.

sq2
quelle