Намалюйте логотип Олімпійських ігор [закрито]


107

Виклик

Намалюйте логотип Олімпійських ігор ...

Олімпійські ігри логотип

... як персонаж (наприклад, ASCII) мистецтво!

Вибірка зразка

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

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

Правила

  • Програма повинна записати мистецтво на консоль.
  • Найкоротший код (у байтах, будь-якій мові) виграє.
  • За рішення, яке друкує кільця у відповідних кольорах (або близьке представлення), буде надано бонус мінус двадцять очок.

Переможець буде обраний в лютому 23 - го в кінці зимової Олімпіади 2014 року.


Переможці


7
20 бонусних балів. Гм, чому я хотів би +20 до своєї оцінки?
Джастін

21
Хам, це торгова марка…
moala

4
@moala Я думаю, що це підпадає під політику добросовісного використання.
Nzall

11
За кольором видно, що вони з’єднуються між собою кільцями, а не просто перетинаються . Мало хто з записів до цього часу пояснював це.
Роб Кеннеді

6
Цілком IANAL: добре писати програмне забезпечення, яке малює O ****** ic R ** gs, не нормально його виконувати. :-)
Карл Віттофт

Відповіді:


23

APL (82) (-20 = 62)

Редагувати: для зміни ця програма є досить простою, щоб TryAPL торкнувся її, тому ви можете запустити її там (просто вставити рядок у).

Не впевнений, чи можу я вимагати біт "кольору", я все ж представляю їх по-різному.

2/' ▓█░▓▒'[1+(13↑⍉n)⌈¯13↑⍉32↑¯26↑⌈1.1×11↓n←⍉c,0,2×c,0,2×c←(⍳2/10)∊⌈5+5×1 2∘○¨⍳1e4]

Консоль APL не підтримує колір, тому я використовував затінені символи блоку (призначення будь-якого іншого мистецтва ASCII було б таким же простим, як і заміна символів на початку рядка.)

Вони повинні виглядати як нерозривні кола (залежно від вашого шрифту.)

      2/' ▓█░▓▒'[1+(13↑⍉n)⌈¯13↑⍉32↑¯26↑⌈1.1×11↓n←⍉c,0,2×c,0,2×c←(⍳2/10)∊⌈5+5×1 2∘○¨⍳1e4]
    ▓▓▓▓▓▓▓▓▓▓▓▓          ████████████          ▓▓▓▓▓▓▓▓▓▓▓▓    
  ▓▓            ▓▓      ██            ██      ▓▓            ▓▓  
▓▓                ▓▓  ██                ██  ▓▓                ▓▓
▓▓            ░░░░░░░░░░░░          ▒▒▒▒▒▒▒▒▒▒▒▒              ▓▓
▓▓          ░░    ▓▓  ██  ░░      ▒▒    ██  ▓▓  ▒▒            ▓▓
▓▓        ░░      ▓▓  ██    ░░  ▒▒      ██  ▓▓    ▒▒          ▓▓
▓▓        ░░      ▓▓  ██    ░░  ▒▒      ██  ▓▓    ▒▒          ▓▓
▓▓        ░░      ▓▓  ██    ░░  ▒▒      ██  ▓▓    ▒▒          ▓▓
  ▓▓      ░░    ▓▓      ██  ░░  ▒▒    ██      ▓▓  ▒▒        ▓▓  
    ▓▓▓▓▓▓░░▓▓▓▓          ██░░██▒▒████          ▓▓▒▒▓▓▓▓▓▓▓▓    
          ░░                ░░  ▒▒                ▒▒            
            ░░            ░░      ▒▒            ▒▒              
              ░░░░░░░░░░░░          ▒▒▒▒▒▒▒▒▒▒▒▒                

Або:

      2/' bByRg'[1+(13↑⍉n)⌈¯13↑⍉32↑¯26↑⌈1.1×11↓n←⍉c,0,2×c,0,2×c←(⍳2/10)∊⌈5+5×1 2∘○¨⍳1e4]
    bbbbbbbbbbbb          BBBBBBBBBBBB          RRRRRRRRRRRR    
  bb            bb      BB            BB      RR            RR  
bb                bb  BB                BB  RR                RR
bb            yyyyyyyyyyyy          gggggggggggg              RR
bb          yy    bb  BB  yy      gg    BB  RR  gg            RR
bb        yy      bb  BB    yy  gg      BB  RR    gg          RR
bb        yy      bb  BB    yy  gg      BB  RR    gg          RR
bb        yy      bb  BB    yy  gg      BB  RR    gg          RR
  bb      yy    bb      BB  yy  gg    BB      RR  gg        RR  
    bbbbbbyybbbb          BByyBBggBBBB          RRggRRRRRRRR    
          yy                yy  gg                gg            
            yy            yy      gg            gg              
              yyyyyyyyyyyy          gggggggggggg                

165

Commodore 64 BASIC

Написання безпосередньо в екран і кольорову пам'ять.

Програма

Вихід:

Вихідні дані


Ось як ви це робите з спрайтами.


1
Це фантастично. +1. Чи можемо ми отримати кількість байтів?
Адам Марас

