Unfortunately one of the greatest comic book writers passed away yesterday afternoon. Lots of Hollywood stars, musicians, actors, and many other people are paying tribute to this awesome writer, so we must do something as well.

Challenge

Print The Avengers Logo

Note: You may use any other character in place of # other than a space character; while you must use a space character for the space

enter image description here

In ASCII-art

              ######       
      ###############      
    #####    ##########    
  ####       ####### ####  
 ###        #### ###   ### 
###         #### ###    ###
###        ####  ###    ###
###        ####  ###    ###
###       ####   ###    ###
###       ####   ###    ###
###      ###########    ###
###      ###########    ###
###     ####     ###    ###
###     ###      ###    ###
 ####  ####           #### 
  ########         ######  
      #################    
      ###                  

Optional

Who was (in your opinion) his greatest hero and villain in the entire marvel universe?


Standard rules apply

  • 3
    What happened to the → in Ⓐ? – Adám Nov 13 at 20:00
  • 3
    @Adám 2 Reasons. I believe that the arrow means the continuation of the series (in this case the comics about avengers). Since Stan passed away there wont be a continuation of it (In my opinion, it is not the same without Stan). That is one of the reasons – Luis felipe De jesus Munoz Nov 13 at 20:05
  • 43
    The second one is that I didnt know how to draw it :c – Luis felipe De jesus Munoz Nov 13 at 20:05
  • Are the trailing spaces required? – Scoots Nov 14 at 12:40
  • @Scoots no, it is not required as long as your output looks the same – Luis felipe De jesus Munoz Nov 14 at 12:47

21 Answers 21

Jelly, 62 59 58 bytes

