Câu trả lời cho cuộc sống, vũ trụ và nghệ thuật ASCII


25

Thử thách đơn giản: cố gắng xuất văn bản sau thành ít byte nhất có thể:

       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

Bản vẽ gốc chứa 332 ký tự.

Quy tắc

  • Không có đầu vào hoặc đầu vào không sử dụng.
  • Đầu ra có thể ở bất kỳ định dạng hợp lý nào (chuỗi, danh sách các chuỗi, ma trận ký tự, v.v.).
  • Bạn có thể sử dụng chữ hoa thay vì chữ thường cho bản vẽ nếu bạn thích như vậy.
  • Trailing whitespaces và newlines cho phép.
  • Đây là , vì vậy có thể chương trình / chức năng ngắn nhất cho mỗi ngôn ngữ sẽ giành chiến thắng!

Ghi chú

  • Điều này đã được xác định là một bản sao có thể có của Chúng tôi không xa lạ gì với việc chơi golf, bạn biết các quy tắc và tôi cũng vậy . Câu hỏi đó là về tìm kiếm và thay thế văn bản. Ở đây bạn phải vẽ một hình bằng cách sử dụng một văn bản nhất định và ít nhất hai trong số các câu trả lời hiện tại chứng minh rằng các ngôn ngữ chơi gôn có thể đánh bại các thuật toán nén đơn giản trong trường hợp này.

Điều này đến từ hộp cát .
Charlie

1
Cá nhân, tôi nghĩ rằng đây là chủ đề và không phải là một bản dupe. Tôi không nghĩ rằng bạn cần một trích dẫn spoiler, mặc dù.
lập trình

1
@Phoenix Tôi không nghĩ đây là một bản dupe, sogl đã vượt quá bong bóng . Do đó, nén không phải là một cách tối ưu để làm điều này.
lập trình

1
Thành thật mà nói, tôi đã không nhận ra phiếu bầu mở lại của mình là ràng buộc. Vì những lý do đã đề cập bởi @ programmer5000, tôi thực sự không nghĩ rằng đó là một người bị mắc mưu của Chúng tôi không xa lạ gì ... . Nó có thể là một bản sao của một thách thức khác - chưa xác định - thách thức, nhưng không phải là thách thức này.
Arnauld

1
@Nacht phần tốt nhất là ở lần đầu tiên tôi vẽ 42với *nhân vật, và sau đó thay thế chúng bằng các văn bản, mà phù hợp một cách hoàn hảo. Tôi không phải sửa đổi bản vẽ gốc để làm cho câu phù hợp. Sự trùng hợp?
Charlie

Câu trả lời:


21

Python 3 , 224 220 219 215 211 194 byte

  • Cảm ơn @TFeld cho 1 5 byte: if(j%27<1)*jthay vì if j*(j%27<1)và đơn giản hóa câu lệnh in.
  • Cảm ơn @Leaky Nun cho 4 byte: Đảo ngược 0 và 1, không yêu cầu phần đệm bằng số không 7*'0'
  • @Leaky nun đã lưu 17 byte với kỹ năng chơi golf tuyệt vời của mình (Cảm ơn rất nhiều !!!!): sử dụng tuyệt vời cho việc lập chỉ mục mô-đun
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

Hãy thử trực tuyến!

Giải trình:

Sử dụng nén cơ sở 36 để nén số nhị phân này (loại trừ dòng mới)

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

Chúng tôi về cơ bản có hai quầy ij. Khi gặp một 1chúng tôi in một không gian; Khác nếu 0gặp phải chúng tôi in thư tiếp theo từ chuỗi và tăng i. jtăng cho mỗi 0 or 1. Chúng tôi cũng in các dòng mới bất cứ khi nào cần thiết tức là khi j%27<1trở thành sự thật.


1
Bạn có thể tiết kiệm 1 byte bằng cách thay đổi if j*(j%27<1):thànhif(j%27<1)*j:
TFeld


2
201 byte với số học số nguyên
Leaky Nun

2
200 byte với lập chỉ mục mô-đun
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

Hãy thử trực tuyến!

Chuyển sang một cơ sở 36 được mã hóa int của các vị trí của các chữ cái như được gợi ý trong câu hỏi.

Thay thế từng nhân vật một.

       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

Chỉnh sửa: Có vẻ như chính thức sử dụng cơ sở 36 trước tôi.


7

Bong bóng , 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...

Hãy thử trực tuyến!


Làm thế nào bạn tạo ra điều này? Gần nhất tôi có thể nhận được là 127
sĩ523

1
Với zopfli .
Dennis

Tôi đã sử dụng zopfli, nhưng tôi thề tôi đã thử và không theo dõi dòng mới, có thêm khoảng trắng .... không thể nhận được dưới 127
sĩ523

6

05AB1E , 83 79 74 byte

-4 byte nhờ Erik Outgolfer

Xuất ra một danh sách các chuỗi để lưu một byte.

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

