Pij poranną kawę

21

Narysuj filiżankę kawy Ascii:

  o
       o
    o
 __________
/ \ __
| J | \
| A | |
| V | |
| A | __ /
\ __________ /

Punkty Brownie za skrypt kawowy lub java :)

Najkrótszy kod w bajtach, funkcji lub programie, znak nowej linii lub spacja są dopuszczalne, wypij!

Aaron
źródło
37
Byłbym bardzo podejrzliwy wobec filiżanki musującej kawy. ;)
Dennis
8
@Dennis to moja specjalna kawa na piątkowe poranki;)
Aaron
1
Czy nie byłoby to bardziej interesujące z 2 lub więcej napojami: gorący miałby pary symbolizowane jako „(” i „)”, zimny błyska? Pożyczając z komentarza Rod, kod powinien wyświetlać jeden lub drugi w oparciu o bieżący czas.
manatwork
1
Czy akceptowalne byłoby pozostawienie białych linii na liniach?
Jonathan Allan
2
@ Aaron puchar nie ma dobrego wzoru, kodowanie / kompresowanie będzie krótsze w wielu językach
Rod

Odpowiedzi:

3

SOGL , 48 bajtów

mγmλ⁶…Jcēņ▒&↓¡℮štΥ{ιE‽▼⅛÷εγ╝Ξ∫$■⌡πθ&χF׀▼ΡQ7L↓F¶‘

Wyjaśnienie:

SOGL ma wbudowaną kompresję łańcuchów, a jedną z jej cech jest kompresja słownika char. Co więcej, ma typ kompresji struny, w której jedynymi dostępnymi znakami są „/ \ | _- \ n”. Cały program jest więc łańcuchem zamkniętym w „” („niejawne”).

Ciąg, który podałem kompresorowi, jest (zmieniony)

"  o\n       o\n    o\n ",
"__________",
"\n/          \\__\n|   ",
"J",
"      |  \\\n|    ",
"A",
"     |  |\n|     ",
"V",
"    |  |\n|      ",
"A",
"   |__/\n\\",
"__________",
"/"
dzaima
źródło
16

JavaScript (ES6), 110 104 bajtów

Zaoszczędzono 4 bajty dzięki edc65

let f =

_=>`1o
6o
3o
 9
/44\\__
|2J5|1\\
|3A4|1|
|4V3|1|
|5A2|__/
\\9/`.replace(/\d/g,n=>' _'[n>>3].repeat(++n))

console.log(f())

Jak to działa

Kompresję oryginalnej sztuki ASCII osiąga się przez zastąpienie wszystkich sekwencji od 2 do 10 kolejnych spacji i dwóch sekwencji 10 kolejnych znaków podkreślenia pojedynczą cyfrą:

  • Każda sekwencja Nkolejnych spacji jest kodowana cyfrąN-1 .
  • Sekwencje podkreślenia są kodowane za pomocą 9.

Używamy N-1zamiast Ntego, abyśmy nigdy nie musieli używać więcej niż jednej cyfry. Stąd potrzeba ++ndekodowania.

Wyrażenie n>>3(bitowe przesunięcie w prawo) wynosi 0 do n = 1do n = 7i wynosi 1 do n = 8(nie używane) i n = 9. Dlatego ' _'[n>>3]daje 9znak podkreślenia i miejsce dla wszystkich innych napotkanych wartości.

Jedynym szczególnym przypadkiem jest sekwencja 10 kolejnych spacji tuż nad „JAVA”. Kodowanie go za pomocą 9spowoduje konflikt z sekwencjami podkreślenia. Musimy więc podzielić go na dwie sekwencje po 5 spacji, zakodowane jako 44.

Arnauld
źródło
Liczę 108 bajtów (nie liczę f=). Możesz zapisać 4 bajty w ten sposób: n>>3zamiast +!(n&7), 9zamiast _8(dwa razy) i 44zamiast9
edc65
@ edc65 Nie mam pojęcia, dlaczego do tego zaliczyłem f=... Dzięki za zapisane bajty!
Arnauld
Czy możesz wyjaśnić, jak działa wyrażenie regularne? Wygląda na to, że zastąpił cyfrę d spacjami d („4” staje się ' '). Ale nie jestem pewien, jak to dokładnie robi. Co robi przesunięcie bitów? Dlaczego zwiększamy n?
Cruncher
1
@Cruncher Dodałem sekcję „Jak to działa”.
Arnauld
@Arnauld Bardzo sprytny :)
Cruncher
16

