Відповідь на життя, Всесвіт та ASCII-мистецтво


25

Просте завдання: спробуйте вивести наступний текст у кількох байтах:

       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

Оригінальний малюнок містить 332 символи.

Правила

  • Ні вводу, ні невикористаного вводу.
  • Вихід може бути у будь-якому розумному форматі (рядок, список рядків, матриця символів тощо).
  • Ви можете використовувати великі регістри замість малих літер для малювання, якщо так віддаєте перевагу.
  • Дозволені пробіли пробілів та нових рядків.
  • Це , тому може виграти найкоротша програма / функція для кожної мови!

Примітки

  • Це було визначено як можливий дублікат: Ми не чужі люди, кодуючи гольф, ви знаєте правила, і я . Це питання стосувалось пошуку та заміни тексту. Тут ви повинні намалювати фігуру, використовуючи заданий текст, і принаймні дві нинішні відповіді демонструють, що мови гольфу в цьому випадку можуть перемогти звичайні алгоритми стиснення.

Це відбувається з пісочниці .
Чарлі

1
Особисто я вважаю, що це тематично, а не глупо. Я не думаю, що вам потрібна цитата спойлера.
програміст5000

1
@Phoenix Я не думаю , що це боян, sogl має outgolfed цукерка . Тому стиснення не є оптимальним способом цього зробити.
програміст5000

1
Якщо чесно, я не розумів, що мій голос за повторне відкриття був обов'язковим. З причин, про які вже згадував @ programmer5000, я дійсно не вважаю, що це дурня " Ми не чужі люди ..." . Це може бути викликом іншого - ще не визначити - виклику, але не цього.
Арнольд

1
@Nacht кращої частини є те , що я спочатку намалював 42з *символами, а потім замінити їх з текстом, які підходять ідеально. Мені не довелося змінювати оригінальний малюнок, щоб пропозиція підходила. Збіг?
Чарлі

Відповіді:


21

Пітон 3 , 224 220 219 215 211 194 байт

  • Завдяки @TFeld за 1 5 байт: if(j%27<1)*jзамість if j*(j%27<1)спрощеного оператора друку.
  • Завдяки @Leaky Nun за 4 байти: перевертаючи 0 і 1, не знадобилось пробивання нулями 7*'0'
  • @Laaky черниця врятувала 17 байт своїми чудовими навичками в гольфі (велике спасибі !!!!): чудове використання модульної індексації
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

Спробуйте в Інтернеті!

Пояснення:

Для стиснення цього двійкового числа використовується стиснення base-36 (виключається новий рядок)

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

У нас в основному є два лічильника iі j. Зустрічаючи a, 1ми друкуємо пробіл; В іншому випадку, якщо 0трапляється, ми друкуємо наступний лист із рядка та збільшуємо i. jзбільшується для кожного 0 or 1. Ми також друкуємо нові рядки, коли це необхідно, тобто коли це j%27<1стає істинним.


1
Ви можете зберегти 1 байт, змінивши if j*(j%27<1):наif(j%27<1)*j:
TFeld


2
201 байт з цілою арифметикою
Leaky Nun

2
200 байт з модульною індексацією
Leaky Nun


8

Python 2 , 235 218 213 байт

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

Спробуйте в Інтернеті!

Переключено на основу 36, закодовану int з позицій літер, як натякає на те питання.

Замінює кожного символу по одному.

       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

Редагувати: Здається, офіційний прийом використовував перед собою базу 36.


7

Bubblegum , 125 байт

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

Спробуйте в Інтернеті!


Як ти це створив? Найближчим, що я міг отримати, було 127
музикант523


Я користувався zopfli, але клянусь, я спробував і без трейлінг нових рядків, з додатковими пробілами .... не міг потрапити під 127
musicman523

6

05AB1E , 83 79 74 байт

-4 байти завдяки Еріку Переможнику

Виводить список рядків для збереження байта.

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

Спробуйте в Інтернеті!

Пояснення