Hãy thử trực tuyến!

Giải trình

2ÖH₆Ôn₅Ò\ÊÑĆ¸Ý¾*£„ÔûC∞qΘœ™‚¹µ—₃₄fm là đại diện 255 cơ sở của số thập phân:

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Mã hóa nào chạy 1s và 0s tương ứng, thậm chí các chỉ số là 1s và không đồng đều 0của s. Điều này ước tính cho số nhị phân:

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

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

Thay thế "ÔAo îιË3š1ĆRÕ₃FWš{ÓÛÏ.!XµM§&¶ñD°3PŸ{óNι2Ðbмh"253öbằng •—."Ôq‚Ā0Ál0j¿«ªžé¨0õ₄7“Ÿ!½ÏiæÆø-δq–Å05q½Yñá+•-4.
Erik the Outgolfer 19/07/17

@EriktheOutgolfer cảm ơn, đã cập nhật câu trả lời của tôi và bây giờ tôi cuối cùng cũng biết những thứ này dùng để làm gì :)
kalsowerus

Câu trả lời hay :). Hy vọng bạn tiếp tục học ngôn ngữ. Nếu bạn có bất kỳ câu hỏi hãy nói chuyện với tôi.
Bạch tuộc ma thuật Urn

@MagicOctopusUrn Cảm ơn rất nhiều! :)
kalsowerus

6

Python 2 , 220 213 212 byte

-1 byte bằng cách chuyển ()*4cho %39từ @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

Hãy thử trực tuyến!

Đây là một cách tiếp cận khác với các câu trả lời khác của Python. Tôi sử dụng mã hóa hex base-36 (đã lưu 7 byte) của mã hóa hình ảnh kiểu RLE kiểu PNG (một chuỗi các chữ số cho biết số pixel được lặp lại liên tiếp).

Chuỗi các chữ số là :

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Sau đó, tôi lặp lại qua các chữ số đó và in xen kẽ số 'hoặc ký tự đó từ bảng màu (' theanswer ... '). Khi có nhiều hơn 9 ký tự được lặp lại, tôi chỉ cần thêm 0 và phần còn lại.


+1 cho cách tiếp cận khác nhau. Bạn có thể lưu một byte bằng cách sử dụng "theanswertolifetheuniverseandeverything"[w%39] TIO
chính thức

Cảm ơn và chú ý. Tôi đã cố gắng thực hiện nó cùng với một thay thế 'hoặc' cho thiết lập boolean khung mà tôi có ở đây, nhưng nó làm rối tung các dòng mới của tôi ...
Coty Johnathan Saxman

Tôi không biết PNG đã sử dụng thuật toán nén này - tôi nghĩ đó là GIF.
wizzwizz4

Bắt đẹp. Đó không phải là PNG (cũng không phải GIF), mà thực sự là RLE. Tôi sẽ thêm một liên kết đến câu trả lời.
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

Hãy thử nó ở đây!

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

5

Cho phép tôi trả lời câu hỏi của riêng mình ...

Than , 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υω²⁷⸿

Hãy thử trực tuyến!

Bạn có ở đây một liên kết đến phiên bản dài gần nhất.

