ASCII мистецтво «Привіт-світ!» [Закрито]


39

Ваша мета - написати найкоротшу програму, яка виводить "Hello-World!" як ASCII ст.

Правила:

  • Це повинно бути зрозумілим для людини, я не байдужий про його розмір (число / рядки)
  • Вихідні дані повинні містити лише пробіли (""), різкі ("#") та нові рядки
  • Вихід повинен працювати з односхилим шрифтом (але для літер не потрібно використовувати односхилий шрифт)
  • В результаті кожен символ повинен бути відокремлений один від одного хоча б одним пробілом

Будь ласка, додайте назву з мовою та кількістю байтів у своєму коді.


5
bash: 33 символи - pastebin.com/HZ1w8z8g Чи прийнятно це?
манатура

4
Чому дефіс хоч? ...
Тімві

1
Я вважаю, що зробити неможливим чи нездійсненно важким використання чогось заздалегідь визначеного, наприклад, HQ9 +.
манатура

1
@PeterTaylor: Вихід, що складається з пробілів і хешів, повинен працювати з односхилим шрифтом, але букви, представлені безліччю хесів, не повинні мати однакову ширину.
Тімві

Відповіді:


18

Мені абсолютно сподобалося це

Perl, 126 116 114 102 98   87 (69) символів (лише ascii та відсутність зовнішніх шрифтів)

На сьогоднішній день найкоротше рішення ascii, яке не використовує жодних зовнішніх шрифтів.

Ну, я хотів представити елегантне рішення, але @Ilmari Karonen кинув мені виклик unpack... не повинен був цього робити :-)

Ну, цей 92 88 69 символів код генерує некрасивий нечитабельний вихід, ідентичний @Ilmari Karonen's:

