Hayata cevap, evren ve ASCII-sanat


25

Basit zorluk: Aşağıdaki metni olabildiğince az byte olarak basmayı deneyin:

       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

Orijinal çizim 332 karakter içeriyor.

kurallar

  • Giriş yok veya kullanılmayan bir giriş.
  • Çıktı, herhangi bir makul formatta olabilir (string, string listesi, karakter matrisi vb.).
  • İsterseniz çizim için küçük harf yerine büyük harf kullanabilirsiniz.
  • İzleyen beyaz boşluklara ve yeni satırlara izin verilir.
  • Bu , yani her dil için en kısa program / işlev kazanabilir!

notlar


Bu kum havuzundan geliyor .
Charlie

1
Şahsen, bence bu konuyla ilgili ve bir dupe değil. Yine de bir spoiler fiyatına ihtiyacın olduğunu sanmıyorum.
programmer5000

1
Bunun bir dupe, sanmıyorum @Phoenix sogl outgolfed etti sakız . Bu nedenle, sıkıştırma bunu yapmanın en uygun yolu değildir.
programmer5000

1
Dürüst olmak gerekirse, açılış oyumun bağlayıcı olduğunu bilmiyordum. Zaten @ programmer5000 tarafından belirtilen nedenlerden dolayı, gerçekten ait bir dupe olduğunu sanmıyorum ... Biz hiçbir yabancıyız . Zorla tanımlamak - henüz tanımlamak için - başka bir sorun olabilir ama bu değil.
Arnauld,

1
En iyi parçası @Nacht ilk I'de çekti olmasıdır 42ile *karakterler ve sonra mükemmel uyum metin, onları değiştirdi. Cümlenin sığdırılması için orijinal çizimi değiştirmek zorunda değildim. Tesadüf?
Charlie,

Yanıtlar:


21

Python 3 , 224 220 219 215 211 194 bayt

  • 1 5 baytlık @TFeld'e teşekkürler : if(j%27<1)*jyerine if j*(j%27<1)ve basitleştirilmiş print ifadesi.
  • 4 baytlık @Leaky Nun sayesinde: 0 ve 1'i tersine çevirmek, sıfırları doldurmayı gerektirmedi 7*'0'
  • @Leaky rahibesi harika golf becerisiyle 17 bayt kurtardı (Çok teşekkürler !!!!): modüler indekslemenin muhteşem kullanımı
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

Çevrimiçi deneyin!

Açıklama:

Bu ikili sayıyı sıkıştırmak için base-36 sıkıştırması kullanır (yeni satır hariç)

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

Temel olarak iki sayacımız var ive j. Karşılaştığımıza göre bir 1boşluk basarız; Aksi takdirde 0, dizeden bir sonraki harfi basar ve artırırız i. jher biri için artar 0 or 1. Ayrıca gerektiğinde, yani ne zaman gerçekleşirse yeni satırlar da yazdırıyoruz j%27<1.


1
Sen değiştirerek 1 byte kaydedebilirsiniz if j*(j%27<1):içinif(j%27<1)*j:
TFeld


2
Tamsayı aritmetiğine sahip 201 bayt
Leaky Nun

2
Modüler indeksleme ile 200 bayt
Leaky Nun


8

Python 2 , 235 218 213 bayt

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

Çevrimiçi deneyin!

Soruların ima ettiği gibi harflerin konumlarının int kodlanmış bir tabana 36 geçildi.

Her karakteri tek tek değiştirir.

       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

Düzenleme: officialaimm benden önce baz 36 kullanılmış görünüyor .


7

Ciklet , 125 bayt

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

Çevrimiçi deneyin!


Bunu nasıl ürettiniz?
Alabileceğim

1
İle zopfli .
Dennis,

Zopfli kullandım ama yemin ederim yeni hatlarla izlemeden ve izlemeden denedim, fazladan boşluklarla .... 127 yaşına giremedi
musicman523

6

05AB1E , 83 79 74 bayt

Outgolfer Erik sayesinde -4 bayt

Bir bayt kaydetmek için dizelerin bir listesini çıkarır.

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

Çevrimiçi deneyin!

açıklama

2ÖH₆Ôn₅Ò\ÊÑĆ¸Ý¾*£„ÔûC∞qΘœ™‚¹µ—₃₄fm ondalık sayının taban 255 temsilidir:

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Sırasıyla 1s ve 0s 1kodlarını çalıştıran endeksler, hatta s ve eşit olmayanlarıdır 0. Bu ikili sayıya göre değerlendirilir:

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