Giải thích (xem phiên bản dài dòng để biết chi tiết):

  • Các )%*(+&(+)''%'%'('%'%&%#%'%'%%%$%-&%%%%+&&%&%)&(.&%*.%%2%'%(%)%'.)%'.chuỗi (68 byte, 48 byte nén) là một biểu tượng của RLE mã hóa của bản vẽ. Mỗi mã char trừ 34 là số khoảng trắng (vị trí chẵn) hoặc số ký tự văn bản (vị trí lẻ) để in liên tiếp.
  • Thuật toán chỉ giải nén chuỗi được mã hóa RLE và ghi char tiếp theo của gtheanswertolifetheuniverseandeverythinchuỗi (39 byte, nén 27 byte) mỗi khi cần viết một ký tự không phải khoảng trắng. Khi tôi kiểm tra độ dài của danh sách để lấy ký tự tiếp theo và danh sách đó bắt đầu bằng một phần tử, ký tự cuối cùng của chuỗi được viết ở vị trí đầu tiên.
  • Cứ 27 ký tự viết tôi lại chèn một dòng mới.

Lời cảm ơn

  • Rất cám ơn Neil và những lời khuyên tuyệt vời của anh ấy đã cho phép tôi tiết kiệm 28 byte và cuối cùng có thể đánh bại Bubblegum. :-)

1
Nếu bạn sử dụng Assign(Minus(1, c), c);thì bạn chỉ có thể sử dụng if (c) { ... } else Print(" ");.
Neil

Trên thực tế nếu bạn sử dụng for (68)AtIndex("...", i)sau đó bạn có thể sử dụng Modulo(i, 2)thay thế và bạn hoàn toàn không cần c.
Neil

Và nếu bạn sử dụng if (Not(Modulo(Length(PushOperator(u, w)), 27)))thì bạn cũng không cần a.
Neil

Oh, và AtIndexlàm một tự động Modulonhư vậy Modulo(b, 39)có thể được chỉ b.
Neil

1
ulà một biến được xác định trước chỉ là một mảng trống (tiết kiệm sử dụng A⟦⟧υ). Mỗi khi bạn đẩy một cái gì đó lên nó, chiều dài của nó tăng thêm 1. Điều này ngắn hơn một sự phân công rõ ràng cho sự gia tăng.
Neil

5

JavaScript (ES6), 207 205 203 byte

Trả về một chuỗi các chuỗi với một số khoảng trắng ở cuối.

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


4

Võng mạc , 183 byte


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

Hãy thử trực tuyến! Giải thích: Giai đoạn đầu tiên thêm mã hóa RLE của bitmap ô và văn bản, giai đoạn thứ hai sau đó nhân đôi với độ dài chính xác, trong khi giai đoạn thứ ba giải mã mã hóa RLE. Giai đoạn thứ tư sau đó di chuyển văn bản vào các ô.


4

Thạch , 83 byte

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

“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

3

Thêm ++ , 1398 byte

+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

Hãy thử trực tuyến!

Có vẻ như mã hóa cứng là cách ngắn nhất (ít nhất là trong Add ++)


3

Vim, gõ phím 239

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

Linebreaks được thêm vào cho "khả năng đọc"

Giải trình

Dòng đầu tiên được sắp xếp life, the universe and everythingtừ một trang trợ giúp, ngắn hơn một byte so với việc chỉ cần gõ nó ra. Sau đó, nó biến điều này thành:

theanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverything

Dòng thứ hai phá vỡ chuỗi thành:

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

Và sau đó dòng cuối cùng thụt lề để thực hiện:

       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



2

JavaScript, 215 byte

giải pháp dựa trên khách44851

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

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

Hãy thử trực tuyến!

Giải trình Tương tự như các giải pháp Python nhưng tôi đã sử dụng Mã hóa độ dài chạy trước khi chuyển đổi sang cơ sở 36. Vì vậy, chuỗi dữ liệu chỉ có 54 ký tự thay vì 68.

Nhưng nó vẫn kết thúc lâu hơn tất cả, hy vọng nó có thể được chơi gôn hơn nữa.



2

C (gcc) , 220 219 217 213 210 byte

-1 byte nhờ trần

-3 byte nhờ 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);}

Hãy thử trực tuyến!


Một hàm chỉ có một nửa chương trình - chỉ cần sử dụng một chương trình đầy đủ cho 214 byte
Jerry Jeremiah

@JerryJeremiah Rất đúng; bắt tốt đẹp! Cũng có thể cạo thêm một byte từ nó.
dạ dày

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

Vài byte tắt nhờ @tsh.

Câu đố


.substr -> .slice (1) lưu một số byte
tsh

"Đầu ra có thể nằm trong danh sách chuỗi", vì vậy hãy bỏ quajoin
tsh

@tsh. Cảm ơn. . .

1

Bình thường , 121 byte

Điều này chứa quá nhiều byte mà tôi không thể hiển thị trong TIO, vì vậy đây là một 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.....

Hãy thử trực tuyến!

Bạn có thể thêm một cuộc gọi đến wchoặc xxdtrong tập lệnh bash để xem độ dài byte hoặc hexdump mà tôi đã tạo ở trên.

Thật thú vị, chương trình này cho thấy một lỗi nhỏ (?) Trong Pyth. Bất kỳ byte trả về vận chuyển (0x0d) đều được đọc dưới dạng byte dòng mới (0x0a) khi ở dạng chuỗi ký tự. Điều này buộc tôi phải thêm 6 byte: X ... ]T]13thay thế mười không chính xác bằng mười ba.

Mặt khác, ý tưởng đằng sau mã này khá đơn giản: ghi lại từng vị trí nơi xảy ra một khoảng trắng. Sau đó, ghép từng chỉ số đó với số khoảng trắng trong lần chạy đó. Sau đó, xây dựng lại chuỗi gốc bằng cách lặp lại cụm từ bốn lần, sau đó chèn vào đúng vị trí. Nếu số lượng khoảng trắng được ghi bằng 0, thay vào đó một dòng mới được chèn vào.


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

Hãy thử trực tuyến!

Đó là một thực hiện khá ngây thơ. Đầu tiên là mặt nạ, cho các ký tự được in, sau đó cuộn qua văn bản cho đến khi hoàn thành.

  • 6 byte được lưu nhờ Carlos Alejo!

Bạn có thể lưu một số byte với int[]{16515968,33489856,x=58950624,x+16,x-40,31458204,7865230,1966983,462847,233471,117670784,x=134185856,x}.
Charlie

0

Javascript, bản vẽ gần đúng. 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")

^ cho những gì nó có giá trị, thực sự không nhiều, nhưng trước khi tôi xóa mã thất bại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.