say map{y/01/ #/r}unpack"((b6)7a)*",'eT@j@DE
UUBjdeE
wTujjTA
eUBTddE'

Більш елегантний варіант без розпакування (88 символів):

map{print$"x$_,$/x/4/,"#"x!/7/}7&ord,7&ord>>3for'HRyYOKLIIjIRHBa@AJIAIIIJaQHQNSRH'=~/./g

Але я думаю, що такі | | | e || .- |||., D! річ - ніщо не нагадує Hello-World! і його не можна дозволити, тому тут іде справжнє рішення - розпакуйте варіант, 87 символів :

say map{y/01/ #/r}unpack"((b6)9a)*",'E`D@HB@Hd
EcD@HB@Hd
ggDsIbaIf
e`dDhRRHE
ECICPaQPf'

Вихід:

enter image description here

Більш елегантний варіант на 98 символів:

map{print$"x$_,$/x/1/,"#"x!/7/}7&ord,7&ord>>3for'PW{nw^QD[w}vK@X@PcP@jCDjXQk[rRRbSQD\CWbXeX'=~/./g

Вихід:

enter image description here

Старіше рішення (114 символів), різний тип кодування:

print'#'x(3&ord),$"x($:=15&ord>>2),$/x!$:for'EmM}U}]MBEQSM}U}]MBOFNMQOKUMSKUOBEM]MMM]IIIMIUQIAEQWMMgFROYQOB'=~/./g

Вихід:

enter image description here


Забули вигук наприкінці, тобто Hello-World! Крім того, має бути малі e

47

JavaScript, 178 байт

c=document.createElement("canvas").getContext("2d");c.fillText("Hello-World!",0,7);d=c.getImageData(1,0,56,7).data;s="";for(i=3;i<1568;i+=4){s+=d[i]?"#":" ";s+=(i+1)%224?"":"\n"}

Це працює в Firefox 27 Scratchpad.

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

Я впізнаю Arial :-D
Тімві

4
Це мій улюблений. Ви використали цікавий метод, щоб дійти до рішення. Чудово!
Дарт Егрегійний

2
Геніальний, я вважаю, що ви щойно створили Figlet для JavaScript;)
WallyWest

Dagnammit, це теж була моя перша думка! Ось замість цього питання. :)
Джордан Грей

37

Mathematica 101 99 98

Це растерізує вираз, отримує дані бінарного зображення, перетворює кожен 1 у "#", кожен 0 - "" (порожній пробіл) і відображає вихід у сітці 12 на 130 символів.

GraphicsGrid[ImageData@ImageResize[Binarize@Rasterize@Style["Hello-World!",99],130] 
  /.{1→"",0→"#"}]

hello

Один персонаж економив завдяки Джонатану Ван Матре.


1
Чому товщина змінюється між l?
MrZander

Я робив растерізацію виразу як єдине зображення. Якби я робив це буквально за листом, то l було б ідентичним. Крім того, збільшуючи розмір сітки для растерізації, вихідний сигнал наближається до якості друкованих символів. Але більша сітка призводить до порівняно меншого "#", до того, що вони здаються простими пікселями. Залишається питання: чому 2 л на зображенні отримують різну вагу?
DavidC

3
@MrZander, саме з цієї причини натякають шрифти: При спробі розміщення шрифтів у сітці пікселів низької роздільної здатності, як у мистецтві ASCII або на ширині стебла екрана, ніколи не буває рівномірним, оскільки шрифт не може мати стебла з цілими пікселями у всіх розмірах . Ось приємне пояснення з картинками.
Joey

1
prbably найкрасивіший
Ронан Деджеро

1
Джонатан Ван Матре, спасибі Перший параметр може бути зменшений до 99, але я не хотів би зменшувати другий через якість вихідних даних. (Я розумію, що це проблема з кодовим гольфом, але я маю свою гордість.)
DavidC

25

Delphi 85 байт

var s:tstringlist;begin s:=tstringlist.Create;s.LoadFromFile('\a');Write(s.Text);end.

Я знаю, це не найкрасивіше рішення, але не було правила, яке б сказало, що ви не можете використовувати зовнішні ресурси.
Результат: Result


12
+1 для творчості використовувати # як фон, а не передній план.
Герріт

1
Ви можете оголосити s як такий TStrings. (Але збережіть примірник TStringList.)
манатура

Це файл, який ви завантажуєте, із чогось, що насправді постачається з Delphi, чи ви написали його самостійно? Якщо останнє, я думаю, вам потрібно буде вважати його довжину частиною вашої оцінки.
Ільмарі Каронен

@Ilmari, я впевнений, що Delphi не постачає файл з мистецтвом ASCII "Hello-World" :) Більше того, у відповіді описано, що він використовує зовнішні ресурси.
TLama

3
@TLama: Я теж припускав, що я просто намагався це ввічливо висловити. Моя думка полягає в тому, що навіть якби були дозволені зовнішні ресурси, ця програма все-таки виходитиме з ладу на будь-якому комп’ютері, окрім її автора (і насправді у нас немає доказів того, що вона працює навіть на його комп’ютері). Крім того , я можу побити його рахунок з наступним сценарієм Perl: do X. Вміст "зовнішнього ресурсу" Xзалишається не визначеним (він працює для мене, чи не достатньо?), Але я надав кілька можливих пропозицій нижче ...
Ілмарі Каронен

15

Perl 5, 54 байти / 71 символів для друку ASCII

Примітка. Це друга версія цієї відповіді. Для оригінальної 64-байтної / 95-char версії з використанням PHP та gzinflate () див . Історію цієї відповіді .

Ось 71-шарова версія для друку ASCII:

y/01/ #/,say for unpack'(B40)4',unpack u,'4I*`1`(JJI!$FFNRJU52HIJ0*))H'

У 54-байтовій версії містяться символи, що не друкуються, тому я надаю це як шестигранний дамп. У системах Unixish ви можете xxd -rперетворити шістнадцятковий дамп у виконуваний сценарій Perl:

0000000: 792f 3031 2f20 232f 2c73 6179 2066 6f72  y/01/ #/,say for
0000010: 2075 6e70 6163 6b27 2842 3430 2934 272c   unpack'(B40)4',
0000020: 27a4 a011 008a aaa4 1126 9aec aad5 54a8  '........&....T.
0000030: a6a4 0a24 9a27                           ...$.'

І perl -M5.010те й інше потрібно запустити, щоб включити функцію Perl 5.10+ say. Вони дадуть такий вихід:

Screenshot of "Hello-World!" ASCII art

(Показано як скріншот, тому що величезна висота рядка в SE робить мистецтво ASCII некрасивим і важким для читання. Нижній регістр "e" є якоюсь незручною, але я вважаю, що це кваліфікується як читабельний, хоч би ледь так.)


Пс. Якщо висновок рішення вище для вас здається занадто мінімалістичним, ось 92-символьний варіант, який дає результат, подібний до рішення Томаса :

y/01/ #/,say for unpack'(B56)*',unpack u,'CH!(`"(`"":,2``B``@GGDC\'(C#(YI!)("I)"2*,),`4,03D'

Ось скріншот:

Screenshot of "Hello-World!" ASCII art


Pps. Я впевнений, що це ( GolfScript, 51 знак ) - це найкоротше рішення для друку-ASCII, якщо ви не рахуєте тих, що просто називають банер / FIGLet або які чіт-файли якимось іншим способом:

'iJ@Q@HmURBIMM{JkUUJeMRAQIM'{2base(;{' #'=}/}%39/n*

Вихід такий самий, як і для мого 71-шарового рішення Perl вище.


Я б сказав, що ви щойно перейшли межу читабельності :-)
Томаш

1
На моєму терміналі він значно читаєший, ніж тут на SE, через величезний інтервал між лініями.
Ільмарі Каронен

Я маю на увазі, вона все одно нечитабельна. BTW Я можу отримати ваш результат у 92 знаках , без алгоритму зовнішнього стиснення :-)
Томаш,

@Tomas: Ти маєш рацію, блискавка тут, здається, не є виграшною відповіддю. Я б дав вам +1 за це, якби я цього ще не зробив. До речі, я можу це зробити в 71 символі; Дивись вище. :-)
Ільмарі Каронен