Galaretka , 67 64 bajtów

-2 bajty dzięki Dennisowi (1. usuń nadmiarowe i 2. zastąp transpodowanie i dekodowanie długości przebiegu ZŒṙ, z redukcją przez powtarzanie elementów,. x/)

“Ñṁ{xGgṭḷVỤɲ8ṿfƬT9Ɱ¹=qṀS“$<(ƇỤ08ØÑḌṃṘX6~cuc8HṗḞ2’Dx/ị“ ¶_/\|JAVo

Wypróbuj online!

W jaki sposób?

“...“...’ to lista dwóch skompresowanych liczb base-250:

[1021021021332411532617161526181616261916162618163425334, 2117114111551155121131612111415121115141211161312111551]

D konwertuje na dziesiętny, aby uzyskać dwie listy cyfr:

[[1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 3, 3, 2, 4, 1, 1, 5, 3, 2, 6, 1, 7, 1, 6, 1, 5, 2, 6, 1, 8, 1, 6, 1, 6, 2, 6, 1, 9, 1, 6, 1, 6, 2, 6, 1, 8, 1, 6, 3, 4, 2, 5, 3, 3, 4], [2, 1, 1, 7, 1, 1, 4, 1, 1, 1, 5, 5, 1, 1, 5, 5, 1, 2, 1, 1, 3, 1, 6, 1, 2, 1, 1, 1, 4, 1, 5, 1, 2, 1, 1, 1, 5, 1, 4, 1, 2, 1, 1, 1, 6, 1, 3, 1, 2, 1, 1, 1, 5, 5, 1]]

x/ zmniejsza się przez powtarzanie elementu w celu uzyskania jednej listy cyfr (powtarzanie liczby z pierwszej listy przez odpowiadającą jej wartość drugiej):

[1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 0, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, 3, 2, 6, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 6, 1, 1, 5, 2, 6, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 6, 1, 1, 6, 2, 6, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 6, 1, 1, 6, 2, 6, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 6, 3, 3, 4, 2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4]

instruuje, aby zindeksować do listy prawej, opartej i modułowej (0 indeksuje do pozycji skrajnie prawej). Lista po prawej stronie ¶_/\|JAVojest po prostu znakiem używanym w wymaganej kolejności, w której pilcrow , jest tym samym kodem co linia. Partner końcowy nie jest wymagany, ponieważ jest to koniec programu:

[' ', ' ', 'o', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'o', '\n', ' ', ' ', ' ', ' ', 'o', '\n', ' ', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '\n', '/', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '\\', '_', '_', '\n', '|', ' ', ' ', ' ', 'J', ' ', ' ', ' ', ' ', ' ', ' ', '|', ' ', ' ', '\\', '\n', '|', ' ', ' ', ' ', ' ', 'A', ' ', ' ', ' ', ' ', ' ', '|', ' ', ' ', '|', '\n', '|', ' ', ' ', ' ', ' ', ' ', 'V', ' ', ' ', ' ', ' ', '|', ' ', ' ', '|', '\n', '|', ' ', ' ', ' ', ' ', ' ', ' ', 'A', ' ', ' ', ' ', '|', '_', '_', '/', '\n', '\\', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '/']

Galaretka wykonuje niejawny wydruk tej listy, który, ponieważ zawiera znaki, drukuje jak ciąg:

  o
       o
    o
 __________
/          \__
|   J      |  \
|    A     |  |
|     V    |  |
|      A   |__/
\__________/
Jonathan Allan
źródło
7
Przysięgam, że niektóre z tych języków to proste algorytmy kompresji
Cruncher
6
@Cruncher, który byłby Bubblegum
Jonathan Allan
4
Oczywiście każdy język, który może wysyłać tekst dłuższy niż kod, musi koniecznie mieć kod dłuższy niż tekst wyjściowy dla niektórych tekstów wyjściowych. Zakładam, że gdybyś próbował napisać coś dla całkowicie losowego wejścia, kod dla niego (chyba że masz szczęście) byłby dłuższy?
Cruncher
Tak, jeśli losowo. Bubblegum faktycznie używa kompresji, celem jest złożoność problemów Kołmogorowa, a zatem dane wejściowe powinny mieć wzorzec (lub przynajmniej powtarzanie jak tutaj).
Jonathan Allan
Ostateczny jest niejawny i można zastąpić ZŒṙz x/. Ponadto, chociaż nie ma żadnych bajtów, użycie zamiast literału nowej linii sprawia, że ​​kod jest bardziej edytowalny imo.
Dennis
9

CoffeeScript ES6, 214 180 bajtów

r="replace";" 1o0n0 6o0n0 3o0n0 _9n0/0 9b0_1n0|0 2J0 5|0 1b0n0|0 3A 4|0 1|0n0|0 4V0 3|0 1|0n0|0 5A0 2|0_1/0n0b0_9/0"[r](/\d/g,(a,b,c)->c[b-1].repeat(a))[r](/n/g,"\n")[r](/b/g,"\\")

CoffeeScript, 135 bajtów z kodowaniem na stałe

f=()->"""  o
       o
    o
 __________
/          \__
|   J      |  \\
|    A     |  |
|     V    |  |
|      A   |__/
\__________/"""
Tomek
źródło
8
Brak głosowania w górę / w dół; Nie podoba mi się ta odpowiedź, ponieważ zasadniczo celem odpowiedzi złożoności kolmogorov jest generowanie danych wyjściowych bez użycia całej rzeczy w kodzie.
HyperNeutrino
@HyperNeutrino, zgadzam się, pracuję nad poprawą.
Tom
7

Python 2, 174 172 171 167 bajtów

Bez twardego kodu.
Brak kodowania Base-64.
Bez regex.

k=' '
q='_'*10
print'\n'.join([k*i+'o'for i in 2,7,4]+[k+q]+['/'+k*10+'\\__']+['|'+k*s+'JAVA'[s-3]+k*(9-s)+'|'+' _'[s==6]*2+'\\||/'[s-3]for s in 3,4,5,6]+['\\'+q+'/'])

Zaoszczędzono 2 bajty, uzewnętrzniając '_'*10i wykorzystując konwersję True -> 1i False -> 0.
Zapisano 1 bajt, usuwając niepotrzebne białe znaki.
Zaoszczędź 4 bajty dzięki @TuukkaX!

HyperNeutrino
źródło
Wygląda na to, że masz 2 bezużyteczne białe znaki na ] fori in [.
Yytsi
W rzeczywistości można skrócić [2,7,4]i [3,4,5,6]do 2,4,7i 3,4,5,6.
Yytsi,
7

PowerShell , 136 124 123 105 bajtów

"""2o
7o
4o
 $(($a='_'*10))
/55\__
|3J6|2\
|4A5|2|
|5V4|2|
|6A3|__/
\$a/"""-replace'(\d)','$(" "*$1)'|iex

Wypróbuj online!

Dzięki @briantist za znalezienie krótszej -replacemetody, o której wiedziałem, że gdzieś tam jest.

Pobiera ciąg z liczbami zamiast wymaganej liczby spacji. Następnie regexujemy -replacecyfry za pomocą wyrażenia skryptu $(" "*$1). Na przykład pierwsza linia łańcucha będzie $(" "*2)o, druga będzie $(" "*7)oitd. Z powodu potrójnego cytowania pozostawia się go jako ciąg w potoku. Zrzucamy to do iex(skrót od Invoke-Expressioni podobny do eval), który przetwarza wyrażenia skryptu i pozostawia powstały ciąg wielu wierszy w potoku. Wynik jest niejawny.

AdmBorkBork
źródło
To dziwne, kodowanie jest krótsze. Hm W każdym razie +1 :)
HyperNeutrino
Miałem nadzieję na kilka odpowiedzi przy użyciu innowacyjnych schematów kodowania (huffman), ale moja implementacja Pythona również nadchodzi dłużej.
Aaron
z jakiegoś powodu krótka ręka jeśli / else nie działa ($_,' '*$_)[+$_-in48..57]- bez względu na to, co zmienię, wydaje mi się, że zawodzi.
colsw
@ConnorLSW Dzieje się tak, ponieważ oba wyrażenia są oceniane, a tablica budowana przed zaindeksowaniem. W rezultacie PowerShell nie wie jak pomnożyć spaceprzez oi barfs.
AdmBorkBork
1
@ briantist Dzięki za znalezienie tego! Wiedziałem, że tam jest, po prostu nie mogłem znaleźć odpowiedniej kombinacji cytatów, aby to zadziałało.
AdmBorkBork
4

GNU sed , 113 112 bajtów

s:$:  o@SS o@S o@ UU@/SSS \\__@|SJSS|  \\@|S AS  |  |@|S  VS |  |@|SSAS|__/@\\UU/:
s:S:   :g
y:@:\n:
s:U:_____:g

Podstawowe kodowanie, przechowuje 3 spacje jako S, \nas @i 5 podkreśla jakoU . Będę próbował kombinacji, aby znaleźć coś krótszego.

Wypróbuj online!

Trywialne rozwiązanie bezpośredniego drukowania łańcucha podano poniżej. Ma 136 bajtów, co daje kompresję 18%, przy użyciu powyższego schematu kodowania.

c\  o\
       o\
    o\
 __________\
/          \\__\
|   J      |  \\\
|    A     |  |\
|     V    |  |\
|      A   |__/\
\\__________/

Wypróbuj online!

seshoumara
źródło
@Riley Thanks. Właśnie znalazłem rozwiązanie o 1 bajcie mniej, z Sprzechowywaniem 3 spacji, nie s. Myślę, że zamiast tego edytuję ten, ponieważ zachowuje tę samą liczbę transformacji.
seshoumara
4

MATL, 87 86 83 82 78 bajtów

[TIH][IAC]111Z?c'(ty!(OWM4J4gW{lm> >bw8ch|.FU2W"@\#2Dj!NQDeIMZ'F'_ /|\JAV'Za7e

This solution breaks the coffee into two pieces: the "bubbles" and the mug. To create the bubbles, we create a sparse matrix with 111 located at three locations and convert it to a character array

[TIH][IAC]111Z?c

For the mug component, we rely upon string compression

'(ty!(OWM4J4gW{lm> >bw8ch|.FU2W"@\#2Dj!NQDeIMZ'F'_ /|\JAV'Za7e

Both components are printed to the output and a newline is automatically placed between the components

Try it at MATL Online

Suever
źródło
4

Python 2, 128 127 bytes

-1 byte thanks to Rod (use multiplication of tuple ('_'*10,) to avoid a declaration).

print''.join('0'<c<':'and' '*int(c)or c for c in'''2o
7o
4o
 %s
/ 9\__
|3J6|2\\
|4A5|2|
|5V4|2|
|6A3|__/
\%s/'''%(('_'*10,)*2))

Try it online!

Note: that double backslash is needed before the line feed.

Everything between the ''' and ''' is a single string, the two %s are formatters which get replaced by the content of the trailing %(...) tuple, which in turn contains two copies of '_'*10 via the tuple multiplication (...)*2. The '_'*10 performs string multiplication to yield '__________'.

The code traverses the characters, c, of that whole string using for c in '''... and creates a new string by joining (join(...))
either the number of spaces identified by c, int(c), if c is a digit
or c itself
- being a digit is identified by '0'<c<':' to save over c.isdigit().

Jonathan Allan
źródło
You can replace u,u with ('_'*10,)*2 and drop the u declaration
Rod
Oh, nice I did look at that and think there was a way - thanks @Rod!
Jonathan Allan
4

Java 8, 294 289 248 bytes

Golfed:

()->{String s="";for(char c:"\u026F\n\u076F\n\u046F\n __________\n/\u0A5C__\n|\u034A\u067C\u025C\n|\u0441\u057C\u027C\n|\u0556\u047C\u027C\n|\u0641\u037C__/\n\\__________/".toCharArray()){for(int i=0;i<c>>8;++i)s+=' ';s+=(char)(c&255);}return s;}

In the spirit of , this does not hard-code the string to output. Instead, it makes use of the fact that there are many cases of multiple spaces followed by a printable character. It encodes the number of spaces that precede a character in the high-order byte of the character, with the actual ASCII character in the low-order byte.

Ungolfed:

import java.util.function.*;

public class DrinkYourMorningCoffee {

  public static void main(String[] args) {
    System.out.println(f(
    () -> {
      String s = "";
      for (char c : "\u026F\n\u076F\n\u046F\n __________\n/\u0A5C__\n|\u034A\u067C\u025C\n|\u0441\u057C\u027C\n|\u0556\u047C\u027C\n|\u0641\u037C__/\n\\__________/".toCharArray()) {
        for (int i = 0; i < c >> 8; ++i) {
          s += ' ';
        }
        s += (char) (c & 255);
      }
      return s;
    }
    ));
  }

  private static String f(Supplier<String> s) {
    return s.get();
  }
}

źródło
I think it would be better to encode the number of leading spaces before a character in the high byte. So, an 'A' preceded by six spaces would be encoded as \u0641.
David Conrad
@DavidConrad why not do both? There are no more than ten consecutive repetitions anywhere in the string, and decimal ten fits in hex F. It should be possible to fit both in there.
That's a good point.
David Conrad
1
@DavidConrad it ended up making the file size bigger due to the second loop I had to add. But I did save a few bytes by converting hex to decimal constants. Losing the 0x prefix helped.
1
There are two encodings that look useful: number of spaces, and number of repetitions. You were correct: encoding the number of spaces is a net gain. I was also able to golf some of the other code (if is redundant, for example) and shave off around 1/6th of the size.
2

Befunge, 158 105 101 bytes

<v"XaXXXNYXNY77777'XXXXX2_TXQXX0XZTXDXX0X^TXXRX0X^TXXDX07]27777#"p29+55
:<_@#:,g2/+55,g2%+55
\JV/|_Ao

Try it online!

The characters in the string are first encoded as indices into a lookup table of the ten possible values. The indices are then grouped into pairs, each pair being combined into a single number (i1 + i2*10) in the range 0 to 99. By carefully choosing the order of the lookup table, we can guarantee that those values will always be valid ASCII characters which can be represented in a string literal.

This is a breakdown of the code itself:

Source code with execution paths highlighted

* We start by initialising the last element of the lookup table with a newline character (ASCII 10).
* We then use a string literal to push the encoded content onto the stack.
* Finally we loop over the values of the stack, decoding and outputting two characters at a time.
* The last line hold the lookup table: the 9th element is an implied space, and the 10th (newline) is set manually, as explained earlier.

James Holderness
źródło
2

Retina, 71 bytes

Differently from my other answer, this one was written by hand.


2o¶6o¶3o¶1=¶/55\__¶|3J6|2\¶|4A5|2|¶|5V4|2|¶|6A3|__/¶\=/
=
10$*_
\d
$* 

(there's a trailing space at the end)

Try it online!

The principle is still having a "compressed" string from which the cup of coffee can be reconstructed by substitutions. Trying different substitutions it turned out that the only ones worth doing are:

  • = turns into __________ (10 underscores)
  • any digit turns into that number of spaces
Leo
źródło
2

Common Lisp, 125 123 122 120 114 bytes

(format t"~3@{~vto
~} ~10@{_~}
/~11t\\__
|   J~11t|  \\
~2@{|~5t~a~11t|  |
~}|~7tA   |__/
\\~10{_~}/"2 7 4'A" V"1)

I saved 6 bytes, using idea of just putting enters in string instead of ~&s.

Ideas for improvement welcomed.


źródło
1

Python3, 206 bytes

print('  o\n'+7*' '+'o\n'+4*' '+'o\n'+' '+10*'_'+'\n'+'/'+10*' '+'\__\n'+'|'+3*' '+'J'+6*' '+'|  \\\n'+'|'+4*' '+'A'+5*' '+'|  |\n'+'|'+5*' '+'V'+4*' '+'|  |\n'+'|'+6*' '+'A'+3*' '+'|__/\n'+'\\'+10*'_'+'/') 
John Doe
źródło
2
So many space characters… Better declare a s=' ' variable and use it.
manatwork
Also wouldn't hurt to predefine newline
Wheat Wizard
3
Hardcoding the output is shorter
Kritixi Lithos
@WheatWizard, I don't think so. There is only a single solitary newline. The others are inside strings, so using a variable would also need a concatenation operator. And 'o\n' has the same length as 'o'+n.
manatwork
2
@manatwork One could: print(*(' o',7*' '+'o',4*' '+'o',' '+10*'_','/'+10*' '+'\__','|'+3*' '+'J'+6*' '+'| \\','|'+4*' '+'A'+5*' '+'| |','|'+5*' '+'V'+4*' '+'| |','|'+6*' '+'A'+3*' '+'|__/','\\'+10*'_'+'/'),sep='\n') or for x in(' o',7*' '+'o',4*' '+'o',' '+10*'_','/'+10*' '+'\__','|'+3*' '+'J'+6*' '+'| \\','|'+4*' '+'A'+5*' '+'| |','|'+5*' '+'V'+4*' '+'| |','|'+6*' '+'A'+3*' '+'|__/','\\'+10*'_'+'/'):print(x), both are 197. Still longer than a 136 hard code.
Jonathan Allan
1

C - 179

Solution with extensive use of format string:

void f(){printf("%1$3c\n%1$8c\n%1$5c\n%2$11s\n/%3$13s\n|%4$4c%5$7c%6$3c\n|%7$5c%5$6c%5$3c\n|%8$6c%5$5c%5$3c\n|%7$7c%5$4c__/\n\\%2$s/\n",'o',"__________","\\__",74,'|',92,65,86);}

Here is a more readable version:

void f() {
  printf("%1$3c\n"
         "%1$8c\n"
         "%1$5c\n"
         "%2$11s\n"
         "/%3$13s\n"
         "|%4$4c%5$7c%6$3c\n"
         "|%7$5c%5$6c%5$3c\n"
         "|%8$6c%5$5c%5$3c\n"
         "|%7$7c%5$4c__/\n"
         "\\%2$s/\n"
         'o',"__________","\\__",'J','|','\','A','V');
}
Churam
źródło
1
Brute forcing the art inside code give a shorter version and print with puts: void g(){puts(" o\n o\n o\n __________\n/ \\__\n| J | \\\n| A | |\n| V | |\n| A |__/\n\__________/\n");}
Churam
1

Retina, 99 bytes

This solution was generated automatically using this script.


0 0o¶ 1¶/32\__¶4 J24\¶|3A 34|¶| 3V34|¶|2A   |__/¶\1/
4
|  
3
    
2
      
1
__________
0
  o¶    

(there are trailing spaces on many lines)

This works by using numbers 1,2,3,4 in place of some character sequences that are repeated in the target string and then substituting them back.

I know it could be golfed more by tweaking this code or completely changing approach, but since the kolmogorov meta-golf challenge had quite a disappointing outcome I wanted to try using my script on a real challenge.

Try it online!

Leo
źródło
You can replace all the spaces at the end of the last line to a 3 and then move the substitution up to before the 3. Also you can change 2\n to 2\n3 and move this substitution to before the 3. Try it online!
Kritixi Lithos
You can also change 1\n__________ to 1\n_____ and then change each 1 in the main substitution to 11 Try it online!
Kritixi Lithos
@KritixiLithos as I said, I know this can be golfed :) I just wanted to post a solution created directly by my algorithm, maybe I'll post another answer which is optimized manually^^
Leo
0

Python 3.6

(non-competing)

Here's my attempt at Huffman encoding. It's definitely golfable further if anyone wants to take up the idea.

from bitarray import bitarray as b
a=b()
a.frombytes(bytes.fromhex('ca7fca7e53b6db6db664ffc6d9ae1fd6335e2fad1af83d68d7e2e9b218db6db6db20'))
print(''.join(a.decode({k:b(v)for k,v in zip(" _|\no/\\AJV","1 011 010 0011 00101 00100 00011 00010 00001 00000".split())})))

The literal could be compressed further still by converting to base64 or other, and the Huffman tree could be optimized to yield a shorter bitarray still.

Aaron
źródło
3
Non-competing is not an excuse for invalidity.
Mego
@Mego I don't have the time rn to fix it, I just wanted to give the framework of a solution for someone else to run with. non-competitive because I was the OP of the challenge
Aaron
2
That really doesn't matter. Our policy is clear.
Mego
@Mego fixed... just for you
Aaron
0

GameMaker Language, 138 bytes

show_message("  o#       o#    o# __________#/          \__#|   J      |  \#|    A     |  |#|     V    |  |#|      A   |__/#\__________/")
Timtech
źródło
0

C, 141 Bytes

f(){printf("  o\n%7co\n    o\n __________\n/%11c__\n|   J%6c|  \\\n|    A     |  |\n|%6c    |  |\n|%7c   |__/\n\\__________/",0,92,0,86,65);}

Usage

main(){f();}

Easy Solution, 148 Bytes:

w(){puts("  o\n       o\n    o\n __________\n/          \\__\n|   J      |  \\\n|    A     |  |\n|     V    |  |\n|      A   |__/\n\\__________/");}
Giacomo Garabello
źródło
0

PHP, 116 bytes

for(;$c="1o
6o
3o
 9
/44\\__
|2J5|1\\
|3A4|1|
|4V3|1|
|5A2|__/
\\9/"[$i++];)echo$c>0?str_repeat(" _"[$c>8],$c+1):$c;

This looks a lot like Arnauld´s answer - and does pretty much the same. Run with -r.

Titus
źródło
0

zsh, 86 bytes

printf "^_<8b>^H^@^@^@^@^@^B^CSPÈçR^@^A^P^CJÆÃ^A<97>¾^B^\Ä^@¹5@Ú^KÂ^E2cÀ|^EG^X¿^FÂW^HCæÃTÔÄÇësÅÀ^L^Fq^@<92>}ý^?{^@^@^@"|zcat

Explanation: that string is the gzip-compressed java cup ascii art. I use printf, because with echo, zcat prints a warning, and echo -e is one character longer. It doesn't work with bash or sh, because they think it's a binary file. Since you can't effectively paste that output from the browser, here's a usable file.

Elronnd
źródło
0

Java 9 / JShell, 299 bytes

()->{String s="";BigInteger b=new BigInteger("43ljxwxunmd9l9jcb3w0rylqzbs62sy1zk7gak5836c2lv5t36ej6682n2pyucm7gkm9bkfbn4ttn0gltbscvbttifvtdfetxorj6mmy3mt6r3",36);while(!b.equals(BigInteger.ZERO)){int x=b.intValue()&0x3ff;for(int i=0;i<x>>7;i++)s+=' ';s+=(char)(x&0x7f);b=b.shiftRight(10);}return s;}

Ungolfed:

() -> {
    String s = "";
    BigInteger b = new BigInteger(
        "43ljxwxunmd9l9jcb3w0rylqzbs62sy1zk7gak5836c2lv5t36ej6682n2pyucm7gkm9bkfbn4ttn0gltbscvbttifvtdfetxorj6mmy3mt6r3",
        36);
    while (!b.equals(BigInteger.ZERO)) { 
        int x = b.intValue() & 0x3ff;
        for (int i = 0; i < x >> 7; i++) s+=' ';
        s += (char)(x&0x7f);
        b = b.shiftRight(10);
    }
    return s;
}

Usage in JShell:

Supplier<String> golf = <lambda expression>
System.out.println(golf.get())

Encodes each character as ten bits consisting of a count of the number of spaces before the character in the high three bits following by the code point in the low seven bits.

(Since there are only three bits for the count it can't represent more than seven consecutive spaces, and there are ten spaces at one point in the string. These are encoded as a count of six, followed by a space, and then a count of three followed by the next character.)

Sadly, it loses to this trivial 140-byte Java solution:

()->"  o\n       o\n    o\n __________\n/          \\__\n|   J      |  \\\n|    A     |  |\n|     V    |  |\n|      A   |__/\n\\__________/"
David Conrad
źródło
0

05AB1E, 85 bytes

•1d'uì[_ÍpH»Ð]jŠ$ÿ{ɘß|ªpå±W¾Ö:ÞjÇ&@è$´Öàˆå]Á¢šBg¦ï&-ã¥ønØ7Ñà'?•9B8ÝJ"o _/\|JAV"‡15ô»

Try it online!

Magic Octopus Urn
źródło