kod

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

-4 "ÔAo îιË3š1ĆRÕ₃FWš{ÓÛÏ.!XµM§&¶ñD°3PŸ{óNι2Ðbмh"253öile değiştirin •—."Ôq‚Ā0Ál0j¿«ªžé¨0õ₄7“Ÿ!½ÏiæÆø-δq–Å05q½Yñá+•.
Outgolfer'lı Erik,

@EriktheOutgolfer teşekkürler, cevabımı güncelledi ve şimdi nihayet bunların ne olduğunu biliyorum :)
kalsowerus

Güzel cevap :). Umarım dili öğrenmeye devam edersin. Herhangi bir sorunuz varsa benimle sohbet etmekten çekinmeyin.
Magic Octopus Urn,

@MagicOctopusUrn Çok teşekkürler! :)
kalsowerus

6

Python 2 , 220 213 212 bayt

Geçerek -1 bayt ()*4için %39gelen @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

Çevrimiçi deneyin!

Bu, diğer Python cevaplarından farklı bir yaklaşımdır. Resmin PNG tarzı RLE tarzı kodlamasını (ardışık tekrarlanan piksel sayısını gösteren bir rakam dizesi ) kodlayan bir hex base 36 (kaydedilmiş 7 bayt ) kullanın.

Rakam dizesi :

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Sonra bu rakamlar arasında yineleniyorum ve dönüşümlü olarak bu '' ya da karakterleri paletten ('theanswer ...') yazdırıyorum. Bir karakterin 9'dan fazlası tekrarlandığında, sadece 0 ve sonra kalanları eklerdim.


Farklı yaklaşım için +1. "theanswertolifetheuniverseandeverything"[w%39] TIO
officialaimm

Teşekkürler ve kaydetti. Şimdi sahip olduğum braket boolean kurulumunun yerini 'veya' yerine koymaya çalışıyordum, ama bu yeni
hatlarını mahvetti

PNG'nin bu sıkıştırma algoritmasını kullandığını bilmiyordum - GIF olduğunu düşündüm.
wizzwizz4

İyi yakaladın. PNG (ya da GIF) değildi, ama aslında RLE. Cevaba bir link ekleyeceğim.
Coty Johnathan Saxman,

5

SOGL V0.12 , 74 bayt

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

Burada dene!

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

Kendi soruma cevap vermeme izin verin ...

Kömür , 140 126 112 bayt

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

Çevrimiçi deneyin!

Burada en yakın ayrıntılı sürüme bir bağlantı var .

Açıklama (detaylar için ayrıntılı versiyona bakınız):

  • )%*(+&(+)''%'%'('%'%&%#%'%'%%%$%-&%%%%+&&%&%)&(.&%*.%%2%'%(%)%'.)%'.Dizisi (68 bayt, sıkıştırılmış 48 bayt) çizimin RLE-kodlayan bir temsilidir. Her karakter kodu eksi 34, arka arkaya yazdırılacak boşlukların sayısı (hatta konumlar) veya metin karakterlerinin sayısı (tek sıralar).
  • Algoritma sadece RLE kodlu dizgiyi gtheanswertolifetheuniverseandeverythinaçar ve beyaz olmayan bir karakterin her yazılması gerektiğinde dizginin bir sonraki karakterini (39 byte, 27 byte sıkıştırılmış) yazar. Bir sonraki karakteri almak için bir listenin uzunluğunu kontrol ettiğimde ve bu liste bir elemanla başladığında, dizenin son karakteri ilk pozisyonda yazılır.
  • Yazılan her 27 karakter yeni bir satır eklerim.

Teşekkür

  • Neil'e ve 28 byte tasarruf etmeme ve nihayet Bubblegum'u yenebilmeme izin verdiği için müthiş ipuçları. :-)

1
Eğer kullanırsan Assign(Minus(1, c), c); o zaman kullanabilirsin if (c) { ... } else Print(" ");.
Neil

Aslında kullanırsanız for (68)ve AtIndex("...", i)sonra kullanabilirsinizModulo(i, 2) hiç ihtiyacınız yok c.
Neil

Ve eğer kullanırsan if (Not(Modulo(Length(PushOperator(u, w)), 27))) o zaman aikisine de ihtiyacın olmaz .
Neil

Oh, ve AtIndexbir otomatik yapar, Modulobu yüzden Modulo(b, 39)olabilir b.
Neil

1
u Sadece boş bir dizi olan önceden tanımlanmış bir değişkendir. A⟦⟧υ ). Bir şeye her bastığınızda uzunluğu 1 artar. Bu, artırıma yapılan açık bir atamadan daha kısadır.
Neil