1
Ільмарі, ти не повинен був кидати мені виклик unpack:-) Знайшов рішення з 69 знаків (87 з хорошим результатом мого).
Томаш

8

Раковина + Фіглет (35)

$ figlet -w 90 -f banner Hello-World!
#     #                                   #     #                             ### 
#     # ###### #      #       ####        #  #  #  ####  #####  #      #####  ### 
#     # #      #      #      #    #       #  #  # #    # #    # #      #    # ### 
####### #####  #      #      #    # ##### #  #  # #    # #    # #      #    #  #  
#     # #      #      #      #    #       #  #  # #    # #####  #      #    #     
#     # #      #      #      #    #       #  #  # #    # #   #  #      #    # ### 
#     # ###### ###### ######  ####         ## ##   ####  #    # ###### #####  ### 

Що це за шрифт? Вони просто схожі на менші великі символи.
Cruncher

це банер. -f bannerЦе був перший шрифт, який я знайшов #, а не * або | і _.
похмурий


Зміна "90" на "9" приносить високий привіт привіт, але оскільки ОП не піклується про стовпчики та рядки, це повинно бути прийнятним.
alexyorke

Іноді виборці мене бентежать. Чому при цьому отримується чистий бал +8, але інша відповідь із фігуркою отримує чисту оцінку -3?
Цифрова травма

8

Пітон 260 215 186 152

>>> print'eJyNkFEKwDAIQ/93isC7/x3LyIJullHrR1BfJSIJPUHTlmiUPHbxC7L56wNCgZAxv3SjDWIxsoOb\nzMaBwyHYPJ5sVPNYxXism74vcIsFZlYyrg=='.decode('base64').decode('zip')
#   #        #  #          #   #   #          #     #  #
#   #        #  #          #  # #  #          #     #  #
#   #   ##   #  #   ##      # # # #   ##   ## #   ###  #
#####  #  #  #  #  #  #     # # # #  #  #  #  #  #  #  #
#   #  ####  #  #  #  # ##  # # # #  #  #  #  #  #  #  #
#   #  #     #  #  #  #     # # # #  #  #  #  #  #  #   
#   #   ###  #  #   ##       #   #    ##   #  #   ###  #