2
Пам'ятайте, що ви можете скорочувати команди і номери рядків на C64 BASIC, якщо хочете займатися гольфом.
Габріеле Д'Антона

15
Єдине, що мене турбує щодо цієї відповіді, це: як це мистецтво ascii?
Джастін

10
це PETSCII-арт
Gabriele D'Antona

7
@Quincunx: Оскільки PETSCII також відомий як CBM ASCII, це може бути кваліфікованим. Якщо ви хочете, щоб для малювання використовувався інший символ (щоб він виглядав більше схожим на класичне мистецтво ASCII), заміни 160 (перевернутий пробіл) на 42 (зірочка) у рядку 100 слід зробити трюк.
Хайнзі

86

HTML Fiddle - 48 , 35 , 33 символів (спасибі @Dom та @cnst!)

OOO<p style="margin:-15px 6px">OO

Вихід:

введіть тут опис зображення


2
Ви можете зберегти більше символів, використовуючи: OOO<div style="margin:-10px 5px">OOнатомість ... (я думаю, що це повинен бути блоком, отже, звідси <div/>)
Дом Гастінгс,

Оскільки це не консольний вихід, вам краще на конкурсі олімпійців у вільному стилі: codegolf.stackexchange.com/q/19050/15168
CousinCocaine

@DomHastings: Добрий дзвінок! Відповідь оновлено :)
Briguy37

3
Тоді, чому турбуватися div, можна просто використовувати pзамість цього!
cnst

2
@PygameNerd: Це залежить від вашого визначення поняття "ASCII art": так, якщо ваше визначення "ASCII символи, розташовані для формування зображення"; ні, якщо ваше визначення - "ASCII символи в текстовому редакторі фіксованої ширини для формування малюнка". Що стосується того, чи виводиться він на консоль, як сказав CousinCocaine, якщо визначення - "Блок управління або моніторингу комп'ютера, що містить клавіатуру або клавіші, комутатори тощо". , тоді вихід веб-браузера є частиною монітора і, отже, консолі (хоча це, мабуть, не те, що планував ОП).
Briguy37

76

БАШ в кольорі - 271 - 20 = 251 - З заплутаними кільцями; P

o='_4mGA  _0mGA  _1mG\n _4m/A \A _0m/A \\_1mA /A \\\n_4mD_3m---_0mD_2m---_1mD\n _4m\A_3m/_4m/A_0m\\_3m\\A_2m/_0m/A_1m\\_2m\A _1m/\n_4mG_3mD_0m---_2mD_1m---\n_3m   A\A /A _2m\A /_1m\n _3mA G  A_2mG\n';o=${o//D/|A   |};o=${o//A/    };o=${o//G/   ---};printf "${o//_/\\e[3}"

Результат:

введіть тут опис зображення


І для задоволення це одне: 61 - 20 = 41.

x='_4mO_3m^_0m0_2m^_1mO\n_3m V _2mV\n';printf "${x//_/\\e[3}"

введіть тут опис зображення


Версія LZ77:

echo H4sIALOY5VIAA12QwRXAIAhD767ghQV8CnYbXYENOnw1YqX1xk8wQGz1UiJKKRFebLX8ARsIs7g0g/djN7CdRAYC7Pf6h+5RVR3foMdTMcqHWlS3jKr5RKO/g25doJdXZ+ii75CseU2zNkGzH6HYCPKhPGmA2Wh3+7mEDHMgb/2cUPYJH2gPhtZxAQAA|base64 -d|zcat

13
Наразі не так багато відповідей отримують правильне чергування кілець, тому це вартує надбавки, навіть якщо оцінка трохи вище.
Пітер Тейлор

1
bash: !/\\e[3}": event not found:(
Альтер Лагос

Я думаю, що ваша версія bash є дійсною - ніде в ОП не вказаний розмір графіки - але вам потрібно зафіксувати кільця форми "V". Може, тильда (~) для нижньої частини кілець?
AmeliaBR

@AlterLagos: Ви можете знайти оновлення?
Руніум

@AmeliaBR: Так, це було більше для задоволення від цього, а не для цього серйозно. Пробував з різними. Можливо, це більше до вподоби? x='54mO53m_50m052m_51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"- (Я трохи злий з 5 тут.) Або навіть це може бути краще, маючи на увазі перекриття: x='54mO53mA50m052mA51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"- хоч це може виглядати більш брудно, ніж інші.
Руніум

76

Sinclair BASIC на ZX Spectrum 48K (261 байт)

ОСНОВНИЙ перелік:

ОСНОВНИЙ перелік

Кінцевий результат:

Результат

Запуск програми та вимірювання коду:

Програма працює

ОСНОВНИЙ перелік у текстовому форматі:

5 INK VAL "7": CLS 
10 LET a=VAL "42": LET b=VAL "131": LET c=VAL "40": CIRCLE INK SGN PI;a,b,c: CIRCLE INK PI-PI;a+a+a,b,c: CIRCLE INK VAL "2";VAL "210",b,c
20 LET a=VAL "84": LET b=VAL "87": CIRCLE INK VAL "6";a,b,c: CIRCLE INK VAL "4";a+a,b,c
30 FOR l=PI-PI TO VAL "21": FOR c=PI-PI TO VAL "31": IF ATTR (l,c)<>VAL "63" THEN PRINT INK VAL "8";AT l,c;"*"
40 NEXT c: NEXT l

Файл TAP з програмою, підходить для емуляторів або реальної машини за допомогою DivIDE або DivMMC: http://www.zxprojects.com/images/stories/draw_the_olympics_flag.tap


17
Мені подобається асцифікаційна частина :)
Thorbjørn Ravn Andersen