2ÖH₆Ôn₅Ò\ÊÑĆ¸Ý¾*£„ÔûC∞qΘœ™‚¹µ—₃₄fm є базовим представленням десяткового числа 255:

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Який кодує пробіги 1s і 0s відповідно, навіть індекси є 1s та нерівномірними індексами 0s. Це оцінюється до двійкового числа:

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

Замінити "ÔAo îιË3š1ĆRÕ₃FWš{ÓÛÏ.!XµM§&¶ñD°3PŸ{óNι2Ðbмh"253öз •—."Ôq‚Ā0Ál0j¿«ªžé¨0õ₄7“Ÿ!½ÏiæÆø-δq–Å05q½Yñá+•на -4.
Ерік Аутгольфер

@EriktheOutgolfer спасибі, оновив свою відповідь, і тепер я нарешті знаю, що це за :)
kalsowerus

Приємна відповідь :). Сподіваюся, ви продовжите вивчати мову. Якщо у вас є якісь питання, не соромтеся поспілкуватися зі мною.
Magic Octopus Urn

@MagicOctopusUrn Дякую велике! :)
kalsowerus

6

Python 2 , 220 213 212 байт

-1 байт шляхом перемикання ()*4на %39від @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

Спробуйте в Інтернеті!

Це інший підхід від інших відповідей Python. Я використовую гекс Base-36 (збережені 7 байт) кодування PNG стиль кодування Упіте стиль зображення (рядок цифр , яке вказує число послідовних повторних пікселів).

Рядок цифр :

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Потім я повторюю ці цифри і по черзі надрукую це число 'або символів з палітри (' theanswer ... '). Коли повторюється більше 9 символів, я просто додаю 0, а потім залишок.


+1 для різного підходу. Ви можете зберегти байт, скориставшись "theanswertolifetheuniverseandeverything"[w%39] TIO
officialalaimm

Дякуємо та зазначили. Я намагався розробити це разом із заміною "чи" для бульової настройки дужок, яку я зараз маю, але це зіпсує мої нові рядки ...
Coty Johnathan Saxman

Я не знав, що PNG використовує цей алгоритм стиснення - я вважав, що це GIF.
wizzwizz4

Гарний улов. Це був не PNG (ані GIF), а насправді RLE. Я додам посилання на відповідь.
Coty Johnathan Saxman

5

SOGL V0.12 , 74 байти

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

Спробуйте тут!

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

Дозвольте мені відповісти на моє власне питання ...

Вугілля , 140 126 112 байт

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

Спробуйте в Інтернеті!

Ви маєте тут посилання на найближчу до вербальної версії.