Python 196 183 130 114 (але потворніший)

>>> print'eJxTVlBWgCAgAQHKqBywAJeyAgJCZREcZWUYyaUMIpUVEKqRNcLEueDqEaZBLVVWQDITADIdFBw='.decode('base64').decode('zip')
# #  #  # #        # # #        #   # #
# # # # # #  #     # # #  #  ## #  ## #
### ##  # # # # ## # # # # # #  # # #
# #  ## # #  #      # #   #  #  #  ## #

Я використовував накопичені дані в кодування base64. і код розшифровує його з кодування base64, а потім розпакувавши його.


Нічого собі, це справді розтягує розбірливість!

7

PHP - 183 байти

Використання мистецтва ASCII sebcap26 як джерела ...

foreach(str_split(base64_decode('iASAERACCYgEgBKQAgmIxIwKoxo5+SSSCqSSSYnkksqkkkmJBJIKpJJIiOSMBEMSOQ'))as$i=>$j)echo strtr(sprintf("%8s%s",decbin(ord($j)),($i+1)%7?"":"\n"),'01',' #');

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

6

Brainfuck, 372 байт

(Я знаю. Але просто для повноти, мав би бути епізод мовлення ^^ Це не стане набагато коротшим, оскільки є невеликі повторення. Перший і другий рядки вже ...

++++++++[>++++>++++<<-]>+++>>++++++++++>>+>++[-<<<<<.>.<.>..>>>[-<<<.>>>]<[-<<<.>>>]<<..<.>>>++[-<<.<.>..........<.>....>>]<<<.>.<.>>.>+>>]<<<<<...>.<.>.<.>.<.>.<.>..<..>..<...>.<.>..<.>..<.>..<..>...<..>.<.>..<...>.<.>>.<<.>.<.>.<.>...<.>.<.>.<.>..<.>.....<.>.<...>.<.>.<.>..<.>.<.>...<.>.<.>..<.>>.<<.>.<.>.<...>.<.>.<.>..<..>.......<..>.<..>...<..>..<.>...<.>..<..>..<.

Перекладач тут: http://koti.mbnet.fi/villes/php/bf.php


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

Поєднуючи генератор чи зображення @ ASKASK з моїми петлями та деякими додатковими налаштуваннями, ми отримуємо:

Brainfuck, 343 339 336 334 байт

Хоча виглядає більш потворно, ніж моя оригінальна версія.

+++++[->++++++>+++++++>++<<<]>++>>>+>>++[-<<<<.<.>.<..>>>[-<<<.>>>]>[-<<<.>>>]<<<<..>.<.>>>++[-<<.<.........>.<...>>>]<<.<.>.>.>>+>]<<<<..<<+++++[->>.<.<]>.>.<..>...<.>.<.>.<.>.<..>.<...>..<.>.<..>..<.>.>.<.<.>.<.>.<...>.<.>.<.>.<.>.<.....<++++++[->>.<.<]>..>.<.>.<.>.>.<.<.>.<..>.<..>.<.>.<..>.<.......>...<...>.<..>.<...>.<..>.<..>.

(зображення див. @ Відповідь ASKASK)


5

EcmaScript 6, 172 161

'¡I%e!c0ĄJ¥eìo0¸ËefMs0µKcÊIs0´Ê¢1éo'.split(0).map(s=>s.split('').map(c=>{for(i=8,s='';i--;)s+=(c.charCodeAt(0)-33)&(1<<i)?'#':' ';return s;}).join('')).join('\n')

Вихід:

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

Пояснення:

Текст ASCII ущільнюється в рядок, де кожен біт являє собою піксель :

  • 0 для SPACE
  • 1 для #

Зсув 33 застосовується для отримання лише символів для друку.


Дужки та returnзаява першої функції жирної стрілки не потрібні.
манатура

@manatwork Я спробував видалити його, але потім він більше не збирався. Ви впевнені в цьому?
Флорент


@manatwork Дякую!
Флорент

charCodeAt(0)можна звести до charCodeAt().
Чіру

4

Сліппінг , 38 символів (76 байт)

갦륈똄릵꺕녔꺒녪냕녪낷뚕년꺒녦냉괄낵要감嚙긂밃⓶掘⓶終丟併껧뜴꼧밍替現겠合終

Вихід:

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

4
На сторінці з інформацією про гольф з кодом написано: "Якщо ви використовуєте Unicode, для підрахунку байтів слід використовувати UTF-8." Якщо я не помиляюся, це робить вашу програму довжиною 114 байт . (76 байт ви згадуєте б для UTF-16 без BOM.)
рез

@res: Я змінив це, оскільки не має сенсу цього вимагати. Мій перекладач Sclipting чудово розуміє UTF-16, тому це дійсна програма, закодована як UTF-16.
Тімві

1
Тімві, справи справи
Томаш

3
@ user689 - насправді "Hello-World!" зі знаком оклику в кінці ...

1
Я припускаю, що "прийнята громадою" означає "прийняту, без обговорення громадою , невеликою кількістю людей, які мають владу на це".
res

3

Brainfuck, 362 байти

Вибачте @ johannes-h, я побачив ваше і надихнувся зробити своє. Він використовує комбінацію швидшого генерації чисел на початку та більш просту картину для отримання результату в меншій кількості байтів. Однак він не використовує циклів ніде більше, тому він підходить для оптимізації.

+++++[->++++++>+++++++>++<<<]>++>.<.>.<.....>.<.>.<.........>.<...>.<.........>.<...>.<.>.>.<.<.>.<..>.<..>.<.>.<.........>.<...>.<.........>.<...>.<.>.>.<...<.>.<.>.<.>.<.>.<..>.<..>...<.>.<.>.<.>.<..>.<...>..<.>.<..>..<.>.>.<.<.>.<.>.<...>.<.>.<.>.<.>.<.....>.<.>.<.>.<.>.<.>.<.>.<...>.<.>.<.>.>.<.<.>.<..>.<..>.<.>.<..>.<.......>...<...>.<..>.<...>.<..>.<..>.

який генерує:

рис


Гм. На скільки коротше генерація чисел? тому що зміна іміджу мені схоже на обман (принаймні, при безпосередньому порівнянні наших рішень - цілком справедливо в цьому конкурсі, звичайно) ^^ Але я збираюся розглянути ваші пізніше :) Ви можете взяти мій цикл для першого однак дві лінії. Це набагато коротше (було приблизно 10-20 байт, якщо я правильно пам’ятаю)
Йоганнес Х.

