Нарисуйте логотип Олимпийских игр [закрыто]


107

Вызов

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

Логотип олимпиады

... как персонаж (например, ASCII) искусство!

Пример вывода

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

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

правила

  • Программа должна записать картинку на консоль.
  • Самый короткий код (в байтах, на любом языке) выигрывает.
  • Решение, которое печатает кольца в их соответствующих цветах (или близкое представление), получит бонус минус двадцать очков.

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


Победители


7
20 бонусных баллов. Хм, почему я хочу +20 к моему счету?
Джастин

21
Хм, это товарный знак ...
Моала

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

Коммодор 64 Бейсик

Запись прямо на экран и в цветную память.

программа

Выход:

Выход


Вот как вы делаете это со спрайтами.


1
Это фантастично. +1. Можем ли мы получить количество байтов?
Адам Марас

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

15
Единственное, что беспокоит меня об этом ответе: как это искусство ascii?
Джастин

10
это PETSCII-арт
Габриэле Д'Антона

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/>)
Dom Hastings

Поскольку это не консольный вывод, вы лучше на олимпиаде в свободном стиле: codegolf.stackexchange.com/q/19050/15168
CousinCocaine

@DomHastings: хороший звонок! Ответ обновлен :)
Briguy37

3
Тогда зачем беспокоиться div, можете просто использовать pвместо этого!
CNST

2
@PygameNerd: Это зависит от вашего определения «ASCII art»: Да, если ваше определение «ASCII символы, организованные для формирования изображения»; нет, если вы определяете «символы ASCII в текстовом редакторе фиксированной ширины для формирования изображения». Что касается того, выводится ли он на консоль, как сказал CousinCocaine, если определено «Блок управления или контроля компьютера, содержащий клавиатуру или клавиши, переключатели и т. Д.» , то вывод через веб-браузер является частью монитора и, следовательно, консоли (хотя, вероятно, это не то, что предполагал OP).
Briguy37

76

BASH в цвете - 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:(
Alter Lagos

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

@AlterLagos: Возможно, вы найдете обновления?
Runium

@ 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}"- хотя это может выглядеть более грязно, чем другие.
Runium

76

Синклер Бейсик на 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. :)
подземный

Не могли бы вы включить исходный код в форму для копирования?
Паŭло Эберманн

44

Так что я на самом деле не читал правильно, это ASCII-art, так что я думаю, что это неверно. К сожалению!


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

Mathematica - 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
Вы получаете очки за самый красивый результат.
Майкл Стерн

Хорошо сделано. Я разместил свою версию вашего кода.
Мистер Волшебник

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

21

Еще одна попытка в Perl, 130 120

Спасибо Manatwork за помощь в этом

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параметра '; 1 символ с использованием y///вместо tr///; 1 персонаж, удалив финал ;.
manatwork

@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» в заголовок этого поста.)
manatwork

Я искал лучшее решение, вы отлично выглядите!
Евес

1
Хорошее улучшение с bin(). Но почему вы используете str()это? bin()возвращаемое значение уже str.
manatwork

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

@manatwork действительно, не думал об этом!
Евес

17

Perl, 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"as $rвы можете использовать по $/умолчанию "\n", буквальные переводы строк могут даже сэкономить вам больше в нескольких местах. Вы также можете сохранить еще 1 символ, используя $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). Выход:

Ooutput

Это действительно ASCII-искусство, так как это все "." персонажи. И это делает вывод на консоль, как и просили. Некоторые эмуляторы Tektronix поддерживают цвет. Мой не сделал, поэтому я не мог этого сделать.


12

Ява, 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 символ.)
manatwork

1
Еще одна вещь: удалите importи поместите имя пакета прямо в вызове конструктора. Это уменьшает размер до 161 символа.
manatwork

Сэкономил еще 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

Кажется, раздутый ...
SamB

кольца или код?
Векторвег

Я имею в виду кольца :-)
SamB

11

Руби, 9

p"\044"*5

#сатира

Правила допускают искусство, которое не совсем похоже на пример, но оно должно «представлять олимпийские кольца достаточно хорошо, чтобы их можно было узнать» .

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


Забавно :) Как чикагский, я могу сказать вам, что это именно то, что мэр видел, когда он ухаживал за играми!
Дин Рэдклифф

Как Ванкуверит (Игры 2010 года), я тоже могу общаться. :-)
Даррен Стоун

8
Я чувствую, что пропускаю внутреннюю шутку здесь :-P
Ручка двери

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()параметра; 2 символа, удалив последние 2 ;с.
manatwork

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

Спасибо, добавил ваше предложение, я пока оставлю его независимым от браузера.
Эдуард Флоринеску

◯ не ascii ...
njzk2

@ njzk2 Да, решил это סּ_סּ
Эдуард Флоринеску

11

Binary! (265 CHARS)

0001111100000000111110000000011111000
0100000001000010000000100001000000010
1000000001111100000000011111000000001
0100000011000011000001100001100000010
0001111100000000111110000000011111000
0000000010000001000001000000100000000
0000000001111100000000011111000000000

Он слишком велик, чтобы выиграть, но, по крайней мере, выглядит круто!


Олимпийский логотип в Матрице.
user13107

@ 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"), по умолчанию для веб-серверов используется текст / 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) возвращает строку с кодировкой base-2 этого Int
  • .trans заменяет цифры пробелом и @ для лучшей видимости
  • flip переворачивает символы строки, чтобы отсутствующие начальные 0 не испортили рисунок.
  @@@ @@@ @@@
 @ @ @ @ @ @
@ @@@ @@@ @
 @ @@ @@ @@ @@ @
  @@@ @@@ @@@
    @ @ @ @
     @@@ @@@

edit2: более новое решение с использованием слов qwote и кодировки base-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
 оооооо
OOOOOOOO
OOOOOOOOOO
 OOOOOOOOOO
   ooooooooo
        оооо
          оооооо

10

Mathematica 185 175

10 байтов, сохраненных mathe.

Кольца ниже - ASCII 'O's.

Буква «O», слегка полупрозрачная, в Century Gothic, напечатана 5 раз с размером шрифта = 145 точек печати.

Это не терминальное искусство. Однако это полностью удовлетворяет определению искусства Ascii в Википедии: 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

@ 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 загрузчик - 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.
Runium

Как он оценивает, если вы измеряете двоичный файл, предполагая, что на диске уже был загрузочный сектор, так что вы можете пропустить 55h AAh в конце (вместе с любым связанным заполнением)?
SamB

@SamB: это будет 275 байтов, 255 пунктов, где часть кода составляет около 91 байта, а переменная + данные графика - 184 байта.
Runium

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 или полужирный )), указав используемый язык, длину кода и заработанный балл.
manatwork
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.