1
Це прекрасно!
pcnThird

Використання графіки спрайт Z80 просто геніальне !! PS віднімаємо 20 балів за кольори.
Томаш

Дуже брудно створювати звичайне мистецтво, а потім робити з нього мистецтво ASCII. :)
undergroundmonorail

Чи можете ви включити вихідний код у форму, яка може копіювати?
Paŭlo Ebermann

44

Тому я насправді не читав належним чином, це ASCII-мистецтво, тож я гадаю, що це недійсно. На жаль!


HTML 121 (141 - 20)

<pre style=line-height:3px;letter-spacing:-3px><font color=#06f>O <font color=#000>O <font color=red>O
 <font color=#fa0>O <font color=#193>O

У Chrome:

Що це!  Олімпійський прапор для мурах?

PHP 103 (123 - 20)

<pre style=line-height:3px;letter-spacing:-3px><?=($f='<font color=')."#06f>O ${f}#000>O ${f}red>O
 ${f}#fa0>O ${f}#193>O";

2
Ви можете отримати кольору трохи ближче без штрафу: синій: #06f, жовтий: #fa0, зелений:#193
гидливо грифа

2
Оскільки це не консольний вихід, вам краще на конкурсі олімпійців у вільному стилі: codegolf.stackexchange.com/q/19050/15168
CousinCocaine

39

Рубі: 198 символів - 20 = 178

a=[*0..9].map{[' ']*35}
d=->c,x,y=0{11.times{|i|7.times{|j|a[y+j][x+i]="^[[3#{c}m#^[[0m"if[248,774,1025,1025,1025,774,248][j]&1<<i!=0}}}
d[4,0]
d[0,12]
d[1,24]
d[3,6,3]
d[2,18,3]
$><<a.map{|r|r*''}*$/