скоротив вашу версію до 343 байт, дивіться мою відповідь
Йоганнес Х.

і навіть коротше, замінюючи більше повторів петлями. 339 зараз.
Йоханнес Х.

У мене немає вашої репутації, щоб коментувати вашу, але якщо ви уважно подивитесь на вашу нову версію, ви знайдете "> <" там, який можна видалити, щоб забрати два байти :)
ЗАПИТАТИ

3

ImageMagick + sed, 71 байт

Я не бачу жодних інших записів ImageMagick, тож ось мій пізній пакет акцій в землі:

convert +antialias label:Hello-World! xpm:-|sed '8,+9y/ /#/;s/[^#]/ /g'

Я думаю, що sedпорція, ймовірно, може бути ще декілька гольфу.

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

Вихід:

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


2

Постскрипт, 154 133

<~GasbQ8I>GO#QsOD7:?,pa&5XCgo@jeLPX:a4F9kN1nu1B@8KjD"^]WgY[MA.2VBjpTNo5$Pi%uI9Lr>,9`~>/FlateDecode filter 999 string readstring pop =

тобто

    <~GasbQ8I>GO#QsOD7:?,pa&5XCgo@jeLPX:a4F9kN1nu1B@8KjD"^]WgY[MA.2VBjpTNo5$Pi%uI
9Lr>,9`~>
/FlateDecode filter 
999 string readstring pop 
=

Відповідь Йоханнеса Х. була лише джерелом ASCII, натхненням для мистецтва ASCII :-)

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

(більше читається в терміналі)

Перл, 102

print$-%44?'':"\n",vec(unpack(u,'<!040`A!:4@`A`*%7918REEM1":T4)75E(#&1"0``'),$-++,1)?'#':' 'for 0..219

