Jawaban atas kehidupan, alam semesta, dan seni ASCII

25

Tantangan sederhana: cobalah untuk menghasilkan teks berikut dalam beberapa byte yang Anda bisa:

       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

Gambar aslinya berisi 332 karakter.

Aturan

  • Tidak ada input atau input yang tidak digunakan.
  • Output dapat dalam format apa pun yang wajar (string, daftar string, matriks karakter, dan sebagainya).
  • Anda dapat menggunakan huruf besar alih-alih huruf kecil untuk menggambar jika Anda mau.
  • Trailing spasi putih dan baris baru diizinkan.
  • Ini adalah , jadi semoga program / fungsi terpendek untuk setiap bahasa menang!

Catatan

  • Ini telah diidentifikasi sebagai kemungkinan duplikat dari Kami tidak asing dengan kode golf, Anda tahu aturannya, dan saya juga . Pertanyaan itu adalah tentang mencari dan mengganti teks. Di sini Anda harus menggambar bentuk menggunakan teks yang diberikan, dan setidaknya dua jawaban saat ini menunjukkan bahwa bahasa golf dapat mengalahkan algoritma kompresi biasa dalam kasus ini.
Charlie
sumber
Ini berasal dari kotak pasir .
Charlie
1
Secara pribadi, saya pikir ini adalah topik dan bukan penipuan. Saya tidak berpikir Anda membutuhkan kutipan spoiler.
programmer5000
1
@ Phenix Saya tidak berpikir ini adalah penipuan, sogl telah mengalahkan permen karet . Oleh karena itu, kompresi bukanlah cara optimal untuk melakukan ini.
programmer5000
1
Sejujurnya, saya tidak menyadari suara pembukaan kembali saya mengikat. Untuk alasan yang telah disebutkan oleh @ programmer5000, saya benar-benar tidak berpikir itu korban penipuan dari Kami tidak asing ... . Ini mungkin merupakan penipuan dari yang lain - belum mengidentifikasi - tantangan, tetapi bukan yang ini.
Arnauld
1
@Nacht bagian terbaiknya adalah pada awalnya saya menggambar 42dengan *karakter, dan kemudian menggantinya dengan teks, yang sangat pas. Saya tidak perlu memodifikasi gambar asli agar kalimatnya pas. Kebetulan?
Charlie

Jawaban:

21

Python 3 , 224 220 219 215 211 194 byte

  • Terima kasih kepada @TFeld untuk 1 5 byte: if(j%27<1)*jbukan if j*(j%27<1)dan pernyataan cetak yang disederhanakan.
  • Terima kasih kepada @Leaky Nun untuk 4 byte: Membalik 0 dan 1, tidak memerlukan padding dengan nol 7*'0'
  • Suster @Leaky menyelamatkan 17 byte dengan kemampuan bermain golfnya yang luar biasa (Terima kasih banyak !!!!): penggunaan pengindeksan modular yang mengagumkan
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

Cobalah online!

Penjelasan:

Menggunakan kompresi base-36 untuk mengompresi angka biner ini (tidak termasuk baris baru)

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

Kami pada dasarnya memiliki dua counter idan j. Pada pertemuan 1kami mencetak spasi; Jika 0tidak ditemukan, kami mencetak huruf berikutnya dari string dan meningkatkan i. jmeningkat untuk masing-masing 0 or 1. Kami juga mencetak baris baru kapan pun diperlukan, yaitu ketika j%27<1menjadi benar.

officialaimm
sumber
1
Anda dapat menyimpan 1 byte dengan mengubah if j*(j%27<1):keif(j%27<1)*j:
TFeld
2
205 byte
Leaky Nun
2
201 byte dengan aritmatika integer
Leaky Nun
2
200 byte dengan pengindeksan modular
Leaky Nun
2
194 byte
Leaky Nun
8

Python 2 , 235 218 213 byte

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

Cobalah online!

Beralih ke basis 36 yang disandikan untuk posisi surat sebagaimana diisyaratkan dalam pertanyaan mereka.

Mengganti setiap karakter satu per satu.

       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

Sunting: Sepertinya officialaimm menggunakan base 36 sebelum saya.

TFeld
sumber
7

Bubblegum , 125 byte

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

Cobalah online!

Dennis
sumber
Bagaimana Anda menghasilkan ini? Yang paling dekat yang bisa saya dapatkan adalah 127
musicman523
1
Dengan zopfli .
Dennis
Saya memang menggunakan zopfli, tetapi saya bersumpah saya mencoba dengan dan tanpa mengikuti baris baru, dengan ruang tambahan .... tidak bisa di bawah 127
musicman523
6

05AB1E , 83 79 74 byte

-4 byte terima kasih kepada Erik the Outgolfer

Menghasilkan daftar string untuk menyimpan byte.

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

Cobalah online!

Penjelasan