5

JavaScript (ES6), 207 205 203 bayt

Bazı sondaki boşluklara sahip bir dizi dizge döndürür.

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

Retina , 183 bayt


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

Çevrimiçi deneyin! Açıklama: İlk aşama hücre bitmapinin RLE kodlamasını ve ikinci aşama daha sonra doğru uzunluğa kopyalanan metni, ve üçüncü aşama RLE kodlamasını deşifre eden metni ekler. Dördüncü aşama, metni metni hücrelere taşır.


4

Jöle , 83 bayt

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

Çevrimiçi deneyin!

Nasıl çalışır

“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

++ , 1398 bayt ekle

+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

Çevrimiçi deneyin!

En kısa yoldan kodlamaya benziyor (en azından Add ++ ile)


3

Vim, 239 tuş vuruşlarını

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

"Okunabilirlik" için satır çubukları eklendi

açıklama

İlk satır life, the universe and everything, basitçe yazmaktan bir bayt daha kısa olan bir yardım sayfasından yanar . Sonra bunu şuna çevirir:

theanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverything

İkinci satır dizeyi ayrıştırır:

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

Ve son satırın yapması gerekenler:

       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

3

Jöle , 76 bayt

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

Çevrimiçi deneyin!


2

Retina , 185 bayt


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

Çevrimiçi deneyin!


2

JavaScript, 215 bayt

guest44851'e göre çözüm

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

2

Ruby , 216 bayt

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

Çevrimiçi deneyin!

Açıklama Python çözümlerine benzer, ancak ben 36 tabanına dönüştürmeden önce Run Length Encoding kullandım. Dolayısıyla veri dizesi 68 yerine sadece 54 karakterdir.

Ama yine de her şeyden daha uzun sürdü, umarım daha da golf oynayabilir.



2

C (gcc) , 220 219 217 213 210 bayt

Ceilingcat sayesinde -1 bayt

Jerry Jeremiah sayesinde -3 bayt

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

Çevrimiçi deneyin!


Bir fonksiyon sadece yarım programdır - sadece 214 bayt
Jerry Jeremiah 21

@JerryJeremiah Çok doğru; iyi yakaladın! Ondan bir bayt daha alabilir miyiz?
gastropner

1

JavaScript, 265 237 219 bayt

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

@Tsh sayesinde birkaç bayt kapalı.

JSFiddle


.substr -> .slice (1) bazı baytları kaydedin
tsh

"Çıktı dizginin listesinde olabilir" bu yüzden sadece atlayınjoin
tsh

@tsh. Teşekkürler. . .

1

Pyth , 121 bayt

Bu, TIO'da gösteremediğim çok fazla bayt içeriyordu, işte burada bir 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.....

Çevrimiçi deneyin!

Yukarıda üretilen bayt uzunluğu veya hexdump görmek için bash betiğine wcveya bir çağrı ekleyebilirsiniz xxd.

İlginç bir şekilde, bu program Pyth'ta küçük bir hata (?) Gösteriyor. Herhangi bir satırbaşı baytı (0x0d), dize değişmezleri olduğunda newline bayt (0x0a) olarak okunur. Bu beni 6 bayt eklemeye zorlar: X ... ]T]13yanlış olanı on üç ile değiştirmek.

Aksi takdirde, bu kodun arkasındaki fikir oldukça basitti: bir boşluk alanı oluştuğu her konumu kaydedin. Ardından, bu indekslerin her birini o çalıştırmadaki boşluk sayısı ile eşleştirin. Sonra, ifadeyi dört kez tekrar edip, doğru yerlere yerleştirerek orijinal dizgiyi yeniden oluşturun. Kaydedilen boşluk sayısı sıfırsa, bunun yerine yeni satır eklenir.


1

Java (OpenJDK 8) , 258 252 251 bayt

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

Çevrimiçi deneyin!

Oldukça saf bir uygulama. Önce yazdırılan karakterler için bir maske, sonra bitene kadar metin üzerinde bir rulo.

  • Carlos Alejo sayesinde 6 bayt kurtarıldı!

Bazı baytları ile kaydedebilirsiniz int[]{16515968,33489856,x=58950624,x+16,x-40,31458204,7865230,1966983,462847,233471,117670784,x=134185856,x}.
Charlie

0

Javascript, yaklaşık çizim. 319 bayt

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

^ Buna değer, gerçekten değil, ama başarısız kodu silmeden önce.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.