Такий же вихід, як і вище. Я знаю, що втратив обидві відповіді Perl вище, але я все-таки публікую його. Принаймні, я намагався і рухався в правильному напрямку (і не бачив найкоротшої відповіді) :-).


2

Pure Bash, без зовнішніх утиліт - 133 символів:

c=" #";for x in 0x{5250088045,55520A914D,74556AAA54,535205124D};do while((s=(t=x)^(x/=2)*2,t));do L=${c:s:1}$L;done;echo "$L";L=;done

Використовуйте зсув правого і лівого (поділіть і помножте на 2) і xor, щоб знайти один біт.

Дані про шрифт, викрадені у Blender / Ilmari Karonen.

Випробувано на Bash 3.2 та 4.2

До речі, це всього 166 символів:

echo "# #  #  # #        #   #        #   # #
# # # # # #  #     # # #  #   # #  ## #
### #   # # # # ## # # # # # #  # # #  
# #  ## # #  #      # #   #  #  #  ## #"

1

Пітон 3, 114

print('\n'.join(bin(x)[2:]for x in[353530052677,366448644429,499649260116,357858349645]).translate({48:32,49:35}))

Вихід (4-х символів високий e і W, вкрадений у @Ilmari Karonen ):

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

І коротший (107):

print('\n'.join(bin(x)[2:]for x in[11993933918769,16391913257513,12021315382193]).translate({48:32,49:35}))

Вихід:

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

Це здебільшого нечитабельно. Ваш світ з другого результату - це фактично Uorld.
Сільвіу Бурча

@SilviuBurcea: Це краще виглядає на фактичному емуляторі терміналу. Крім того, "читабельний для людей" дає вам трохи простоту. Я впевнений, що ви можете здогадатися, що таке "Привіт, світ!" засоби.
Блендер

Використовуйте шістнадцяткові константи і поголіть кілька символів
Флоріс,

@Floris: Я спробував це. Двосимвольний префікс робить їх так само довгими, до приблизно 20 цифр.
Блендер

1

Персонажі Python 154 (розмір Char 5X7)

print'\n'.join(map(''.join,zip(*(''.join("# "[int(e)]for e in"{:07b}".format(ord(c))[1:])for c in"€÷÷÷€ÿñêêòÿ€ÿ€ÿñîîñÿûûÿŸáþÁ¿ÁþáŸÿñîîñÿàïÿ€ÿÿñîî€ÿ‚"))))

Вихідні дані

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

1

Bash:

(103 89 байт)

Код:

base64 -d<<<rohBEmRiqIihFVRS7IitVWRSqIihVVRQru5Aoldi|xxd -b|sed -e's/ //g;s/1/#/g;s/0/ /g'|cut -b'9-55'

Вихід:

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

