Ответ на жизнь, вселенную и 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
Лично я думаю, что это по теме, а не дурак. Я не думаю, что вам нужна цитата из спойлера, хотя.
programmer5000

1
@ Phoenix Я не думаю, что это обманка , согл превзошел жевательную резинку . Поэтому сжатие не является оптимальным способом сделать это.
programmer5000

1
Честно говоря, я не осознавал, что повторное голосование было обязательным. По причинам , уже упомянутые @ programmer5000, я действительно не думаю , что это боян из нас не вы не чужие ... . Это может быть обманом другого - пока не идентифицированного - вызова, но не этого.
Арно

1
@Nacht лучшей части является то , что я сначала нарисовал 42с *символами, а затем заменить их с текстом, которые подходят идеально. Мне не нужно было изменять исходный рисунок, чтобы соответствовать предложению. Совпадение?
Чарли

Ответы:


21

Python 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'
  • @Leaky монахиня сэкономила 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. При встрече 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

Жевательная резинка , 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
musicman523


Я использовал 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.
Эрик Outgolfer

@EriktheOutgolfer спасибо, обновил мой ответ, и теперь я наконец-то знаю, для чего они нужны :)
kalsowerus

Хороший ответ :). Надеюсь, вы продолжите изучать язык. Если у вас есть какие-либо вопросы, не стесняйтесь общаться со мной.
Волшебная Осьминог Урна

@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 RLE (строка цифр, указывающая количество последовательных повторяющихся пикселей).

Строка цифр :

73869469755353565353431353533323902433339443437469034389033390735363735903735903

Затем я перебираю эти цифры и поочередно печатаю это количество букв или символов из палитры (theanswer ...). Когда повторяется более 9 символов, я просто добавляю 0, а затем остаток.


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

Спасибо и отметил. Я пытался проработать это вместе с заменой 'или' для булевой настройки скобок, которую я сейчас имею, но это портит мои новые строки ...
Коти Джонатан Саксман

Я не знал, что PNG использовал этот алгоритм сжатия - я думал, что это GIF.
wizzwizz4

Хорошо поймал. Это был не PNG (и не GIF), а на самом деле RLE. Я добавлю ссылку на ответ.
Коти Джонатан Саксман

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

Попробуйте онлайн!

Вы здесь ссылка на ближайшую многословную версию.

Пояснение (подробные сведения см. В подробной версии):

  • )%*(+&(+)''%'%'('%'%&%#%'%'%%%$%-&%%%%+&&%&%)&(.&%*.%%2%'%(%)%'.)%'.Строка (68 байт, 48 байтов сжатых) является представлением RLE-кодирования на чертеже. Каждый код символа минус 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

С (ССЗ) , 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, поэтому вот 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.....

Попробуйте онлайн!

Вы можете добавить звонок в wc илиxxd в скрипт bash, чтобы увидеть длину в байтах или hexdump, который я произвел выше.

Интересно, что эта программа демонстрирует небольшую ошибку (?) В 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 байтов сэкономлено благодаря Карлосу Алехо!

Вы можете сохранить несколько байтов с помощью int[]{16515968,33489856,x=58950624,x+16,x-40,31458204,7865230,1966983,462847,233471,117670784,x=134185856,x}.
Чарли

0

Javascript, примерный рисунок. 319 байт

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

^ за то, что это стоит, не так много, но прежде чем я удаляю неисправный код.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.