“ḢE{ɠs{Ƒ0Ṇṁỵ8ỊṢṂƊeLṫfIWẈḞ'ʠJ£ṗɱ\çoȧ?ƒnØẆƥṂ⁷ɱ’b12ĖŒṙḂa⁶s27Y

Thanks to @JonathanAllan for golfing off 1 byte!

Try it online!

How it works

“ḢE{ɠs{Ƒ0Ṇṁỵ8ỊṢṂƊeLṫfIWẈḞ'ʠJ£ṗɱ\çoȧ?ƒnØẆƥṂ⁷ɱ’

is a bijective base-250 integer literal, which uses the characters in Jelly's code page as digits.

The literal encodes the integer \$\scriptsize 10250938842396786963034911279002199266186481794751691439873548591280332406943905758890346943197901909163\$, which b12 converts to duodecimal, yielding \$\scriptsize 30b620b40ba54a64771433841333139413468423468423467433467433466b466b465453465363431424b43896860ba3_{12}\$.

There are some zeroes, because 14 spaces (e.g.) are encoded as 3 spaces, 0 hashes, and 11 spaces. This maintains the base small (the largest run consists of 17 hashes), without adding any additional logic to the decoder.

Ė (enumerate) prefixes every base-12 digit by its 1-based index, then Œṙ performs run-length decoding.

Now, for each integer in the resulting array, extracts the least significant bit, then a⁶ (AND space) replaces ones with spaces, while leaving zeroes unchanged.

Finally, s27 splits the unformatted character array into chunks of length 27, which Y separates by linefeeds.

R, 198, 173, 163, 157, 144, 142 bytes

write(rep(rep(c(' ',4),44),utf8ToInt("NFMOJEDJFDGGADCCHDACCCACIDACDFHDBCDFHDBCDFGDCCDFGDCCDFFKDFFKDFEDECDFECFCDCADBDKDCHIFHQJC")-64),1,27,,'')

Try it online!

Also R honors to the great Stan.

Notes :

  • instead of the character # we've used the character 4 because saves 2 bytes and :
    • it's a reference to the Fantastic Four and/or the next Avengers 4 movie
    • it like we're repeating the logo inside the logo (since 4 seems a mini "slanted" A)
  • -15 bytes thanks to @Giuseppe

Explanation :

Applying a Run Length Encoding (rle function) on the characters of the string (excluding '\n') returns 88 repetitions of the alternating <space>,<hash>,<space>,<hash>,<space>,<hash>....

The 88 repetitions are all values in the range [1,17] hence, summing 64 we get the code points of the letters [A...Q] obtaining the string : "NFMOJEDJFDGGADCCHDACCCACIDACDFHDBCDFHDBCDFGDCCDFGDCCDFFKDFFKDFEDECDFECFCDCADBDKDCHIFHQJC"

Hence the code basically does the opposite operations :

v <- utf8ToInt("NFMOJEDJFDGGADC...")-64  # convert the string back to [1...17] vector

e <- rep(rep(c(' ',4),44),v)             # perform the inverse of rle function obtaining an
                                         # expanded vector of <space>'s and <four>'s

write(e,1,27,,'')                        # write the vector to stdout arranging it 
                                         # in rows of maximum 27 characters
  • 1
    Your solution is nicer, but your own gzip 2-parter gives 89+47 = 136 bytes. – J.Doe Nov 14 at 19:43
  • @J.Doe : ahah I even forgot to have used that approach! please post it as your own answer :) – digEmAll Nov 14 at 19:51
  • Since we can use any character for #, using 0 in place of "#" should save 2 more bytes. @J.Doe that may work better for your gzip as well. – Giuseppe Nov 14 at 20:50

Python 2, 129 bytes

00000000: 2363 6f64 696e 673a 4c31 0a70 7269 6e74  #coding:L1.print
00000010: 2778 da95 9141 0e5c 3021 0803 ef7d 4593  'x...A.\0!...}E.
00000020: feff 8f9b 5d14 5c6e f1b0 f622 7422 2890  ....].\n..."t"(.
00000030: 2e7d 5a09 dc4b 19cb bc53 84d1 4a6a 5960  .}Z..K...S..JjY`
00000040: 116e 3f42 c290 b3f7 c0bc 76cf 549d 6ed8  .n?B......v.T.n.
00000050: f8fa 5f26 0b0e 8c93 d5cb 35f6 b1e7 a939  .._&......5....9
00000060: 9e98 e769 47b9 87d6 cdf5 5c30 3030 32c0  ...iG.....\0002.
00000070: 4029 272e 6465 636f 6465 2827 7a69 7027  @)'.decode('zip'
00000080: 29                                       )

Try it online!

  • 129 bytes, I removed the trailing \n from the compressed string. – ovs Nov 14 at 20:46

Bubblegum, 71 66 65 64 bytes

0000000: 95 91 21 12 00 20 08 c0 3a af 90 ff 7f 52 4e 58  ..!.. ..:....RNX
0000010: 58 93 25 d8 8a 27 47 e4 23 66 01 2c ce b1 3c 12  X.%..'G.#f.,..<.
0000020: 5f 5b 17 7c 81 ed 31 28 4e 6e a4 6d 23 ad 5b c2  _[.|..1(Nn.m#.[.
0000030: ae 25 83 9a 94 1a 2f 6f 05 fc e5 f0 73 13 f9 0b  .%..../o....s...

Thanks to @ovs for golfing off 1 byte!

Try it online!

  • How exactly do you golf bytes off of Bubblegum? I assumed the strategy would be to try each compression algorithm and pick the one that compresses your input the most. Where do you go from there? – Cowabunghole Nov 16 at 18:54
  • 1
    @Cowabunghole The first golf removed the trailing spaces, the second one increased the number of zopfli iterations (ovs's idea), and the last one switched from # to !. – Dennis Nov 16 at 21:50

Charcoal, 71 68 67 bytes

←⁸↙P⁵↘←⁴↓P³↙F⁹⟦³⟧→P⁴↘P⁶↘‖OM←←¹⁷↘F⁹«P⁺³›ι³↑P⁴↗¿⁼ι²B⁸±²»↘→UO³¦¹⁴UMKA#

Try it online! Link is to verbose version of code. Explanation:

←⁸↙P⁵↘←⁴↓P³↙F⁹⟦³⟧→P⁴↘P⁶

Output half of the circle.

↘‖OM←←¹⁷↘

Reflect it and draw in the bottom.

F⁹«P⁺³›ι³↑P⁴↗¿⁼ι²B⁸±²»

Draw the left arm and crossbar of the A.

↘→UO³¦¹⁴

Draw the right arm of the A.

UMKA#

Change all the characters to #s.

C (gcc), 244 243 242 bytes

#define z <<10|117441415
x[]={8064,2097088,8142832,31473596,58751886,30 z,60 z,60 z,120 z,120 z,255 z,255 z,480 z,448 z,63897630,33423612,2097136,1835008};b(_,i){i&&b(_/2,i-1),putchar(32+_%2*3);}main(_){_<19&&b(x[_-1],27)&puts("")&main(_+1);}

Try it online!

-1 Thanks to Peter Cordes

-1 Thanks to ceilingcat

Uses bit compression.

Explanation:

The goal is to print a set of numbers in binary using space and # as digits which represent the logo. A bit of bash magic converts the logo to binary masks:

echo "ibase=2;$(<code which echoes the logo [see my bash solution for example]> | tr ' #' 01)" | bc

This results in the binary 'numbers' being:

8064,2097088,8142832,31473596,58751886,117472135,117502855,117502855,117564295,117564295,117702535,117702535,117932935,117900167,63897630,33423612,2097136,1835008

There is an obvious pattern in the middle where every line contains ### ### ###

We can save some space by compressing that middle section based on saving that pattern and OR-ing against it. In addition, all of those lines merely add some stuff to the left of the middle section, so we make the z macro which takes ?????????????? and converts it into ###??????????????### ###. This involves bitshifting left by 10 and OR-ing with the binary of that pattern, which is 117441415.

Now we can more easily understand the code:

#define z <<10|117441415 // Define z to be the compression defined above
x[]={                    // Define x to be an array storing each line's number
8064,2097088,8142832,    // The first 5 lines are uncompressed
31473596,58751886,
30 z,60 z,60 z,120 z,    // The middle 9 lines are z-compressed
120 z,255 z,255 z,480 z,
448 z,
63897630,33423612,       // The last 4 lines are uncompressed
2097136,1835008};
b(_,i){                  // we also need a function to print n-bit binary numbers
i&&                      // i is the bit counter, we recurse until its zero
b(_/2,i-1),              // each recursive call halves the input and decrements i
putchar(" #"[_%2]);}     // this just prints the correct character
main(_){                 // this is the main function, called as ./? will have 1 in _ (argc)
_<19?                    // if _ is less than 19 then...
  b(x[_-1],27),          // print the binary expansion of x[_-1]
  puts(""),              // print a new line
  main(_+1)              // recurse with _++
:0;}
  • Can x?y:0 be replaced with x&&y, or does operator precedence not work? Maybe with & instead of , separating the 3 function calls because & has higher precedence than && or , (en.cppreference.com/w/c/language/operator_precedence). Or not because only , provides a sequence point for the printing vs. recursion to avoid undefined behaviour. – Peter Cordes Nov 13 at 21:18
  • It doesn't work with && indeed because of the precedence, while & doesn't short-circuit. As of yet I haven't found a shorter alternative, though I wouldn't rule one out. – LambdaBeta Nov 13 at 21:51
  • I meant with & or | or ^ replacing , (because they don't short-circuit) and && replacing ? (because it does). Like _<19 && b() & puts() & main(_+1); (spaces added for readability). The order of evaluation is undefined, which may actually undefined behaviour because of unsequenced side-effects on stdout en.cppreference.com/w/c/language/eval_order, but in practice any given compiler will pick some order for a given set of target + options. – Peter Cordes Nov 13 at 21:56
  • 1
    Ahh, I see what you mean. You're right - that does work! -1 byte. – LambdaBeta Nov 13 at 21:59
  • You don't need the space between the macro and the definition. – Zacharý Nov 16 at 17:07

T-SQL, 341 338 bytes

DECLARE @ CHAR(2000)=REPLACE(REPLACE(REPLACE(
'PRINT SPACE(14*6&$6*15&$4*5$4*10&$2*4$7*7$1*4&$1*3$8*4$1*3$3*3&*3$9*4$1*3$4
 *3&*3$8*4$2*3$4*3&*3$8*4$2*3$4*3&*3$7*4$3*3$4*3&*3$7*4$3*3$4*3&*3$6*11$4*3&
 *3$6*11$4*3&*3$5*4$5*3$4*3&*3$5*3$6*3$4*3&$1*4$2*4$11*4&$2*8$9*6&$6*17&$6*3)'
,'*',')+REPLICATE(''#'','),'$',')+SPACE('),'&',')+(''
''')EXEC(@)

The first 4 line breaks are for readability only, the final line break is part of a string literal.

Similar to my Adam West tribute, I've manually encoded a long string, and made the following replacements:

  • *7 gets replaced by +REPLICATE('#',7)
  • $4 gets replaced by +SPACE(4)
  • & gets replaced by a line break inside quotes

This results in a massive SQL command string:

PRINT SPACE(14)+REPLICATE('#',6)+('
')+SPACE(6)+REPLICATE('#',15)+('
')+SPACE(4)+REPLICATE('#',5)+SPACE(4)+REPLICATE('#',10)+('
')+SPACE(2)+REPLICATE('#',4)+SPACE(7)+REPLICATE('#',7)+SPACE(1)+REPLICATE('#',4)+('
')+SPACE(1)+REPLICATE('#',3)+SPACE(8)+REPLICATE('#',4)+SPACE(1)+REPLICATE('#',3)+SPACE(3)+REPLICATE('#',3)+('
')+REPLICATE('#',3)+SPACE(9)+REPLICATE('#',4)+SPACE(1)+REPLICATE('#',3)+SPACE(4)+REPLICATE('#',3)+('
')+REPLICATE('#',3)+SPACE(8)+REPLICATE('#',4)+SPACE(2)+REPLICATE('#',3)+SPACE(4)+REPLICATE('#',3)+('
')+REPLICATE('#',3)+SPACE(8)+REPLICATE('#',4)+SPACE(2)+REPLICATE('#',3)+SPACE(4)+REPLICATE('#',3)+('
')+REPLICATE('#',3)+SPACE(7)+REPLICATE('#',4)+SPACE(3)+REPLICATE('#',3)+SPACE(4)+REPLICATE('#',3)+('
')+REPLICATE('#',3)+SPACE(7)+REPLICATE('#',4)+SPACE(3)+REPLICATE('#',3)+SPACE(4)+REPLICATE('#',3)+('
')+REPLICATE('#',3)+SPACE(6)+REPLICATE('#',11)+SPACE(4)+REPLICATE('#',3)+('
')+REPLICATE('#',3)+SPACE(6)+REPLICATE('#',11)+SPACE(4)+REPLICATE('#',3)+('
')+REPLICATE('#',3)+SPACE(5)+REPLICATE('#',4)+SPACE(5)+REPLICATE('#',3)+SPACE(4)+REPLICATE('#',3)+('
')+REPLICATE('#',3)+SPACE(5)+REPLICATE('#',3)+SPACE(6)+REPLICATE('#',3)+SPACE(4)+REPLICATE('#',3)+('
')+SPACE(1)+REPLICATE('#',4)+SPACE(2)+REPLICATE('#',4)+SPACE(11)+REPLICATE('#',4)+('
')+SPACE(2)+REPLICATE('#',8)+SPACE(9)+REPLICATE('#',6)+('
')+SPACE(6)+REPLICATE('#',17)+('
')+SPACE(6)+REPLICATE('#',3)

Which, when run, produces the necessary output.

Long, but still better than my best set-based solution (463 bytes):

SELECT SPACE(a)+REPLICATE('#',b)+SPACE(c)+REPLICATE('#',d)
      +SPACE(e)+REPLICATE('#',f)+SPACE(g)+REPLICATE('#',h)
FROM(VALUES(7,0,7,6,0,0,0,0),(6,8,0,7,0,0,0,0),(4,5,4,5,0,5,0,0),(2,4,7,7,1,4,0,0),
           (1,3,8,4,1,3,3,3),(0,3,9,4,1,3,4,3),(0,3,8,4,2,3,4,3),(0,3,8,4,2,3,4,3),
           (0,3,7,4,3,3,4,3),(0,3,7,4,3,3,4,3),(0,3,6,6,0,5,4,3),(0,3,6,6,0,5,4,3),
           (0,3,5,4,5,3,4,3),(0,3,5,3,6,3,4,3),(1,4,2,4,5,0,6,4),(2,8,9,6,0,0,0,0),
           (6,9,0,8,0,0,0,0),(6,3,0,0,0,0,0,0))t(a,b,c,d,e,f,g,h)
  • can drop 2 chars using CHAR(8000) instead of VARCHAR(max) (the huge command is 1453 bytes) – Shameen Nov 14 at 13:21
  • 1
    Thanks, @Shameen. I tried to save one more and use CHAR(2E3) but it didn't seem to like that. I also saved a byte by using a line break literal instead of CHAR(13). – BradC Nov 14 at 15:14

Canvas, 74 73 71 bytes

qc2-Az↓n⁴╫m┬ff╷\_↘Tt)%⁵6>Yy7pQ∔I%SIŗ+T^≤?↔↖¶8^`O‾+O│≤n≡j↶82„2┬{ #@]∑‾+n

Try it here!

  • im just curious, how u guys type those chars? u have special keyboard or something? – Nikko Khresna Nov 16 at 14:24
  • @NikkoKhresna 85% of my code is the data generated by a generator, but the last 11 bytes doing all the logic were typed in the Canvas dev mode and spamming of tab after every char. That's only the case for me & Canvas though, e.g. AFAIK all of Jellys chars are typable with linux compose sequences. – dzaima Nov 16 at 14:44
  • @NikkoKhresna yeah, a lot of languages have different ways of typing the chars. some are typable with US keyboard (Jelly), some require pasting, and some (Charcoal, Actually and Sesos afaik) have a sort of verbose mode which only requires you to know the command names – ASCII-only Nov 18 at 1:37
  • @NikkoKhresna Charcoal also has (a very, very outdated) Linux keyboard, and probably some other languages too – ASCII-only Nov 18 at 1:39

05AB1E, 101 88 64 bytes

„# •∍ΔÎë,½=bOÅ.âαUΔ'òõƶαÔγλ#xÆ]~”FbćÁ˜Ð”wнQ_wā©•12вεN>yи}˜èJ27ô»

-24 bytes by creating a port of @Dennis♦' Jelly answer.

Try it online.

Explanation:

„#                     # Push string "# "
   •∍ΔÎë,½=bOÅ.âαUΔ'òõƶαÔγλ#xÆ]~”FbćÁ˜Ð”wнQ_wā©•
                      '# Push compressed integer 10250938842396786963034911279002199266186481794751691439873548591280332406943905758890346943197901909163
     12в               # Convert to Base-12 as list: [3,0,11,6,2,0,11,4,0,11,10,5,4,10,6,4,7,7,1,4,3,3,8,4,1,3,3,3,1,3,9,4,1,3,4,6,8,4,2,3,4,6,8,4,2,3,4,6,7,4,3,3,4,6,7,4,3,3,4,6,6,11,4,6,6,11,4,6,5,4,5,3,4,6,5,3,6,3,4,3,1,4,2,4,11,4,3,8,9,6,8,6,0,11,10,3]
        ε    }         # Map each `y` to:
         N>            #  The index+1
           yи          #  Repeated `y` amount of times
              ˜        # Flatten the list
               è       # Index each in the string "# " (with automatic wraparound)
                J      # Join everything together
                 27ô   # Split into parts of length 27
                    »  # And join by newlines

See this 05AB1E tip of mine (sections How to compress large integers? and How to compress integer lists?) to understand how the compression of the integer and list works.

JavaScript (ES6), 173 170 bytes

_=>`tc
du
9a9k
58fe38
36h83676
6j83!h85!h85!f87!f87!dm96
6dm96
6b8b!b6d696
3858n8
5gjc
dy
d6`.split`!`.join`696
6`.replace(/./g,c=>'# '[(k=parseInt(c,36))&1].repeat(k/2))

Try it online!


Node.js, 163 bytes

Provided that an array of strings is a valid output:

_=>Buffer(`.&-/*%$*&$''!$##($!###!#)$!#$&($"#$&($"#$&'$##$&'$##$&&+$&&+$&%$%#$&%#&#$#!$"$+$#()&(1*#2`).map(c=>s+='# '[x^=1].repeat(c-32),s=x='')&&s.match(/.{27}/g)

Try it online!

///, 170 bytes

/+/\/\///*/  +)/'$# +(/"$!+'/" +&/!#+%/"!
!+$/*!+"/**+!/###/""('*
(!!!' 
"&#"!!&"
$#'$& &*
 !""& ! $ 
!"'& !%""&$%""&$%)$%)$%(&#%(&#%'&'!%'!"$"!
 &$#")
$&#"'!!*
(!!&#"
"$

Try it online!

C (gcc), 174 168 164 bytes

-6 bytes thanks to Dennis.

i,j=88;main(l){while(j--)for(i="CJQHFIHCDKDBDACDCFCEFDCEDEFDKFFDKFFDCCDGFDCCDGFDCBDHFDCBDHFDCADICACCCADHCCDAGGDFJDEJOMFN"[j]-64;i;)putchar(l++%28?--i,35-j%2*3:10);}

Try it online!

Bash, 192 176 bytes

dc<<<"16i2o81C0000 81FFFF0 9FE00FC BCF001E F070387 F078387 F03FF87 F03FF87 F01E387 F01E387 F00F387 F00F387 F007B87 B807B8E 9E03FBC 87C3FF0 81FFFC0 8001F80f"|tr 01 ' #'|cut -c2-

Try it online!

-16 thanks to manatwork

This is similar to my C answer, except it just uses a raw base-16 compression and passes it through bc, then uses tr to convert 1 to # and 0 to space. Each row has 1 appended to it and stripped off of it to maintain alignment.

Unfortunately dc is shorter than bc.

  • No need for ^. But even better, use cut -c2- instead of the sed part. – manatwork Nov 13 at 22:59
  • And also shorter with here-string instead of echo and even shorter with dc instead of bc: Try it online! – manatwork Nov 14 at 9:07
  • 2
    I'll give you the echo, but come on - dc for Stan Lee... you must be joking ;) – LambdaBeta Nov 14 at 15:31
  • 1
    134 bytes – Dennis Nov 14 at 18:55

Haskell, 170 163 bytes

Edit: -7 bytes thanks to @Ørjan Johansen

m=<<"Mc Ul WeWg YdTgZa ZcSdZcX cRdZcW cSdYcW cSdYcW cTdXcW cTdXcW cUkW cUkW cVdVcW cVcUcW ZdYdPa YhRc Un U "
m ' '="###\n"
m c=(' '<$['Z','Y'..c])++('#'<$['a'..c])

Try it online!

Spaces are encoded as uppercase characters (length: Z down to char), hash signs as lowercase characters (length: a to char) and the last three # of each line plus newline as a space. Function m decodes it.

  • 1
    I think you can save some by letting space encode "###\n". – Ørjan Johansen Nov 14 at 6:36

Perl 6, 136 112 bytes

:128['?@~p<?x?aB~<|xpqpac`?@~x>q|<!Ca`||?x'.ords].base(2)~~TR/1/ /.comb(27)>>.say

Try it online!

Parses a base 128 number from the ordinal values of the string, converts to base 2 and replaces the 1s with spaces. This uses zeroes as the main character. The string has like 9 null bytes, which was a bitch to type up in TIO. I would have used base 127 for the same amount of bytes, but no nulls, but that has a carriage return, which seems to be impossible to type :(

Explanation:

:128['...'.ords]   # Convert the bytes of the string to base 127
.base(2)           # Convert to base 2
~~TR/1/ /          # Translate 1s to spaces
                   # Alternatively, this could be .split(1)
.comb(27)          # Split to strings of length 27
>>.say             # Print each on a newline

J, 130 128 bytes

echo' #'{~18 27$;(_243{.2#.inv 92x#._32+a.i.])&>'!TYPW.ajz i8hIhXl''3lOH8GvV.C2Z{r/=,G';'"a*2ZDxRplkh2tzRakz.?ZwVmeOT6L^lFB^eyT'

Try it online!

Initial solution

J, 164 bytes

echo' #'{~18 27$,#:849239965469633263905532594449192007713271791872263657753301928240007 12380965417202148347902847903517734495157419855048834759608223758433386496x

Try it online!

Perl 5, 181 bytes

say+(sprintf"%28b",oct"0x$_")=~y/10/# /r for"0003f0003fff800f87fe03c07f78700f71ce00f70ee01e70ee01e70ee03c70ee03c70ee07ff0ee07ff0ee0f070ee0e070e79e003c3fc01f803fffe00380000"=~/.{7}/g

Try it online!

MATLAB : 144 Bytes

reshape(repelem([repmat(' #',1,44),' '],'NFMOJEDJFDGGADCCHDACCCACIDACDFHDBCDFHDBCDFGDCCDFGDCCDFFKDFFKDFEDECDFECFCDCADBDKDCHIFHQJCR'-64),27,[])'

Try it online! (Technically in Octave)

Explanation:

This uses the same strategy as digEmAll in R, just with MATLAB syntax. The main difference is that MATLAB has automatic conversion from characters to integers.

PHP, 286 212 209 bytes

<?php foreach(str_split('000680018y4g04uj1s0iql6k0yz98u1xxu2v1xyhs71xyhs71xzt6v1xzt6v1y2ruv1y2ruv1y7pmv1y70cn121jq60jwdto018y5s013bwg',6)as $i)echo str_replace(0,' ',str_pad(base_convert($i,36,2),27,0,0))."
";

Try it online!

C# (.NET Core), 199 bytes

_=>{var r="";for(int i=0,j,k=0;i<88;i++)for(j=0;j++<"0(/1,'&,(&))#&%%*&#%%%#%+&#%&(*&$%&(*&$%&()&%%&()&%%&((-&((-&('&'%&('%(%&%#&$&-&%*+(*3,%"[i]-34;){r+=i%2<1?' ':'#';if(++k%27<1)r+='\n';}return r;}

Try it online!

Uses the same approach as my solution to the tribute to Adam West.

deflate, 79 bytes

eJyVkcsJADAIQ++ZIpD9dyxUqrGUgjlpHvglXdqCJymk1yEiaRXEIOXzuBHCiKObReUxUzYaMdt2wmTBg/FmNXndgLRbNvL7ifsLfMw6iQ==

  • 6
    You appear to have posted two answers in the same language. If you make an improvement to your submission it is better to edit your existing answer. Additionally, could you provide a link to the deflate language, as this just looks like a base64 string – Jo King Nov 14 at 6:28
  • 3
    I don't think deflate counts as a programming language (although I could be wrong as I don't participate on PPCG). – NobodyNada Nov 14 at 7:28
  • 2
    This is not DEFLATE, but zlib, which is DEFLATE plus a 2 byte header and a 4 byte checksum. By stripping those, you can use the Bubblegum interpreter. – Dennis Nov 14 at 14:24
  • @NobodyNada deflate is not a programming language but we do not require that submissions be in programming languages. – Post Left Garf Hunter Nov 14 at 23:06

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.