2ÖH₆Ôn₅Ò\ÊÑĆ¸Ý¾*£„ÔûC∞qΘœ™‚¹µ—₃₄fm adalah representasi basis 255 dari angka desimal:

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Yang mengkodekan menjalankan 1s dan 0s masing-masing, bahkan indeks menjadi 1s dan tidak rata indeices 0s. Ini mengevaluasi ke nomor biner:

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

Kode

•...•                                         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
sumber
Ganti "ÔAo îιË3š1ĆRÕ₃FWš{ÓÛÏ.!XµM§&¶ñD°3PŸ{óNι2Ðbмh"253ödengan •—."Ôq‚Ā0Ál0j¿«ªžé¨0õ₄7“Ÿ!½ÏiæÆø-δq–Å05q½Yñá+•untuk -4.
Erik the Outgolfer
@EriktheOutgolfer terima kasih, memperbarui jawaban saya dan sekarang saya akhirnya tahu untuk apa ini :)
kalsowerus
Jawaban bagus :). Semoga Anda terus belajar bahasa. Jika Anda memiliki pertanyaan, jangan ragu untuk mengobrol dengan saya.
Magic Gurita Guci
@ MagicOctopusUrn Terima kasih banyak! :)
kalsowerus
6

Python 2 , 220 213 212 byte

-1 byte dengan beralih ()*4untuk %39dari @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

Cobalah online!

Ini adalah pendekatan yang berbeda dari jawaban Python lainnya. Saya menggunakan pengkodean hex base-36 (disimpan 7 byte) dari pengkodean gambar RLE-style- PNG-style gambar (string angka yang menunjukkan jumlah piksel berulang berurutan).

String digit adalah :

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Kemudian saya mengulangi angka-angka itu dan secara bergantian mencetak angka atau karakter dari palet ('theanswer ...'). Ketika lebih dari 9 karakter diulang, saya cukup menambahkan 0 dan sisanya.

Coty Johnathan Saxman
sumber
+1 untuk pendekatan yang berbeda. Anda dapat menyimpan byte dengan menggunakan "theanswertolifetheuniverseandeverything"[w%39] TIO
officialaimm
Terima kasih dan catat. Saya sedang mencoba untuk mengerjakannya bersama dengan pengganti 'atau' untuk pengaturan braket boolean yang saya miliki di sini sekarang, tapi itu mengacaukan baris baru saya ...
Coty Johnathan Saxman
Saya tidak tahu PNG menggunakan algoritma kompresi ini - saya pikir itu GIF.
wizzwizz4
Tangkapan bagus. Bukan PNG (atau GIF), tetapi sebenarnya RLE. Saya akan menambahkan tautan ke jawabannya.
Coty Johnathan Saxman
5

SOGL V0.12 , 74 byte

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

Coba Di Sini!

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

Izinkan saya untuk menjawab pertanyaan saya sendiri ...

Arang , 140 126 112 byte

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

Cobalah online!

Di sini Anda memiliki tautan ke versi verbose terdekat.

Penjelasan (lihat versi verbose untuk detail):

  • The )%*(+&(+)''%'%'('%'%&%#%'%'%%%$%-&%%%%+&&%&%)&(.&%*.%%2%'%(%)%'.)%'.String (68 byte, 48 byte dikompresi) adalah representasi dari RLE-encoding gambarnya. Setiap kode char minus 34 adalah jumlah spasi (posisi genap) atau jumlah karakter teks (posisi ganjil) untuk dicetak secara berurutan.
  • Algoritma hanya mendekompresi string RLE-encoded dan menulis karakter selanjutnya dari gtheanswertolifetheuniverseandeverythinstring (39 byte, 27 byte dikompresi) setiap kali karakter non-spasi putih perlu ditulis. Ketika saya memeriksa panjang daftar untuk mendapatkan karakter berikutnya dan daftar itu dimulai dengan satu elemen, karakter terakhir dari string ditulis di posisi pertama.
  • Setiap 27 karakter tertulis saya masukkan baris baru.

Ucapan Terima Kasih

  • Banyak terima kasih kepada Neil dan tipsnya yang luar biasa karena memungkinkan saya untuk menghemat 28 byte dan akhirnya bisa mengalahkan Bubblegum. :-)
Charlie
sumber
1
Jika Anda menggunakan Assign(Minus(1, c), c);maka Anda bisa menggunakannya if (c) { ... } else Print(" ");.
Neil
Sebenarnya jika Anda menggunakan for (68)dan AtIndex("...", i)kemudian Anda dapat menggunakannya Modulo(i, 2)dan Anda tidak perlu csama sekali.
Neil
Dan jika Anda menggunakan if (Not(Modulo(Length(PushOperator(u, w)), 27)))maka Anda juga tidak perlu a.
Neil
Oh, dan AtIndexmelakukan otomatis Modulojadi Modulo(b, 39)bisa adil b.
Neil
1
uadalah variabel standar yang hanya berupa array kosong (menghemat penggunaan A⟦⟧υ). Setiap kali Anda mendorong sesuatu ke dalamnya, panjangnya bertambah 1. Ini lebih pendek daripada penugasan eksplisit untuk penambahan.
Neil
5

JavaScript (ES6), 207 205 203 byte

Mengembalikan array string dengan beberapa spasi tambahan.

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
sumber
4

Retina , 183 byte


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

Cobalah online! Penjelasan: Tahap pertama menambahkan pengkodean RLE dari bitmap sel dan teks, yang kemudian diduplikasi oleh tahap kedua ke panjang yang benar, sedangkan tahap ketiga menerjemahkan pengkodean RLE. Tahap keempat kemudian memindahkan teks ke dalam sel.

Neil
sumber
4

Jelly , 83 byte

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

Cobalah online!

Bagaimana itu bekerja

“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
Biarawati Bocor
sumber
3

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

Cobalah online!

Sepertinya hardcoding itu adalah cara terpendek (setidaknya di Add ++)

caird coinheringaahing
sumber
3

Vim, 239 penekanan tombol

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

Linebreak ditambahkan untuk "keterbacaan"

Penjelasan

Baris pertama menarik life, the universe and everythingdari halaman bantuan, yang satu byte lebih pendek dari sekadar mengetiknya. Itu kemudian mengubahnya menjadi ini:

theanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverything

Baris kedua memecah string menjadi:

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

Dan kemudian baris terakhir membuat indentasi untuk membuat:

       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
sumber
3

Jelly , 76 byte

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

Cobalah online!

Dennis
sumber
2

Retina , 185 byte


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

Cobalah online!

ovs
sumber
2

JavaScript, 215 byte

solusi berdasarkan guest44851

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

Ruby , 216 byte

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}/

