Випийте свою ранкову каву


21

Намалюйте цю кавову чашку Ascii:

  о
       о
    о
 __________
/ \ __
| J | \
| А | |
| V | |
| А | __ /
\ __________ /

Окуляри брауні для кави-сценарію чи Java :)

Найкоротший код у байтах, функціях чи програмах, відмінна лінія чи білий пробіл є прийнятним, пийте!


37
Мені було б дуже підозріло до чашки ігристої кави. ;)
Денніс

8
@Dennis - це моя спеціальна кава на ранок п’ятниці;)
Аарон

1
Хіба це не було б цікавіше з 2 і більше напоями: гарячий мав би пари, що символізували "(" і ")", холодний іскриться? І, запозичивши у коментаря Рода, код повинен відображати той чи інший на основі поточного часу.
манатура

1
Чи допустимо, щоб на лініях залишився пробіл білого кольору?
Джонатан Аллан

2
@Aaron не має гарного малюнка, жорстке кодування / стискання буде коротшим на багатьох мовах
стрижень

Відповіді:


3

SOGL , 48 байт

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

Пояснення:

SOGL має вбудовану компресію рядків, і одне з речей - стиснення словника. Ще краще, він має тип стиснення бокс-рядків, де єдиними наявними символами є "/ \ | _- \ n". Отже вся програма - це рядок, закладений у "" ("" неявний).

Рядок, який я дав компресору, (втекли):

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

16

JavaScript (ES6), 110 104 байт

Збережено 4 байти завдяки 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())

Як це працює

Стиснення початкового рівня ASCII досягається заміною всіх послідовностей від 2 до 10 послідовних пробілів і двох послідовностей 10 послідовних підкреслень однією цифрою:

  • Кожна послідовність Nпослідовних пробілів кодується цифрою N-1.
  • Послідовності підкреслення кодуються символом a 9.

Ми використовуємо, N-1а не Nтак, що ніколи не треба використовувати більше однієї цифри. Звідси потреба в ++nрозшифровці.

Вираз n>>3(побітовое зрушення вправо) дорівнює 0 для n = 1до n = 7і дорівнює 1 для n = 8(не використовується) , і n = 9. Тому ' _'[n>>3]дає підкреслення 9і пробіл для всіх інших значень, що зустрічаються.

Єдиний особливий випадок - послідовність 10 послідовних пробілів трохи вище "JAVA". Кодування з символом a 9суперечить послідовностям підкреслення. Тому нам потрібно розділити його на дві послідовності з 5 просторів, закодованих як 44.


Я рахую 108 байт (не рахуючи f=). Ви можете зберегти 4 байта наступним чином: n>>3замість того +!(n&7), 9замість _8(двічі) і 44замість9
edc65

@ edc65 Я не знаю, чому я рахував саме f=в цьому ... Дякую за збережені байти!
Арнольд

Чи можете ви пояснити, як регекс трохи працює? Схоже, він замінив цифру d, на пробіли d ("4" стає ' '). Але не впевнений, як саме це робиться. Що робить бітовий зсув? Чому ми збільшуємо n?
Cruncher

1
@Cruncher Я додав розділ "Як це працює".
Арнольд

@Arnauld Дуже розумний :)
Cruncher

16

Желе , 67 64 байт

-2 байти завдяки Деннісу (1. видаліть зайве , і 2. замініть перенесення та декодування довжини ZŒṙ, з зменшенням повторення елементів x/.)

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

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

Як?

“...“...’ перелік двох стислих чисел базових-250:

[1021021021332411532617161526181616261916162618163425334, 2117114111551155121131612111415121115141211161312111551]

D перетворюється в десятковий, щоб отримати два списки цифр:

[[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/ зменшує на повторення елементів, щоб надати один список цифр (повторення числа з першого списку на відповідне значення іншого):

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

доручає індексувати до списку праворуч, один на основі та модульно (0 індексів у крайньому правому пункті). Список праворуч, ¶_/\|JAVo- це просто символ, який використовується в необхідному порядку, де стовпчик, , є тим самим кодовим пунктом, що . Партнер, що закриває , не потрібно, оскільки це кінець програми:

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

Jelly виконує неявний друк цього списку, який, оскільки містить символи, друкує так, ніби це рядок:

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

7
Я клянусь, що деякі з цих мов є алгоритмами стиснення прямо
Cruncher

6
@Cruncher, що буде Bubblegum
Джонатан Аллан

4
Звичайно, будь-яка мова, яка може виводити текст довше коду, обов'язково повинна мати код довший, ніж вихідний текст для деяких вихідних текстів. Я припускаю, якби ви намагалися написати щось для повністю рандомізованого введення, код для нього (якщо вам не пощастило) був би довшим?
Cruncher

Так, якщо випадково. Bubblegum фактично використовує стиснення, мета - завдання складності Колмогорова, а значить, вхід повинен мати схему (або принаймні повторення, як тут).
Джонатан Аллан

Кінцеве мається на увазі , і ви можете замінити ZŒṙз x/. Крім того, хоча він не має жодних байтів, використання замість буквального нового рядка робить код більш редагованим imo.
Денніс

9

CoffeeScript ES6, 214 180 байт

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 байт з жорстким кодуванням

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

8
Відсутність голосів "вгору / вниз"; Мені ця відповідь не подобається, тому що загалом суть у відповіді на складність колмогорова полягає в генеруванні результатів без використання всієї речі в коді.
HyperNeutrino

@HyperNeutrino, я згоден, працюю над його вдосконаленням.
Том

7

Пітон 2, 174 172 171 167 байт

Немає жорсткого кодування.
Немає кодування Base-64.
Без Регексу.

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

Збережено 2 байти шляхом екстерналізації '_'*10та використання перетворення Python True -> 1та False -> 0.
Збережено 1 байт, видаливши зайвий пробіл.
Збережено 4 байти завдяки @TuukkaX!


У вас, здається, є два непотрібні пробіли у ] forта in [.
Yytsi

Власне, ви можете скоротити [2,7,4]і [3,4,5,6]до, 2,4,7і 3,4,5,6.
Yytsi

7

PowerShell , 136 124 123 105 байт

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

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

Завдяки @briantist за те, що він знайшов коротший -replaceметод, про який я знав, що він десь є.

Це займе рядок з цифрами замість необхідної кількості пробілів. Потім регенеруємо -replaceцифри із виразом скрипту $(" "*$1). Так, наприклад, перший рядок буде рядком $(" "*2)o, другий буде $(" "*7)oі так далі. Через потрійне цитування це залишається як рядок на конвеєрі. Ми скидаємо це на iex(короткий Invoke-Expressionі подібний до eval), який обробляє вирази скрипту і залишає отриманий багаторядковий рядок на конвеєрі. Вихід неявний.


Це дивно, жорстке кодування коротше. Гм. +1 все одно :)
HyperNeutrino

Я сподівався на деякі відповіді, використовуючи інноваційні схеми кодування (huffman), але моя реалізація python все ще триває.
Аарон,

чомусь короткий хід, якщо / ще, здається, не працює ($_,' '*$_)[+$_-in48..57] - незалежно від того, що я міняю, для мене це здається невдалим.
colsw

@ConnorLSW Це тому, що обидва вирази оцінюються та масив будується до того, як відбудеться індексація. Як результат, PowerShell не знає, як розмножуватися spaceна oбарфи.
AdmBorkBork

1
@briantist Дякую, що знайшли це! Я знав, що це там, просто не міг придумати правильне поєднання цитат, щоб змусити його працювати.
AdmBorkBork

4

GNU sed , 113 112 байт

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

Основне кодування, воно зберігає 3 пробіли як S, \nяк @і 5 підкреслює як U. Я буду намагатися комбінації, щоб знайти щось коротше.

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

Тривіальне рішення прямого друку рядка наведено нижче. Він має 136 байт, що призводить до стиснення 18%, використовуючи схему кодування вище.

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

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



@ Райлі Дякую Я також просто знайшов рішення на 1 байт менше, Sзберігаючи 3 пробіли, немає s. Я думаю, що замість цього я відредагую, оскільки він зберігає однакову кількість перетворень.
seshoumara

4

MATL, 87 86 83 82 78 байт

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

Цей розчин розбиває каву на дві частини: «бульбашки» і кухля. Для створення бульбашок ми створюємо розріджену матрицю з 111, розташованою в трьох місцях, і перетворюємо її в символьний масив

[TIH][IAC]111Z?c

Для компонента гуртка ми розраховуємо на стиснення струни

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

Обидва компоненти надруковані на вихід, і новий рядок автоматично розміщується між компонентами

Спробуйте в MATL Online


4

Пітон 2 , 128 127 байт

-1 байт завдяки Rod (використовуйте множення кортежу, ('_'*10,)щоб уникнути декларації).

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

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

Зауважте: подвійний нахил є необхідний до рядка.

Все між '''і '''є єдиним рядком, два - %sце формати, які замінюються вмістом кінцевого %(...)кортежу, який, в свою чергу, містить дві копії '_'*10через множення кортежу (...)*2. '_'*10Виконує множення рядка з виходом '__________'.

Код траверса символи, c, з цієї цілого рядка , використовуючи for c in '''...і створює новий рядок шляхом приєднання ( join(...))
або кількість прогалин , виявлених c, int(c)якщо cце цифра
або c сам
- бути цифра позначається , '0'<c<':'щоб зберегти більше c.isdigit().


Ви можете замінити u,uз ('_'*10,)*2і впустити uдекларацію
Rod

О, приємно, що я подивився на це і думаю, що був спосіб - дякую @Rod!
Джонатан Аллан

4

Ява 8, 294 289 248 байт

Гольф:

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

У дусі це не жорстко рядок для виведення. Натомість, він використовує той факт, що існує багато випадків з декількох пробілів, за якими слід друкувати символ. Він кодує кількість пробілів, які передують символу в байті високого порядку, з фактичним символом ASCII в байті низького порядку.

Безголівки:

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

Я думаю, було б краще кодувати кількість провідних пробілів перед символом у високому байті. Отже, "A", якому передують шість пробілів, буде закодовано як \u0641.
Девід Конрад

@DavidConrad чому б не зробити обох? Ніде в рядку не більше десяти послідовних повторів, а десятковий десять відповідає шістнадцятковій F. Повинно бути можливим вмістити обидва туди.

Це хороший момент.
Девід Конрад

1
@DavidConrad це призвело до збільшення розміру файлу за рахунок другого циклу, який я мав додати. Але я врятував кілька байт, перетворивши шістнадцяткову на десяткову константну. Втрата 0xпрефікса допомогла.

1
Є два кодування, які виглядають корисними: кількість пробілів та кількість повторень. Ви були правильні: кодування кількості пробілів - це чистий виграш. Я також зміг пограти в гольф деяким іншим кодом ( ifзайвий, наприклад), і поголити приблизно 1/6 розміру.

2

Befunge, 158 105 101 байт

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

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

Символи в рядку спочатку кодуються як індекси в таблиці пошуку з десяти можливих значень. Потім індекси групуються в пари, кожна пара об'єднується в одне число (i1 + i2 * 10) в діапазоні від 0 до 99. Ретельно вибираючи порядок таблиці пошуку, ми можемо гарантувати, що ці значення завжди будуть дійсними ASCII символи, які можуть бути представлені в рядковому рядку.

Це розбивка самого коду:

Source code with execution paths highlighted

*Почнемо з ініціалізації останнього елемента таблиці пошуку новим рядковим символом (ASCII 10).
*Потім використовуємо літеральний рядок, щоб натиснути кодований вміст на стек.
*Нарешті, ми перебираємо значення стека, декодуючи та виводячи по два символи одночасно.
*Останній рядок містить таблицю пошуку: 9-й елемент - це мається на увазі простір, а 10-й (новий рядок) встановлюється вручну, як було пояснено раніше.


2

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

На відміну від іншої моєї відповіді , ця була написана від руки.


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

(на кінці є пробіл)

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

Принцип все ще має "стиснуту" струну, з якої чашку кави можна реконструювати замінами. Спробувавши різні заміни, виявилося, що єдині, що варто робити:

  • =перетворюється на __________(10 підкреслень)
  • будь-яка цифра перетворюється на цю кількість пробілів

2

Лист звичайний, 125 123 122 120 114 байт

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

Я врятував 6 байт, використовуючи ідею просто ввести введення рядків замість ~&s.

Ідеї ​​для вдосконалення вітаються.


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

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