Менший, але менш читабельний (На основі http://mckgyver.pbworks.com/f/1240440791/3PixelFont.jpg ):

Код:

base64 -d<<<V0nCLsmQdklaqslQV23BTq2Q|xxd -b|sed -e's/ //g;s/1/#/g;s/0/ /g;'|cut -c'9-52'

Вихід:

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

1

Javascript / ES6 (108 байт)

Скопіюйте в консоль:

[,0xa0a028045,0xeeae2bb5d,0xacaabaa54,0xaeae2ba5d].map(a=>a.toString(2).replace(/./g,b=>' #'[b])).join('\n')

Вихід:

"
# #     # #       # #        #   # #
### ### # # ###   # # ### ## # ### #
# # ##  # # # # # ### # # #  # # #  
# # ### # # ###   # # ### #  # ### #"

(Потрібен браузер, сумісний із ECMAScript6, тобто. Firefox 22+)

Натхненний @maximeeuziere, @ p01, @aemkei


.join('\n')можна зменшити до місця, .join(` `)де пробіл є фактично новим символом рядка.
Чіру

1

Автори: xem, aemkei, p01, jonas

Виконайте це в консолі JS.

JavaScript, крос-браузер, 133 132 126 117 байт

for(i=s="";l=[43117609029,64070269789,46349920852,46890400349][i++];)for(j=0,s+="\n";c=l.toString(2)[j++];)s+=" #"[c]

JavaScript, ES6, працює на Firefox, 108 байт

[,0xa0a028045,0xeeae2bb5d,0xacaabaa54,0xaeae2ba5d].map(a=>a.toString(2).replace(/./g,b=>' #'[b])).join('\n')

Результат:

>
# #     # #       # #        #   # #
### ### # # ###   # # ### ## # ### #
# # ##  # # # # # ### # # #  # # #  
# # ### # # ###   # # ### #  # ### #

@ p01 зробив більш коротку версію (118 байт) тут: twitter.com/p01/status/433230019419471872
aemkei

1

HTML, 209 символів

<pre># #     # #                      #   # #
# #     # #        # # #         #   # #
###  ## # #  #     # # #  #  ##  #  ## #
# # ##  # # # # ## # # # # # # # # # #
# # ### # #  #      # #   #  #   # ### #</pre>

Чи враховується це? :)


1

Оболонка, 20 символів:

banner Hello-world\!

Щоб це працювало, звичайно, вам потрібна bannerпрограма. У Debian ви можете отримати його, встановивши bsdmainutilsпакет.

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

http://en.wikipedia.org/wiki/Banner_%28Unix%29

EDIT: Схоже, Debian також має sysvbannerпакет, який встановлює банерну програму, яка друкує текст горизонтально для відображення на терміналі. Однак це друкує лише перші 10 символів повідомлення, тож це дратує цю проблему з кодом-гольфом!


1
Я вважаю, ти мав намір писати banner hello-world.
Флоріс

@Floris, дякую за голову. Виправлено.
стевеха

1
Зауважимо, що банер з'явився на Unix v7 в 1979 році і є практично на кожному Unix.
sch

@sch, я погоджуюся, що bannerвін доступний практично для кожного UNIX. Я просто поклав пакет Debian як зручний доказ того, що я не просто щось вигадував для людей, які про це не знали. У ці дні я не очікував би встановити bannerвстановлений за замовчуванням на UNIX, більше, ніж я очікував би знайти принтер безперервної подачі в комп'ютерній лабораторії. Але будь-який код гольфу про створення банерного тексту дійсно повинен мати bannerдесь програму. Це частина нашої багатої культурної історії, як комп'ютерні вигуки. :-)
steveha

1

баш, 175 170 байт

Вам потрібно витратити досить багато символів, щоб отримати гарний вихід !

base64 -d<<<H4sICKaT9FICAzAxAK2RQQ7AIAgE776CZP7/x1ZjERebcJAL0QybhcV6YdWizAPNaUatQQLFpj6h+c/XA05WF9Wtk9WJcxz4oe6e1YPQa7Wiut2wfjJ16STY30lSnNIlzvdpHhd6MiTOB65NYc+LAgAA|zcat

Вихід:

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

Ви можете зменшити її за допомогою lzma / unlzma
Emmanuel

0

F # - 204 символи

for s in(Seq.map(Seq.unfold(function|0L->None|i->Some(" #".[int(i%2L)],i/2L)))[173948798213L;174770890021L;191304848727L;182715110773L;45277009173L;191279670629L])do printfn"%s"(new string(Seq.toArray s))

Вихід:

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

0

Python + pyfiglet - 87 символів

from pyfiglet import figlet_format     
print(figlet_format('Hello-World!', font='banner'))

Вихідні дані

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

Щоб встановити pyfiglet, запустіть:

$ pip install pyfiglet

0

Python з pyfiglet: 66, використовуючи argv, 69 без

66:

from pyfiglet import*
print(figlet_format(sys.argv[1],font='3x5'))

69:

from pyfiglet import*
print(figlet_format('Hello-World!',font='3x5'))

ялинки повинні називатися, наприклад:

python asciiart.py "Привіт-світ!"

друге:

python asciiart.py.

Вихід:

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