(Зверніть увагу, що ^[це одиночні символи.)

Проба зразка:

Олімпійські ігри логотип


37

Математика - 185

c[x_, y_] := 
 Table[Boole[Abs[(i - x)^2 + (j - y)^2 - 16] < 4], {i, 0, 15}, {j, 0, 
   30}]
MatrixForm@
 Replace[Blue c[5, 4] + Black c[5, 14] + Red c[5, 24] + 
   Yellow c[9, 9] + Green c[9, 19], {0 -> "", 
   c_ + _ | c_ :> Style["*", c]}, {2}]

Ось вихід

введіть тут опис зображення

Ще одна версія, заснована на растерізації векторної графіки

MatrixForm@
 Replace[ImageData@
   Rasterize[
    Graphics[{Blue, Circle[{4, 9}, 4], Black, Circle[{14, 9}, 4], Red,
       Circle[{24, 9}, 4], Yellow, Circle[{9, 4}, 4], Green, 
      Circle[{19, 4}, 4]}], ImageSize -> {30, 15}], {c_ :> 
    Style["*", RGBColor@c]}, {2}]

введіть тут опис зображення


2
Ви отримуєте бали за найкращий вихід.
Майкл Стерн

Хороша робота. Я опублікував власну версію вашого коду.
Mr.Wizard

34

PostScript, 203 (-20 = 183)

%!
/Courier findfont 12 scalefont setfont
/l { setrgbcolor translate 20 { 0 30 moveto (*) show 18 rotate } repeat } def
140 200 0 0 1 l 45 -30 1 1 0 l 45 30 0 0 0 l 45 -30 0 1 0 l 45 30 1 0 0 l
showpage

Я стверджую, що це вважається "мистецтвом ASCII", хоча воно не пише на консоль. Вихід:

Олімпійські кільця

Це могло б трохи більше пограти в гольф.


19
Якщо це мистецтво ASCII, воно, безумовно, перше, що я бачив, використовуючи обертові зірочки.
TheBlastOne

2
Я впевнений, що це буде не останньою.
Псевдонім

25

Windows Command Script - 112 відсотків байт

%1%0 @echo. set
%2.= oooo 
%2,=o    o
%1%.%%.%%.%&%1%,%%,%%,%&%1o  %.%%.%  o&%1%.%%.%%.%&%1   %,%%,%&%1   %.%%.%

100% олімпійські каблучки

І звичайно, обов`язковий читський варіант - 4 байти

%~n0

збережено як:

@echo. oooo  oooo  oooo&echo.o    oo    oo    o&echo.o   oooo  oooo   o&echo. oooo  oooo  oooo&echo.   o    oo    o&echo.    oooo  oooo.cmd

10
нам потрібно більше відповідей у ​​BAT та CMD :)
Ейнасіо

21

Ще одна спроба в Perl, 130 120

Дякуємо манатрові за допомогу в цьому

for(qw(15005 40410 802a0 80a28 41414 15005 808 2a0)){$s=sprintf"%20b",hex;$s=~y/01/ #/;print$s.substr(reverse($s),1).$/}

Вихід:

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

3
Ви можете зекономити: 4 символи, використовуючи forзамість foreach; 2 символи, видаливши (… аргументи )круглих sprintf(); 2 символи, видаливши hexпараметр 's; 1 символ, використовуючи y///замість tr///; 1 символ, видаливши фінал ;.
манатура

@manatwork Дякую! Я ніколи навіть не чув про це y///. Піду і подивимось.
писклива косточка

20

Пітон: 157 140 138 133 122 107 символів

107

(завдяки манатурності )

for o in"jzd360 1zlpwci 3ydgr29 20pzv5u jzd360 149ytc b8n40".split():print bin(int(o,36))[2:].rjust(34,'0')

вихід вибірки:

0001001000000001001000000001001000
0100000010000100000010000100000010
1000000001001000000001001000000001
0100000110000110000110000110000010
0001001000000001001000000001001000
0000000100000010000100000010000000
0000000001001000000001001000000000

157

print'\n'.join(['{0:b}'.format(o).rjust(39,'0') for o in [45099909288,137984246274,275230249985,276241138945,137984246274,45099909288,1078001920,352343040]])

122

(я тільки почав цю, я спробую її вдосконалити)

h=lambda x:bin(int("15bb511iun9aqulod22j8d4 ho8skh  "[x::8],36))[2:].rjust(20)
for x in range(8):print h(x)+h(x)[::-1][1:]

з кращим виходом: 120 символів

for o in"jzd360 1zlpwci 3ydgr29 20pzv5u jzd360 149ytc b8n40".split():print bin(int(o,36))[2:].replace('0',' ').rjust(34)

вихід вибірки:

   1  1        1  1        1  1   
 1      1    1      1    1      1 
1        1  1        1  1        1
 1     11    11    11    11     1 
   1  1        1  1        1  1   
       1      1    1      1       
         1  1        1  1         

1
Що з базою 36? Це має 140 символів: print'\n'.join(['{0:b}'.format(int(o,36)).rjust(39,'0')for o in"kpvbkq0 1re099tu 3ifszg1t 3iwiuayp 1re099tu kpvbkq0 httbls 5trxmo".split()]). Щодо версії "кращого виходу", там можна зберегти rjust()другий параметр. (І вставте "t" у заголовок цієї публікації.)
маніпуляція

Я шукав кращого рішення, твій виглядає чудово!
evuez

1
Приємне поліпшення с bin(). Але для чого ти це використовуєш str()? bin()повернуте значення вже є str.
манатура

3
Чи не повинен бути 5-й рядок 010000010100000101000101000001010000010? Дві нижні кільця виглядають мені трохи розбитими.
писклива косинка

@manatwork дійсно, не думав про це!
evuez

17

Перл, 177 163

Вдосконалена версія завдяки Dom Hastings:

$s=$"x3;print"  .-~-. "x3 .$/." /$s  \\"x3 .$/."|$s$s "x4 ."
 \\$s ./~\\.$s./~\\.$s /
  '-./'$s'\\-/'$s'\\.-'
"."$s |$s"x3 ."
$s "." \\$s  /"x2 ."
$s"."$s'-.-'"x2;

Вихід:

  .-~-.   .-~-.   .-~-. 
 /     \ /     \ /     \
|       |       |       |       
 \    ./~\.   ./~\.    /
  '-./'   '\-/'   '\.-'
    |       |       |   
     \     / \     /
      '-.-'   '-.-'

2
Ура за Perl! Кілька додаткових заощаджень: замість того, щоб використовувати "\n"як $r, ви можете використовувати $/за замовчуванням "\n", буквальні нові рядки можуть навіть заощадити більше у двох місцях. Ви також можете зберегти ще один char, використовуючи, $s=$"x3а не $s=" ". Сподіваюся, що це допомагає!
Дом Гастінгс

15

C, 257 байт

#include <stdio.h>
d(i,j){int r=35;float x=r,y=0;while(--r>0){char s[8]={29,(((int)y+j)/32)+32,(((int)y+j)%32)+96,(((int)x+i)/32)+32,(((int)x+i)%32)+64,31,'.',0};puts(s);x-=0.2*y;y+=0.2*x;}}main(){d(140,200);d(185,170);d(230,200);d(275,170);d(320,200);}

Це могло бути трохи більше в гольф.

Це потрібно запустити на Tektronix 4010 (або на емуляторі, такому як xterm -t). Вихід:

Вихід

Це справді мистецтво ASCII, оскільки це все "." символів. І він робить вихід на консоль, як вимагається. Деякі емулятори Tektronix підтримують колір. Моя не стала, тому я не міг цього робити.


12

Java, 181 179 161 156 байт

enum M{M;{System.out.print(new java.math.BigInteger("2b13bp4vx9rreb1742o0tvtpxntx0mgsfw48c4cf",36).toString(2).replaceAll(".{29}","$0\n"));System.exit(1);}}

(Не збирається на jdk 1.7, потрібна версія 1.6 або нижче)

Вихід:

11100011111110001111111000111
10111110111011111011101111101
01111111000111111100011111110
10111100111001110011100111101
11100011111110001111111000111
11111101111101110111110111111
11111111000111111100011111111

Однозначно не переможець, але давай, це java .


2
Запасний 2 символи, не захоплюючи в replaceAll()«s регулярний вираз і покласти назад всю узгоджену частину: replaceAll(".{29}","$0\n"). (У кінці вашого файлу може бути додатковий розрив рядка, оскільки я розміщую лише 181 символ у розміщеному коді.)
манатура

1
Ще одне: видаліть importі введіть ім'я пакета безпосередньо у виклик конструктора. Це зменшує розмір до 161 символу.
манантська робота

Зберегли ще 5 байт, змінивши class M{static{...на enum M{M;{.... Наступним великим кроком є ​​позбавлення від BigInteger, чи це можливо? Я намагаюся зробити якусь магію зі String.format, але результатів поки немає.
Юрій Шилов

12

Хаскелл, 200

main=mapM(putStrLn.map(\b->if b then '#' else ' '))$(map.map)(\(x,y)->or$map(\(n,m)->(<2).abs.(18-)$sqrt$(n-x)^2+(m-y*2)^2)$[(20,20),(60,20),(100,20),(40,40),(80,40)])$map(zip[0..120].repeat)[0..30]

Вихід:

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

гольф з:

{-# LANGUAGE NoMonomorphismRestriction #-}

olympMids = [(1,1),(3,1),(5,1),(2,2),(4,2)]
circleRadius = 0.9
circleBorder = 0.1
scaleFactor = 20
verticalScale = 0.5

distance :: Floating a => (a,a) -> (a,a) -> a
distance (x,y) (x2,y2) = sqrt $ (x2-x)^2 + (y2-y)^2

match :: (Floating a, Ord a) => (a,a) -> (a,a) -> Bool
match v v2 = (<circleBorder) . abs . (circleRadius-) $ distance v v2

matchOlymp :: (Floating a, Ord a) => (a,a) -> Bool
matchOlymp v = or $ map (match $ scale v) $ olympMids
  where
    scale (x,y) = (x / scaleFactor, y / scaleFactor / verticalScale)

board :: (Enum a, Num a) => a -> a -> [[(a, a)]]
board lx ly = map (zip [0..lx] . repeat) [0..ly]

printOlymp = mapM (putStrLn . map to) $ (map.map) matchOlymp $ board 120 30

main = printOlymp

to :: Bool -> Char
to True = '#'
to False = ' '

2
Я досі сміюся з-за того, map.mapщо це звучить смішно. : D
Vektorweg

Начебто роздутий ...
СемБ

кільця чи код?
Vektorweg

Я маю на увазі кільця :-)
SamB

11

Рубі, 9

p"\044"*5

# сатира

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

Ви можете розпізнати це зображення логотипу Олімпійських ігор.


Смішно :) Як Чикаго, я можу вам сказати, що саме це бачив міський голова, коли він придивлявся до ігор!
Дін Редкліфф

Як Ванкувері (Ігри 2010 року), я також можу сказати. :-)
Даррен Стоун

8
Я відчуваю, що тут пропускаю жарт ізсередини :-P
Doorknob

2
@DoorknobofSnow Вибачте, я хоч вас заплутався в кодах символів. Якщо ви не знайдете зв’язок між Олімпіадою та знаками долара, я не можу вам тут допомогти.
AmeliaBR

8
вихід:
$
Роджер

11

Javascript - 170 185 189 символів

'jzd36071zlpwci73ydgr29720pzv5u7jzd3607149ytc7b8n40'.split(7).map(function(x){a=parseInt(x,36).toString(2);console.log((Array(35-a.length).join(0)+a).replace(/0/g,' '))})

Вихід:

   1  1        1  1        1  1    
 1      1    1      1    1      1  
1        1  1        1  1        1 
 1     11    11    11    11     1  
   1  1        1  1        1  1    
       1      1    1      1        
         1  1        1  1         

2-й Javascript - 25 символів

console.log('O O O\n O O')

Вихід:

O O O 
 O O 

Другий - лінивий


1
Ви можете пощадити; 2 символи, використовуючи “4” як роздільник замість “.” Та використовуючи цифру 4 (без лапок) як split()параметр 's; 2 символи, видаливши останні 2 ;с.
манатура

А ( в даний момент) Firefox тільки версії вище , можуть бути зменшені ще більше, до 172 символів: 'kpvbkq041re099tu43ifszg1t43iwiuayp41sdk52824kpvbkq04httbls45trxmo'.split(4).map(x=>{a=parseInt(x,36).toString(2);console.log(' '.repeat(39-a.length)+a.replace(/0/g,' '))}).
манатура

Дякуємо, додав вашу пропозицію, я поки що залишаю його браузером незалежним.
Едуард Флорінеску

◯ не ascii ...
njzk2

@ njzk2 Yup, вирішив це סּ_סּ
Едуард Флоринеску

11

Бінарний! (265 CHARS)

0001111100000000111110000000011111000
0100000001000010000000100001000000010
1000000001111100000000011111000000001
0100000011000011000001100001100000010
0001111100000000111110000000011111000
0000000010000001000001000000100000000
0000000001111100000000011111000000000

Він занадто великий, щоб виграти, але принаймні це виглядає круто!


Олімпійський логотип у матриці.
користувач13107

@ user13107 Що?
Dozer789

10

PHP - 99 (-20?)

 bbbb  ####  rrrr
b    b#    #r    r
b   ybyy  g#gg   r
 bbyb  ##g#  rrrr
   y    yg    g
    yyyy  gggg

Це, безумовно, впізнається. Я кажу, що мої "кольори" рахуються; це близьке представлення.

Якщо вам це не подобається, то ось

GolfScript - 101 (-20?)

' bbbb  ####  rrrr
b    b#    #r    r
b   ybyy  g#gg   r
 bbyb  ##g#  rrrr
   y    yg    g
    yyyy  gggg'

16
Де код?
Скасувати

14
@Undo Те є код ;-)
Дверна ручка

По правді кажучи, я не знаю PHP. Це єдина програма / стиль PHP, яку я знаю, як писати. (Звичайно, я пройшов підручник, але забув).
Джастін

2
Хіба не з'явиться PHP як bbbb #### rrrr bb # #rrb ybyy g # gg r bbyb ## g # rrrr y yg g yyyy gggg на екрані?
Містер Лістер

4
Вам потрібно додати header("Content-Type: text/plain"), типовим для веб-серверів є text / html
Kroltan

10

Bash + ImageMagick: 163 символи

e=ellipse
c=,10,5,0,360
convert -size 70x20 xc:black +antialias -stroke white -fill none -draw "$e 10,5$c$e 34,5$c$e 58,5$c$e 22,10$c$e 46,10$c" xpm:-|tr -dc ' .
'

Вибірка зразка:

.

     ...........             ...........             ...........
   ....       ....         ....       ....         ....       ....
 ...             ...     ...             ...     ...             ...
..                 ..   ..                 ..   ..                 ..
..                 ..   ..                 ..   ..                 ..
.                ...........             ...........                .
..             ......   ......         ......   ......             ..
..           ...   ..   ..   ...     ...   ..   ..   ...           ..
 ...        ..   ...     ...   ..   ..   ...     ...   ..        ...
   ....     ......         ......   ......         ......     ....
     ...........             ...........             ...........
            ..                 ..   ..                 ..
            ..                 ..   ..                 ..
             ...             ...     ...             ...
               ....       ....         ....       ....
                 ...........             ...........

10

Perl 6: 112 77 56 символів, 75 байт

say flip .ord.base(2).trans("01"=>" @")for"𜜜𢢢񃣡𦶲𜜜䔐㣠".comb
  • Unicde рядки! (верхній рядок - "\ x1C71C \ x228A2 \ x438E1 \ x26DB2 \ x1C71C \ x4510 \ x38E0")
  • .comb дає список окремих символів у рядку (без аргументу)
  • .ord дає номер коду символу з символу
  • .base(2) повертає рядок з базовим кодуванням цього Int
  • .trans замінює цифри пробілом і @ для кращої видимості
  • flip обертає символи рядка, так що відсутні провідні 0 не псують креслення.
  @@@ @@@ @@@
 @ @ @ @ @ @
@ @@@ @@@ @
 @ @@ @@ @@ @@ @
  @@@ @@@ @@@
    @ @ @ @
     @@@ @@@

edit2: новіше рішення з використанням qwote слів і кодованою базою-36

say flip :36($_).base(2).trans("01"=>" @")for<2HWC 315U 5XI9 3ESY 2HWC DN4 B8G>
  • <ABC DEF GHI> - це синтаксис слів із цитатами в perl6, тому ви отримуєте список рядків
  • :36($_)створює Int з кодованого рядка base-36 у $_( forзмінної за замовчуванням циклу)

редагувати: старе рішення має приємніший (скопійований) малюнок, але довше:

  say flip :36($_).base(2).trans("01"=>" o")for<KPVBKQ0 1RE099TU 3IFSZG1T 3IWIUAYP 1SDK5282 KPVBKQ0 HTTBLS 5TRXMO>
   ooooooooo
 oooooo
oooooooo
oooooooooo
 oooooooooo
   ooooooooo
        оооо
          oooooo

10

Mathematica 185 175

10 байтів, збережених математикою.

Кільця нижче - це ASCII 'O.

Буква "О", злегка напівпрозора, у столітті готики, надрукована 5 разів розміром шрифту = 145 точок принтера.

Це не термінальне мистецтво. Однак це повністю відповідає визначенню Вікіпедії мистецтва Ассії: http://en.wikipedia.org/wiki/ASCII_art .

Graphics[{Opacity@.8,Style["O",#]~Text~#2&@@@{{Blue,{-1.5,1}},{Black,{0,1}},{Red,{1.5,1}},{Orange,{-.8,.4}},{Darker@Green,{.8,.4}}}},BaseStyle->{145,FontFamily->"Century Gothic"}]

олімпійські кільця


2
Оскільки це не консольний вихід, вам краще на конкурсі олімпійців у вільному стилі: codegolf.stackexchange.com/q/19050/15168
CousinCocaine

FontSize -> можна видалити.
математика

@mathe, правда. Я використовував розмір шрифту лише для того, щоб зробити вихідний розмір розумним.
DavidC

@DavidC Я маю на увазі, що ви можете замінити FontSize -> 145його 145.
математика

@mathe. Так! Дякую.
DavidC

8

JavaScript: 153 символів

Я хотів побачити, чи можу я це зробити швидше за допомогою алгебри, щоб насправді графіти кола:

s="";c=[3,7,11,7,19,7,7,4,15,4];for(y=10;y>0;y--){s+="\n";for(x=0;x<23;x+=.5){t=1;for(i=0;i<9;i+=2){a=x-c[i];b=y-c[i+1];d=a*a+b*b-9;t&=(d<0?-d:d)>3}s+=t}}

( cце масив з п'яти (x, y) пар, центрів кіл, сплющених для збереження десяти символів.)

вихід:

1110000000111111111000000011111111100000001111
1000111110001111100011111000111110001111100011
0011111111100111001111111110011100111111111001
0011111111100000001111111110000000111111111001
0011111110000111000011111000011100001111111001
1000111100001111100001110000111110000111100011
1110000000111111111000000011111111100000001111
1111111100111111111001110011111111100111111111
1111111110001111100011111000111110001111111111
1111111111100000001111111110000000111111111111

159 символів - це трохи читабельніше:

s="";c=[3,7,11,7,19,7,7,4,15,4];for(y=10;y>0;y--){s+="\n";for(x=0;x<23;x+=.5){t=1;for(i=0;i<9;i+=2){a=x-c[i];b=y-c[i+1];d=a*a+b*b-9;t&=(d<0?-d:d)>3}s+=t?" ":t}}

вихід:

   0000000         0000000         0000000    
 000     000     000     000     000     000  
00         00   00         00   00         00 
00         0000000         0000000         00 
00       0000   0000     0000   0000       00 
 000    0000     0000   0000     0000    000  
   0000000         0000000         0000000    
        00         00   00         00         
         000     000     000     000          
           0000000         0000000            

У 167 символах у нас є "кольори":

s="";c=[3,7,11,7,19,7,7,4,15,4];for(y=10;y>0;y--){s+="\n";for(x=0;x<23;x+=.5){t=1;for(i=0;i<9;i+=2){a=x-c[i];b=y-c[i+1];d=a*a+b*b-9;t&=(d<0?-d:d)>3;h=t?i:h}s+=t?" ":h}}

вихід:

   8888888         0000000         2222222    
 888     888     000     000     222     222  
88         88   00         00   22         22 
88         8844400         0066622         22 
88       4444   0044     6600   2266       22 
 888    4444     0004   6000     2226    222  
   8888888         0000000         2222222    
        44         44   66         66         
         444     444     666     666          
           4444444         6666666            

І маючи 189 знаків , я також можу зробити радіус rрегульованим:

r=5;s="";c=[r,0,2*r+1,r,3*r+2,0,4*r+3,r,5*r+4,0];for(y=-r;y<3*r;y++){s+="\n";for(x=0;x<9*r;x+=.5){t=1;for(i=0;i<9;i+=2){a=x-c[i];b=y-c[i+1];d=a*a+b*b-r*r;t&=(d<0?-d:d)>r;h=t?i:h}s+=t?" ":h}}

http://jsfiddle.net/mblase75/5Q6BX/


7

APL, 8 символів / байт *

Ось відповідь, яка наполягає на найнижчому рахунку (це все-таки гольф з кодом)

2 5⍴'○ '

Вихід:

○ ○ ○
 ○ ○ 

Символ ○, оператор кола APL. Ви можете поставити "O" замість цього, якщо ви хочете суворо ASCII вихід. Я просто вважав, що підходить використовувати символ APL.


Тільки для ударів, ось кольорова версія (37 символів - 20 = 17 балів)

2 20⍴'m',⍨¯2↓3↓∈(⊂'m○ ^[[3'),⍪'40132 '
                      ‾‾ ← single Esc character, type Ctrl+V Esc on the terminal

Вихід: кінцевий вихід кінцевих кілець ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL може бути записаний у власному (застарілому) однобайтовому наборі, який відображає символи APL до верхніх значень 128 байт. Таким чином, з метою підрахунку можна визначити, що програма з N символів, яка використовує лише символи ASCII та символи APL, має довжину N байтів.


7

CSS, 1176 рік 922 рік 855 771 байт, -20 кольоровий бонус = 751

html,head,title,body{display:block; color:transparent; font:bold 1em/1 monospace; height:0}
link,meta,style{display:none}
:before,:after{float:left; color:#000; white-space:pre;
content:'   @@@@@@@\A  @@@     @@@\A@@         @@ \A            @@\A@@         @@\A@@         @@\A  @@@     @@@\A    @@@@  @'}
html:before{color:blue}
title:before,title:after{color:blue; position:absolute; left:0; top:3em; content:'@@'}
title:after{color:red; top:7em; content:'                                   @@'}
head:after{color:red}
body:before{clear:left; content:'     '}
body:after,html:after{position:relative; top:-5em; color:#EC0;
content:'    @  @@@@\A   @@@     @@@\A  @@         @@\A  @@         @@\A  @@\A  @@         @@\A   @@@     @@@\A     @@@@@@@'}
html:after{color:#090}

Тільки CSS, розмітка не потрібна. Дивіться беззаперечну скрипку тут: http://jsfiddle.net/XcBMV/12/

Кільця

За кольором і з правильним перекриттям.


6

Perl - 12 символів

say"OOO\nOO"

Гаразд, тож це не особливо художнє візуалізація. ;-)

Трохи улюблені:

perl -MTerm::ANSIColor=:constants -E'say ON_BRIGHT_WHITE,BLUE,O,BLACK,O,RED,O,$/,YELLOW,O,GREEN,O,RESET'

6

16-бітний навантажувач BIOS OL в зборі GAS - 617 - 20 = 597

Сходити з розуму по довжині тут, так просто для задоволення.


Він не завантажує багато, але завантажує логотип Олімпійських ігор як ASCII з кольорами;)

Код:

.code16;S:jmp o;nop;o:mov $1984,%ax;mov %ax,%ds;mov %ax,%es;movw $t,%si;r:lodsb;or %al,%al;jz q;cmp $33,%al;jg k;movb $0,c;call X;inc %dh;mov $0,%dl;call G;jmp r;k:sub $48,%al;mov %al,%cl;add %al,c;lodsb;cmp $32,%al;je v;mov %al,%bl;and $15,%bl;mov $35,%al;v:mov $9,%ah;mov $0,%bh;mov $0,%ch;int $16;call X;mov c,%dl;call G;jmp r;q:ret;G:mov $2,%ah;int $16;X:mov $3,%ah;mov $0,%bh;int $16;ret;c:.byte 0;t:.asciz "3 5A9 5H9 5D!1 1A7 1A5 1H7 1H5 1D7 1D!1A9 1A4N9 1H4B9 1D!1A7 1N1 1A3 1H1 1N5 1B1 1H3 1D1 1B7 1D!1 1A5 1N1 1A5 1H1 1N3 1B1 1H5 1D1 1B5 1D!3 4A1N9 4H1B9 5D!8 1N7 1N5 1B7 1B!9 1 5N9 5B!";.=S+510;.word 0xaa55

(Linux) Створення та витяг MBR-зображення

as -o olymp.o olymp.S
objcopy -O binary olymp.o olymp.img

Запуск в емуляторі

(Ще не тестували його на домашньому комп’ютері ...)

qemu-system-i386 olymp.img

Результат

введіть тут опис зображення


4
Ви впевнені, що не використовуєте зовнішніх ресурсів до крайності, чи не так? +1
Адам Марас

@AdamMaras: Так, і це є;), довелося спробувати. Далі слід включити реальне завантаження ОС. O`Loader II.
Руніум

Як вона оцінюється, якщо виміряти двійкові, якщо припустити, що на диску вже був сектор завантаження, щоб ви могли пропустити 55h AAh в кінці (разом із будь-яким пов’язаним прокладкою)?
СамБ

@SamB: Це було б 275 байт, 255 пт, де частина коду становить приблизно 91 байт, а змінна + графічна інформація 184 байти.
Руніум

5

TI-Basic (16 байт)

Примітка: TI-Basic є токенізованим. Якщо я правильно пам'ятаю, ClrHomeі Dispце один байт маркерів.

ClrHome
Disp "O O O"," O O

4
#include<iostream.h>
#include<conio.h>
#define tc textcolor

void circle(int x,int y,int k)
{
  tc(k);
  int n;
  for(n=0;n<=6;n++)
  {

    if(n==0||n==6)
    {
      gotoxy(x+3,y+n);
      cprintf("* * *");
    }
    else if(n==1||n==5)
    {
      gotoxy(x+1,y+n);
      cprintf("*");
      gotoxy(x+9,y+n);
      cprintf("*");
    }
    else if(n>1&&n<5)
    {
      gotoxy(x,y+n);
      cprintf("*");
      gotoxy(x+10,y+n);
      cprintf("*");
    }
  }
}

void main()
{
  clrscr();
  circle(1,1,BLUE);
  circle(14,1,WHITE);
  circle(27,1,RED);
  circle(8,4,YELLOW);
  circle(21,4,GREEN);
  _setcursortype(0);
  getch();
}

Зроблено в компіляторі turbo c ++ 3.0.  Намагався зробити код якомога коротшим


7
1) Будь ласка, використовуйте Markdown для позначення блоку коду та зберігайте розміщений код читабельним. 2) Оскільки це проблема з кодовим гольфом , будь ласка, спробуйте зменшити розмір коду до суворо необхідного. 3) Будь-ласка, додайте до своєї відповіді рядок заголовка (підкреслюється з деякою розміткою до ваших уподобань (як правило, заголовком 1 або жирним шрифтом )) із зазначенням використаної мови, довжини коду та заробленої оцінки.
манатура
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.