Bebe tu café de la mañana


21

Dibuja esta taza de café Ascii:

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

Puntos Brownie para coffee-script o java :)

El código más corto en bytes, función o programa, nueva línea o espacio en blanco es aceptable, ¡bebe!


37
Sospecharía mucho una taza de café espumoso. ;)
Dennis

8
@ Dennis es mi café especial para los viernes por la mañana;)
Aaron

1
¿No sería esto más interesante con 2 o más bebidas: la caliente tendría vapores simbolizados con “(” y “)”, la fría brilla? Y tomando prestado del comentario de Rod, el código debería mostrar uno u otro según la hora actual.
manatwork

1
¿Sería aceptable tener espacios en blanco al final de las líneas?
Jonathan Allan

2
@Aaron la copa no tiene un buen patrón, la codificación / compresión dura será más corta en muchos idiomas
Rod

Respuestas:


3

SOGL , 48 bytes

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

Explicación:

SOGL tiene compresión de cadena incorporada y una de las cosas que tiene es una compresión de diccionario de caracteres. Aún mejor, tiene un tipo de compresión boxstring donde los únicos caracteres disponibles son "/ \ | _- \ n". Entonces, todo el programa es una cadena encerrada en "'(el" está implícito).

La cadena que le di al compresor son (escapó):

"  o\n       o\n    o\n ",
"__________",
"\n/          \\__\n|   ",
"J",
"      |  \\\n|    ",
"A",
"     |  |\n|     ",
"V",
"    |  |\n|      ",
"A",
"   |__/\n\\",
"__________",
"/"

16

Javascript (ES6), 110 104 bytes

Guardado 4 bytes gracias a 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())

Cómo funciona

La compresión del arte ASCII original se logra al reemplazar todas las secuencias de 2 a 10 espacios consecutivos y las dos secuencias de 10 guiones bajos consecutivos con un solo dígito:

  • Cada secuencia de Nespacios consecutivos se codifica con el dígito N-1.
  • Las secuencias de subrayado están codificadas con a 9.

Usamos N-1más que Npara que nunca tengamos que usar más de un dígito. De ahí la necesidad de ++nal decodificar.

La expresión n>>3(desplazamiento bit a la derecha) es igual a 0 para n = 1to n = 7e igual a 1 para n = 8(no utilizado) y n = 9. Por lo tanto, ' _'[n>>3]proporciona un guión bajo 9y un espacio para todos los demás valores encontrados.

El único caso especial es la secuencia de 10 espacios consecutivos justo encima de "JAVA". Codificarlo con un 9entraría en conflicto con las secuencias de subrayado. Por lo tanto, debemos dividirlo en dos secuencias de 5 espacios, codificadas como 44.


Cuento 108 bytes (sin contar f=). Puede guardar 4 bytes de esta manera: en n>>3lugar de +!(n&7), en 9lugar de _8(dos veces) y en 44lugar de9
edc65

@ edc65 No tengo idea de por qué conté f=en eso ... ¡Gracias por los bytes guardados!
Arnauld

¿Puedes explicar cómo funciona la expresión regular un poco? Parece que reemplazó un dígito d, con d espacios (se convierte en '4' ' '). Pero no estoy seguro exactamente cómo lo hace. ¿Qué hace el cambio de bit? ¿Por qué estamos incrementando n?
Cruncher

1
@Cruncher He agregado una sección 'Cómo funciona'.
Arnauld

@Arnauld Muy inteligente :)
Cruncher

16

Gelatina , 67 64 bytes

-2 bytes gracias a Dennis (1. eliminar redundantes , y 2. reemplazar transposición y decodificación de longitud de ejecución ZŒṙ, con reducción por repetición de elementos,. x/)

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

Pruébalo en línea!

¿Cómo?

“...“...’ es una lista de dos números comprimidos de base 250:

[1021021021332411532617161526181616261916162618163425334, 2117114111551155121131612111415121115141211161312111551]

D se convierte a decimal para obtener dos listas de dígitos:

[[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/ se reduce por repetición de elementos para dar una lista de dígitos (repitiendo el número de la primera lista por el valor correspondiente de la otra):

[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]

instruye a indexar en la lista de la derecha, una basada y de forma modular (0 índices en el elemento de la derecha). La lista de la derecha, ¶_/\|JAVoes simplemente el carácter utilizado en el orden requerido donde el pilcrow , es el mismo punto de código que un salto de línea. No se requiere el socio de cierre de, ya que este es el final del programa:

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

Jelly realiza una impresión implícita de esta lista, que, dado que contiene caracteres, se imprime como si fuera una cadena:

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

77
Juro que algunos de estos lenguajes son algoritmos de compresión directos
Cruncher

66
@Cruncher que sería Bubblegum
Jonathan Allan

44
Por supuesto, cualquier lenguaje que pueda generar texto más largo que el código, necesariamente debe tener un código más largo que el texto de salida para algunos textos de salida. Supongo que si intentas escribir algo para una entrada completamente aleatoria, el código (a menos que tengas suerte) sería más largo.
Cruncher

Sí, si al azar. Bubblegum en realidad está usando compresión, el objetivo son los desafíos de complejidad de Kolmogorov y, por lo tanto, la entrada debe tener un patrón (o al menos repetición como aquí).
Jonathan Allan

El final está implícito y se puede reemplazar ZŒṙcon x/. Además, si bien no tiene bytes, el uso de una nueva línea literal hace que el código sea más legible.
Dennis

9

CoffeeScript ES6, 214 180 bytes

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 bytes con codificación rígida

f=()->"""  o
       o
    o
 __________
/          \__
|   J      |  \\
|    A     |  |
|     V    |  |
|      A   |__/
\__________/"""

8
Sin voto arriba / abajo; No me gusta esta respuesta porque generalmente el punto en una respuesta de complejidad kolmogorov es generar la salida sin usar todo en el código.
HyperNeutrino

@HyperNeutrino, estoy de acuerdo, trabajando para mejorarlo.
Tom

7

Python 2, 174 172 171 167 bytes

Sin codificación rígida.
Sin codificación Base-64.
No 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+'/'])

Ahorró 2 bytes al externalizar '_'*10y explotar la conversión de Python de True -> 1y False -> 0.
Se guardó 1 byte al eliminar espacios en blanco innecesarios.
¡Guardado 4 bytes gracias a @TuukkaX!


Parece que tienes 2 espacios en blanco inútiles en ] fory in [.
Yytsi

En realidad, se puede acortar [2,7,4]y [3,4,5,6]de 2,4,7y 3,4,5,6.
Yytsi

7

PowerShell , 136 124 123 105 bytes

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

Pruébalo en línea!

Gracias a @briantist por encontrar el más corto -replace método que sabía que estaba allí en alguna parte.

Esto toma la cadena con números en lugar del número requerido de espacios. Luego regexamos -replacelos dígitos con una expresión de script $(" "*$1). Entonces, por ejemplo, la primera línea de la cadena será $(" "*2)o, la segunda será $(" "*7)oy así sucesivamente. Debido a las comillas triples, esto se deja como una cadena en la tubería. Volcamos eso a iex(abreviatura Invoke-Expressiony similar a eval), que procesa las expresiones de script y deja la cadena de varias líneas resultante en la tubería. La salida es implícita.


Eso es extraño, el hardcoding es más corto. Hm. +1 de todos modos :)
HyperNeutrino

Esperaba algunas respuestas usando esquemas de codificación innovadores (huffman), pero mi implementación de Python todavía se está extendiendo también ...
Aaron

por alguna razón, la abreviatura si / si no parece funcionar ($_,' '*$_)[+$_-in48..57], no importa lo que cambie, parece fallar para mí.
colsw

@ConnorLSW Eso se debe a que ambas expresiones se evalúan y la matriz se construye antes de que ocurra la indexación. Como resultado, PowerShell no sabe cómo multiplicar spacepor oy barfs.
AdmBorkBork

1
@briantist ¡Gracias por encontrar eso! Sabía que estaba allí, simplemente no podía encontrar la combinación correcta de citas para que funcionara.
AdmBorkBork

4

GNU sed , 113 112 bytes

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

Codificación básica, almacena 3 espacios como S, \ncomo @y 5 subrayados como U. Seguiré intentando combinaciones para encontrar algo más corto.

Pruébalo en línea!

The trivial solution of printing the string directly is given below. It has 136 bytes, resulting in a compression of 18 %, using the encoding scheme above.

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

Try it online!



@Riley Thanks. I also just found a 1 byte less solution, with S storing 3 spaces, no s. I think I'll edit this one instead, because it keeps the same number of transformations.
seshoumara

4

MATL, 87 86 83 82 78 bytes

[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


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


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

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.


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

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.


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*'_'+'/') 

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

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!


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.


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   |__/#\__________/")

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\\__________/");}

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.


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.


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\\__________/"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.