Cobalah online!

Penjelasan Mirip dengan solusi Python tapi saya menggunakan Run Length Encoding sebelum mengkonversi ke basis 36. Jadi string data hanya 54 karakter, bukan 68.

Tapi itu masih berakhir lebih lama dari semua, semoga bisa bermain golf lebih lanjut.

Simon George
sumber
2

Port jawaban Arang saya :

C # (.NET Core) , 229 byte

_=>{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;}

Cobalah online!

Charlie
sumber
2

C (gcc) , 220 219 217 213 210 byte

-1 byte berkat ceilingcat

-3 byte terima kasih untuk 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);}

Cobalah online!

gastropner
sumber
Suatu fungsi hanya setengah dari program - cukup gunakan program penuh untuk 214 byte
Jerry Jeremiah
@JerryJeremiah Sangat benar; tangkapan bagus! Bisa mencukur satu byte lagi dari itu juga.
gastropner
1

JavaScript, 265 237 219 byte

(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]))

Beberapa byte mati berkat @tsh.

JSFiddle


sumber
.substr -> .slice (1) simpan beberapa byte
tsh
"Output bisa dalam daftar string" jadi lewati sajajoin
tsh
@ tsh. Terima kasih. . .
1

Pyth , 121 byte

Ini berisi terlalu banyak byte yang tidak bisa saya tampilkan di TIO, jadi inilah 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.....

Cobalah online!

Anda dapat menambahkan panggilan ke wc atau xxddalam skrip bash untuk melihat panjang byte atau hexdump yang saya buat di atas.

Menariknya, program ini menunjukkan bug minor (?) Di Pyth. Setiap carriage return byte (0x0d) dibaca sebagai byte baris baru (0x0a) saat dalam string literal. Ini memaksa saya untuk menambah 6 byte:X ... ]T]13 untuk mengganti yang salah dengan yang tigabelas.

Kalau tidak, ide di balik kode ini cukup sederhana: catat setiap posisi tempat dijalankannya spasi putih. Lalu, pasangkan masing-masing indeks tersebut dengan jumlah spasi dalam proses itu. Kemudian, buat kembali string asli dengan mengulangi frasa empat kali, kemudian masukkan di lokasi yang benar. Jika jumlah spasi yang dicatat adalah nol, sebagai gantinya baris baru dimasukkan.

FryAmTheEggman
sumber
1

Java (OpenJDK 8) , 258 252 251 byte

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

Cobalah online!

Ini implementasi yang agak naif. Pertama topeng, untuk karakter yang dicetak, lalu berguling teks sampai selesai.

  • 6 byte disimpan berkat Carlos Alejo!
Olivier Grégoire
sumber
Anda dapat menyimpan beberapa byte dengan int[]{16515968,33489856,x=58950624,x+16,x-40,31458204,7865230,1966983,462847,233471,117670784,x=134185856,x}.
Charlie
0

Javascript, gambar perkiraan. 319 byte

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")

^ untuk apa nilainya, tidak terlalu banyak, tetapi sebelum saya menghapus kode gagal.

sq2
sumber