Пояснення (детальну інформацію див. У версійній версії):

  • The )%*(+&(+)''%'%'('%'%&%#%'%'%%%$%-&%%%%+&&%&%)&(.&%*.%%2%'%(%)%'.)%'.Рядок (68 байт, 48 байтів стислих) є поданням RLE-кодування на кресленні. Кожен char код мінус 34 - це кількість пробілів (парних позицій) або кількість текстових символів (непарні позиції) для друку послідовно.
  • Алгоритм просто розпаковує рядок, закодований RLE, і записує наступну діаграму gtheanswertolifetheuniverseandeverythin рядка (39 байт, стискається 27 байт) щоразу, коли потрібно записати символ, який не є пробілом. Коли я перевіряю довжину списку, щоб отримати наступний символ, і цей список починається з одного елемента, останній символ рядка записується в першу позицію.
  • Кожні 27 написаних символів я вставляю новий рядок.

Подяка

  • Велике спасибі Нілу та його дивовижним порадам за те, що він дозволив мені зберегти 28 байт і нарешті змогти перемогти Bubblegum. :-)

1
Якщо ви використовуєте, Assign(Minus(1, c), c);то ви можете просто використовувати if (c) { ... } else Print(" ");.
Ніл

На насправді , якщо ви використовуєте , for (68)і AtIndex("...", i)потім ви можете використовувати Modulo(i, 2)замість цього , і вам не потрібно cвзагалі.
Ніл

І якщо ви використовуєте, if (Not(Modulo(Length(PushOperator(u, w)), 27)))то вам також не потрібно a.
Ніл

О, і AtIndexробить автоматичний Moduloтак Modulo(b, 39)може бути справедливим b.
Ніл

1
uце заздалегідь визначена змінна, яка є просто порожнім масивом (зберігає за допомогою A⟦⟧υ). Кожного разу, коли ви натискаєте щось на нього, його довжина збільшується на 1. Це коротше, ніж явне призначення приросту.
Ніл

5

JavaScript (ES6), 207 205 203 байт

Повертає масив рядків з деякими кінцевими пробілами.

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

Сітківка , 183 байт


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

Спробуйте в Інтернеті! Пояснення: Перший етап додає кодування RLE растрової карти комірки та тексту, який другий етап потім дублює до правильної довжини, а третій етап декодує кодування RLE. Потім четвертий етап переміщує текст у клітинки.


4

Желе , 83 байти

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

Спробуйте в Інтернеті!

Як це працює

“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 байт

+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

Спробуйте в Інтернеті!

Схоже, жорстке кодування - це найкоротший шлях (принаймні, у Add ++)


3

Vim, 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>

Додано рядкові рядки для "читабельності"

Пояснення

Перший рядок виводить life, the universe and everythingна сторінку довідки, яка на один байт коротша, ніж просто ввести її. Потім це перетворюється на це:

theanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverythingtheanswertolifetheuniverseandeverything

Другий рядок розбиває рядок на:

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

І тоді заключний рядок відступає від нього:

       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 байт

рішення, засноване на guest44851

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

2

Рубін , 216 байт

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

Спробуйте в Інтернеті!

Пояснення Подібно до рішень Python, але я використовував запуск кодування довжини перед переходом до бази 36. Отже, рядок даних містить лише 54 символи замість 68.

Але це все-таки закінчилося довше за всіх, сподіваємось, що можна буде грати далі в гольф.



2

C (gcc) , 220 219 217 213 210 байт

-1 байт завдяки стельовій коті

-3 байти завдяки Джеррі Єремії

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

Спробуйте в Інтернеті!


Функція - це лише половина програми - просто використовуйте повну програму на 214 байт
Джеррі Єремія

@JerryJeremiah Дуже правда; приємний улов! Можна також з нього ще один байт.
гастропнер

1

JavaScript, 265 237 219 байт

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

JSFiddle


.substr -> .slice (1) збережіть кілька байтів
tsh

"Вихід може бути у списку рядків", тому просто пропустітьjoin
tsh

@tsh. Спасибі. . .

1

Pyth , 121 байт

Це містило занадто багато байтів, які я не зміг відобразити в TIO, ось ось шістнадцятка:

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

Спробуйте в Інтернеті!

Ви можете додати дзвінок до wcабо xxdв скрипті bash, щоб побачити довжину байтів або шістнадцятковий я, створений вище.

Цікаво, що ця програма демонструє незначну помилку (?) В Pyth. Будь-які байти повернення каретки (0x0d) читаються як байти нового рядка (0x0a) у рядкових літералах. Це змушує мене додати 6 байт: X ... ]T]13замінити неправильне десять на тринадцять.

Інакше ідея цього коду була досить простою: записуйте кожну позицію, де відбувається пробіл пробілів. Потім з'єднайте кожен з цих індексів із кількістю пробілів у цьому пробігу. Потім реконструюйте початковий рядок, повторивши фразу чотири рази, потім вставивши у правильні місця. Якщо кількість записаних пробілів дорівнювала нулю, замість цього вставляється новий рядок.


1

Java (OpenJDK 8) , 258 252 251 байт

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

Спробуйте в Інтернеті!

Це досить наївна реалізація. Спочатку маску для друкованих символів, потім перевертання тексту до завершення.

  • 6 байт збережено завдяки Карлосу Алехо!

You can save some bytes with int[]{16515968,33489856,x=58950624,x+16,x-40,31458204,7865230,1966983,462847,233471,117670784,x=134185856,x}.
Charlie

0

Javascript, approximate drawing. 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")

^ for what it's worth, not much really, but before I delete the failed code.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.