(Що ж, це шрифт виглядає напевно. Тим не менш :))

[редагувати] видалено застарілий тире з аргументу.


Чому зайвий тире перед виходом?
Ільмарі Каронен

Моя помилка, це вихід з того, хто використовує argv, де я використовував тире перед аргументом (справа звички, оскільки я весь час використовую bash). Я відредагую, дякую.
Таку

0

Javascript 137 (134)

Використовує біти цілих чисел для зображення різких пробілів. Тестовано з Firefox 27.

137 персонажів

s="";[0xadb73eead9,g=0xa9252aaa94,0xed252aac95,g+1,0xad272aee99].map(n=>{for(;n>0;n/=2)n%2?[s="#"+s,n--]:s=" "+s;s="\n"+s});console.log(s)

# # ## #  #  ###  # # # ### ### #  ##  #
# # #  #  #  # #  # # # # # # # #  # # #
### ## #  #  # #  # # # # # ##  #  # # #
# # #  #  #  # #  # # # # # # # #  # #  
# # ## ## ## ###  ##### ### # # ## ##  #"

134 символу (повернутий на 180 °)

s="";[0xadb73eead9,g=0xa9252aaa94,0xed252aac95,g+1,0xad272aee99].map(n=>{s+="\n";for(;n>0;n/=2)n%2?[s+="#",n--]:s+=" "});console.log(s)

"
#  ## ## # # ### #####  ### ## ## ## # #
  # #  # # # # # # # #  # #  #  #  # # #
# # #  #  ## # # # # #  # #  #  # ## ###
# # #  # # # # # # # #  # #  #  #  # # #
#  ##  # ### ### # # #  ###  #  # ## # #"

0

Python3 (126)

Між символами є додатковий простір, щоб зробити його легше читати. Технічно це рішення на 125 символів.

print(' '.join(['','\n'][i%40==0]+['#',' '][int('72liw1j4glyc34dum02j2a4ipxa8b7vvp65x511',36)//2**i%2==0]for i in range(200)))

Вихід:

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

0

Баш 37 , 33

toilet<<<"Hello-world"|tr \"m \#

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

Що таке:

echo "Hello-world" | toilet

З man toilet

TOIlet - відображення великого барвистого символу

З tr "'\"m" "#"усіма "символами замінюються на #.


trПараметри буде коротше, ніж цитується. Я маю на увазі tr \'\"m \#замість tr "'\"m" "#".
манатура

О добре, я цього не знав. Дякуємо @manatwork
fedorqui

Почекайте секунду. toiletВихід не було жодного котирування. Чому ви включили його trдо першого параметра? Просто tr \"m \#достатньо.
манатура

@manatwork Я думаю, що мені потрібно більше кави :)
fedorqui

0

Smalltalk, 151

Хоча ця гра в гольф вже закінчена, для довідки:

i:=((Form extent:115@14)displayString:'Hello world'x:0y:12;asImage).0to:13 do:[:y|i valuesAtY:y from:0to:114 do:[:x :p|({$#.$ }at:p+1)print].Stdout cr]

вихід:

 ***  ***             ***       ***                                                         ***           **       
  *    *                *         *                                                           *            *       
  *    *                *         *                                                           *            *       
  *    *     ***        *         *        ***              ***   ***    ***     *** ***      *        *** *       
  ******    *   *       *         *       *   *              *     *    *   *      **   *     *       *   **       
  *    *   *     *      *         *      *     *             *  *  *   *     *     *          *      *     *       
  *    *   *******      *         *      *     *              * * *    *     *     *          *      *     *       
  *    *   *            *         *      *     *              * * *    *     *     *          *      *     *       
  *    *    *    *      *         *       *   *               ** **     *   *      *          *       *   **       
 ***  ***    ****    *******   *******     ***                *   *      ***     ******    *******     *** **      

Ви повинні використовувати лише символи "" (пробіли) та "#" (також символи нового рядка).
Мукул Кумар

моя помилка; вихід був з попереднього пробігу; код правильний "{$ #. $} за адресою: p + 1".
blabla999
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.