Draw the Olympic Games logo

107

24

Challenge

Draw the Olympic Games logo...

Olympic Games logo

...as character (e.g. ASCII) art!

Sample Output

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

Your art doesn't have to look exactly like mine, but it has to represent the Olympic rings well enough that it's recognizable.

Rules

  • The program must write the art to the console.
  • Shortest code (in bytes, any language) wins.
  • A solution that prints rings in their respective colors (or a close representation) will be awarded a minus-twenty-point bonus.

The winner will be chosen on February 23rd at the end of the 2014 Winter Olympics.


Winners

Adam Maras

Posted 11 years ago

Reputation: 1 103

Question was closed 9 years ago

I'm voting to close this as too broad because of the rule "Your art doesn't have to look exactly like mine, but it has to represent the Olympic rings well enough that it's recognizable." – Mego – 9 years ago

720 bonus points. Um, why would I want +20 to my score? – Justin – 11 years ago

@Quincunx I assume -20 was meant – John Dvorak – 11 years ago

21Hum, this is a trademark… – moala – 11 years ago

4@moala I think this falls under fair use policy. – Nzall – 11 years ago

3@NateKerkhofs ok, if you think that the IOC is ok to comply with solely the US copyright law, no problem for me. – moala – 11 years ago

1

Be aware : http://registration.olympic.org/en/faq/detail/id/25 IOC are ùùùùù. Do not mess with them, they are really strict on the use of there logo

– Kiwy – 11 years ago

1AFAIK, countries willing to participate in the Olympic Games have to adjust their copyright law to the IOC ideas, not the other way round. – Hagen von Eitzen – 11 years ago

1Add a rule to include the (tm) mark also. – ja72 – 11 years ago

I've changed the wording of the bonus rule to reflect that the "twenty-point bonus" is indeed not 20 points added to your score. – Adam Maras – 11 years ago

To the trademark issue, I believe that this falls under nominative use, but the final decision resides with the purview of the administration and the lawyers. – Adam Maras – 11 years ago

11In color, it's evident that they are interlocking rings, not merely overlapping. Few of the entries so far have accounted for that. – Rob Kennedy – 11 years ago

6Totally IANAL: ok to write the sofware which draws the O****ic Rgs, not ok to execute it. :-) – Carl Witthoft – 11 years ago

1Surely as no money is being made, this is not illegal. – Jonathan. – 11 years ago

Too bad it's ASCII. Would look great with Python+Turtle for example. ;_; – Apache – 11 years ago

How big a bonus is there for making the rings overlap in the correct way? Maybe 50? The only one I spotted doing this right was http://codegolf.stackexchange.com/a/19218/14680.

– SamB – 11 years ago

er, s/is there/should there be/ – SamB – 11 years ago

@SamB The challenge has already been up for a week, I'd rather keep the rules as they are in terms of bonuses. – Adam Maras – 11 years ago

Answers

23

APL (82) (-20 = 62)

Edit: for a change, this program is simple enough that TryAPL will touch it, so you can run it there (just paste the line in).

Not sure if I can claim the 'color' bit, I'm representing them all differently though.

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]

The APL console doesn't support color, so I used shaded block characters (assigning any kind of other ASCII art would be as simple as replacing the characters at the beginning of the string.)

They should look like unbroken circles (depending on your font.)

      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]
    ▓▓▓▓▓▓▓▓▓▓▓▓          ████████████          ▓▓▓▓▓▓▓▓▓▓▓▓    
  ▓▓            ▓▓      ██            ██      ▓▓            ▓▓  
▓▓                ▓▓  ██                ██  ▓▓                ▓▓
▓▓            ░░░░░░░░░░░░          ▒▒▒▒▒▒▒▒▒▒▒▒              ▓▓
▓▓          ░░    ▓▓  ██  ░░      ▒▒    ██  ▓▓  ▒▒            ▓▓
▓▓        ░░      ▓▓  ██    ░░  ▒▒      ██  ▓▓    ▒▒          ▓▓
▓▓        ░░      ▓▓  ██    ░░  ▒▒      ██  ▓▓    ▒▒          ▓▓
▓▓        ░░      ▓▓  ██    ░░  ▒▒      ██  ▓▓    ▒▒          ▓▓
  ▓▓      ░░    ▓▓      ██  ░░  ▒▒    ██      ▓▓  ▒▒        ▓▓  
    ▓▓▓▓▓▓░░▓▓▓▓          ██░░██▒▒████          ▓▓▒▒▓▓▓▓▓▓▓▓    
          ░░                ░░  ▒▒                ▒▒            
            ░░            ░░      ▒▒            ▒▒              
              ░░░░░░░░░░░░          ▒▒▒▒▒▒▒▒▒▒▒▒                

Or:

      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                

marinus

Posted 11 years ago

Reputation: 30 224

165

Commodore 64 BASIC

Writing directly in the screen and color memory.

Program

Output:

Output


Here's how you do this with sprites.

Danko Durbić

Posted 11 years ago

Reputation: 10 241

1That's fantastic. +1. Can we get a byte count? – Adam Maras – 11 years ago

Yay! Don't forget to add an SYS 64738. – Xavier J – 11 years ago

2Remember that you can abbreviate commands and line numbers too on C64 BASIC if you want to golf. – Gabriele D'Antona – 11 years ago

This took me straight back to playing Epyx Summer Games. Good times.

– Jaydles – 11 years ago

15The only thing that bothers me about this answer is: How is this ascii art? – Justin – 11 years ago

10this is PETSCII-art – Gabriele D'Antona – 11 years ago

7

@Quincunx: Since PETSCII is also known as CBM ASCII, this might qualify. If you want a different character to be used for drawing (to make it look more like classic ASCII art), replacing 160 (inverted space) with 42 (asterisk) in line 100 should do the trick.

– Heinzi – 11 years ago

If you just make the bottom two rings start from the top at the same time as the others start from the bottom, it will draw them so they are actually interlocking. – AJMansfield – 11 years ago

86

HTML Fiddle - 48, 35, 33 characters (Thanks @Dom and @cnst!)

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

Output:

enter image description here

Briguy37

Posted 11 years ago

Reputation: 2 616

2You can save more chars using: OOO<div style="margin:-10px 5px">OO instead... (I think it needs to be a block though, hence the <div/>) – Dom Hastings – 11 years ago

As this is not console output, you are better of at the free-style olympics contest: http://codegolf.stackexchange.com/q/19050/15168

– CousinCocaine – 11 years ago

@DomHastings: Good call! Answer updated :) – Briguy37 – 11 years ago

3Then why bother with div, can just use p instead! – cnst – 11 years ago

@cnst Very nice! – Briguy37 – 11 years ago

Does this count as ASCII art? – PygameNerd – 11 years ago

2

@PygameNerd: It depends on your definition of "ASCII art": Yes if your definition is "ASCII characters arranged to form a picture"; no if your definition is "ASCII characters in a fixed-width text editor to form a picture". As for whether it is output to the console as CousinCocaine said, if the definition is "The control or monitoring unit of a computer, containing the keyboard or keys, switches, etc.", then the web browser output is part of the monitor and thus the console (though this is probably not what the OP intended).

– Briguy37 – 11 years ago

It's good for a laugh, anyway ;-) – SamB – 11 years ago

76

BASH in color - 271 - 20 = 251 – With entangled rings ;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}"

Result:

enter image description here


And the for fun of it one: 61 - 20 = 41.

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

enter image description here


LZ77 version:

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

Runium

Posted 11 years ago

Reputation: 1 878

13Not many answers so far get the alternating overlap of the rings right, so this is worth an upvote even if the score is a bit higher. – Peter Taylor – 11 years ago

1bash: !/\\e[3}": event not found :( – Alter Lagos – 11 years ago

I think your bash version is valid -- nowhere in the OP does it specify the size of the graphic -- but you need to fix the "V" shape rings. Maybe a tilde (~) for the bottom of the rings? – AmeliaBR – 11 years ago

@AlterLagos: You might find update works? – Runium – 11 years ago

@AmeliaBR: Yes, That one was more for the fun of it, and not that seriously meant. Tried with various. Perhaps this is more to the liking? x='54mO53m_50m052m_51mO\n53m U 52mU\n';printf "${x//5/\\e[3}" – (I'm a bit evil with the 5 here.) Or even this might be better, with overlap in mind: x='54mO53mA50m052mA51mO\n53m U 52mU\n';printf "${x//5/\\e[3}" – though it might look more messy then the others. – Runium – 11 years ago

Yep, with _ worked, cool! – Alter Lagos – 11 years ago

I try to compress it but it didn't work :( printf "\echo H4sIAEc+41IAA0VQyxXAIAhbhQV8qLhNufaoEzh8EYI9GUM+ir6PjEmlFFKD9YfNoS6/jMmkUBhSCByuEGzaB8g8LheC6ck0ZzIw4mTyzXdTZIudFGa+rR4R8w57szH6CS2SvTV7ezLNmRUq+w9TZjHCFx51t9CxhQ9LqFlHKAEAAA==|base64 -d|zcat`"` – Alvin Wong – 11 years ago

@AlvinWong: Not sure how you made the input for gzip, but updated A with a couple of lines. – Runium – 11 years ago

Looks more like a benzene than olympic circle :-)

– Tomas – 11 years ago

76

Sinclair BASIC on the ZX Spectrum 48K (261 bytes)

BASIC listing:

BASIC listing

Final result:

Result

Program running and code measuring:

Program running

BASIC listing in text format:

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 file with the program, suitable for emulators or real machine using DivIDE or DivMMC: http://www.zxprojects.com/images/stories/draw_the_olympics_flag.tap

mcleod_ideafix

Posted 11 years ago

Reputation: 901

Could you include the source code in a copy-able form? – Paŭlo Ebermann – 9 years ago

Done! You can use the text version, or feed the TAP file to an emulator or real machine. Your choice :) – mcleod_ideafix – 9 years ago

17I like the asciification part :) – Thorbjørn Ravn Andersen – 11 years ago

1This is lovely! – pcnThird – 11 years ago

The use of Z80 sprite graphic is simply genial!! PS subtract 20 points for colors. – Tomas – 11 years ago

It feels so dirty to generate regular art and then make ASCII art from it. :) – undergroundmonorail – 11 years ago

44

So I didn't actually read properly, it's ASCII-art, so I guess this is invalid. Oops!


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

In Chrome:

What is this! An Olympic flag for ants?

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";

Dom Hastings

Posted 11 years ago

Reputation: 16 415

2You can get the colours a bit closer with no penalty: blue:#06f, yellow:#fa0, green:#193 – r3mainer – 11 years ago

2

As this is not console output, you are better of at the free-style olympics contest: http://codegolf.stackexchange.com/q/19050/15168

– CousinCocaine – 11 years ago

39

Ruby: 198 characters - 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*''}*$/

(Note that ^[ are single characters.)

Sample run:

olympic games logo

manatwork

Posted 11 years ago

Reputation: 17 865

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

Here is the ouput

enter image description here

Another version, based on rasterization of vector graphics

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

enter image description here

swish

Posted 11 years ago

Reputation: 7 484

2You get points for the prettiest output. – Michael Stern – 11 years ago

Nice work. I posted my own version of your code. – Mr.Wizard – 11 years ago

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

I maintain that this counts as "ASCII art", though it doesn't write to the console. Output:

Olympic Rings

This could be golfed a little more.

Pseudonym

Posted 11 years ago

Reputation: 651

19If this is ASCII art, it surely is the first I've seen using rotated asterisks. – TheBlastOne – 11 years ago

2I'm sure it won't be the last. – Pseudonym – 11 years ago

25

Windows Command Script - 112 percent bytes

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

100% Olympic rings

And of course, the obligatory cheat'ish version - 4 bytes

%~n0

saved as:

@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

Robert Sørlie

Posted 11 years ago

Reputation: 1 036

10we need more answers in BAT and CMD :) – Einacio – 11 years ago

21

Another attempt in Perl, 130 120

Thanks to manatwork for helping with this

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

Output:

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

r3mainer

Posted 11 years ago

Reputation: 19 135

3You can spare: 4 character by using for instead of foreach; 2 characters by removing () round sprintf()'s arguments; 2 characters by removing hex's parameter; 1 character by using y/// instead of tr///; 1 character by removing the final ;. – manatwork – 11 years ago

@manatwork Thanks! I've never even heard of y/// before. Will go and look it up now. – r3mainer – 11 years ago

20

Python: 157 140 138 133 122 107 characters

107

(thanks to manatwork)

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

sample output:

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

(just started this one, I will try to improve it)

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

with better output: 120 characters

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

sample output:

   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         

evuez

Posted 11 years ago

Reputation: 383

1What about base 36? This has 140 characters: print'\n'.join(['{0:b}'.format(int(o,36)).rjust(39,'0')for o in"kpvbkq0 1re099tu 3ifszg1t 3iwiuayp 1re099tu kpvbkq0 httbls 5trxmo".split()]). Regarding the “better output” version, there you can spare rjust()'s second parameter. (And insert a “t” in this post's heading.) – manatwork – 11 years ago

I was looking for a better solution, yours look great! – evuez – 11 years ago

1Nice improvement with bin(). But why are you using str() around it? bin()'s return value is already str. – manatwork – 11 years ago

3Shouldn't the 5th line be 010000010100000101000101000001010000010? The bottom two rings look a bit broken to me. – r3mainer – 11 years ago

@manatwork indeed, didn't think about that! – evuez – 11 years ago

@squeamishossifrage thanks, looks better now! – evuez – 11 years ago

In the 146 character solution you can avoid the [ and ] of the list-comprehension inside str.join. – Bakuriu – 11 years ago

it's in fact even shorter without the list-comprehension (just edited this solution) – evuez – 11 years ago

17

Perl, 177 163

An improved version thanks to 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;

Output:

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

r3mainer

Posted 11 years ago

Reputation: 19 135

2Hooray for Perl! A couple of extra savings: instead of using "\n" as $r, you can use $/ which defaults to "\n", literal newlines might even save you more in a couple of places. You can also save 1 more char using $s=$"x3 rather than $s=" ". Hope that helps! – Dom Hastings – 11 years ago

15

C, 257 bytes

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

This could have been golfed a bit more.

This has to be run on a Tektronix 4010 (or an emulator such as xterm -t). Output:

Ooutput

This is indeed ASCII art, since those are all '.' characters. And it does output to the console, as requested. Some Tektronix emulators support colour. Mine didn't, so I couldn't do that.

Pseudonym

Posted 11 years ago

Reputation: 651

12

Haskell, 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]

Output:

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

golfed out of:

{-# 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 = ' '

Vektorweg

Posted 11 years ago

Reputation: 301

2i still laugh about the map.map because it sounds funny. :D – Vektorweg – 11 years ago

It seems kind of bloated ... – SamB – 11 years ago

the rings or the code? – Vektorweg – 11 years ago

I mean the rings :-) – SamB – 11 years ago

12

Java, 181 179 161 156 bytes

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

(Won't compile on jdk 1.7, requires 1.6 or lower)

The output:

11100011111110001111111000111
10111110111011111011101111101
01111111000111111100011111110
10111100111001110011100111101
11100011111110001111111000111
11111101111101110111110111111
11111111000111111100011111111

Definitely not a winner, but come on, it's java.

Yurii Shylov

Posted 11 years ago

Reputation: 311

2Spare 2 characters by not capturing in replaceAll()'s regular expression and putting back the entire matched part: replaceAll(".{29}","$0\n"). (There may be an extra line break at the end of your file, as I count only 181 characters in the posted code.) – manatwork – 11 years ago

1One more thing: remove the import and put the package name directly in the constructor call. That reduces the size to 161 characters. – manatwork – 11 years ago

Spared another 5 bytes by changing class M{static{... to enum M{M;{.... Next big step is getting rid of BigInteger, is that possible? I'm trying to do some magic with String.format but have no results yet. – Yurii Shylov – 11 years ago

11

Ruby, 9

p"\044"*5

#satire

The rules allow for art that does not look exactly like the example, but it must "represent the Olympic rings well enough that it's recognizable".

You may recognize this representation of the Olympic Games logo.

Darren Stone

Posted 11 years ago

Reputation: 5 072

Funny :) As a Chicagoan, I can tell you that's exactly what the mayor saw when he was courting the games ! – Dean Radcliffe – 11 years ago

As a Vancouverite (2010 Games), I can also relate. :-) – Darren Stone – 11 years ago

8I feel like I'm missing out on an inside joke here :-P – Doorknob – 11 years ago

@DoorknobofSnow Try this much more verbose Javascript version in your console: o=['\044']; o2=o.concat(o); "\t" + o2.concat(o).join(" ") + "\n\t " + o2.join(" "); – AmeliaBR – 11 years ago

@AmeliaBR That does basically the same thing... how does that help explain anything? – Doorknob – 11 years ago

2@DoorknobofSnow Sorry, I though you were getting confused about character codes. If you don't get the connection between Olympics and dollar signs, I can't help you there. – AmeliaBR – 11 years ago

8output is:

$ – Roger – 11 years ago

Just tried in on http://repl.it/languages/Ruby ... got the output: "

$" => nil

– Xantix – 11 years ago

11

Javascript - 170 185 189 Chars

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

Output:

   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         

2nd Javascript - 25 Chars

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

Output:

O O O 
 O O 

The second is lazy

Eduard Florinescu

Posted 11 years ago

Reputation: 1 863

1You can spare; 2 characters by using “4” as separator instead of “.” and using digit 4 (without quotes) as split()'s parameter; 2 characters by removing the last 2 ;s. – manatwork – 11 years ago

A (currently) Firefox-only version of the above can be reduced even more, to 172 characters: 'kpvbkq041re099tu43ifszg1t43iwiuayp41sdk52824kpvbkq04httbls45trxmo'.split(4).map(x=>{a=parseInt(x,36).toString(2);console.log(' '.repeat(39-a.length)+a.replace(/0/g,' '))}). – manatwork – 11 years ago

Thanks, added your suggestion, I will leave it browser independent for now. – Eduard Florinescu – 11 years ago

◯ is not ascii... – njzk2 – 11 years ago

@njzk2 Yup, solved it סּ_סּ – Eduard Florinescu – 11 years ago

http://codegolf.stackexchange.com/a/19134/2972 :-D – Blazemonger – 11 years ago

@Blazemonger Beats me :) – Eduard Florinescu – 11 years ago

11

Binary! (265 CHARS)

0001111100000000111110000000011111000
0100000001000010000000100001000000010
1000000001111100000000011111000000001
0100000011000011000001100001100000010
0001111100000000111110000000011111000
0000000010000001000001000000100000000
0000000001111100000000011111000000000

It is too large to win, but at least it looks cool!

Dozer789

Posted 11 years ago

Reputation: 281

Olympic logo in the Matrix. – user13107 – 11 years ago

@user13107 What? – Dozer789 – 11 years ago

10

PHP - 99 (-20?)

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

That is definitely recognizable. I say that my "colors" count; it's a close representation.

If you don't like that, then here is

GolfScript - 101 (-20?)

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

Justin

Posted 11 years ago

Reputation: 19 757

16Where's the code? – Undo – 11 years ago

14@Undo That is the code ;-) – Doorknob – 11 years ago

In truth, I don't know PHP. That is the only PHP program/style I know how to write. (Sure I've gone through a tutorial, but I forgot it). – Justin – 11 years ago

2Wouldn't the PHP one come out as bbbb #### rrrr b b# #r r b ybyy g#gg r bbyb ##g# rrrr y yg g yyyy gggg on the screen? – Mr Lister – 11 years ago

@MrLister Nope: http://ideone.com/q2P0lX

– Justin – 11 years ago

@MrLister Okay, try adding a carriage return at the ends of the lines. – Justin – 11 years ago

4You need to add header("Content-Type: text/plain"), the default for web servers is text/html – Kroltan – 11 years ago

-1 for using the code as the string literal – Tyzoid – 11 years ago

10

Bash + ImageMagick: 163 characters

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 ' .
'

Sample output:

.

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

manatwork

Posted 11 years ago

Reputation: 17 865

10

Perl 6: 112 77 56 characters, 75 bytes

say flip .ord.base(2).trans("01"=>" @")for"䔐㣠".comb
  • Unicde strings! (above string is "\x1C71C\x228A2\x438E1\x26DB2\x1C71C\x4510\x38E0")
  • .comb gives a List of the separate characters in a String (without argument anyway)
  • .ord gives character code number from character
  • .base(2) returns a string with base-2 encoding of that Int
  • .trans replaces the digits with space and @ for better visibility
  • flip reverses the characters of a string so that missing leading 0's don't mess up the drawing.
  @@@   @@@   @@@
 @   @ @   @ @   @
@    @@@   @@@    @
 @  @@ @@ @@ @@  @
  @@@   @@@   @@@
    @   @ @   @
     @@@   @@@

edit2: newer solution using qwote words and base-36 encoded

say flip :36($_).base(2).trans("01"=>" @")for<2HWC 315U 5XI9 3ESY 2HWC DN4 B8G>
  • <ABC DEF GHI> is a quote-words syntax in perl6, so you get a list of Strings
  • :36($_) creates an Int from a base-36 encoded string in $_ (for loop default variable)

edit: old solution has nicer (copied) drawing but is longer:

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

Ayiko

Posted 11 years ago

Reputation: 519

10

Mathematica 185 175

10 bytes saved by mathe.

The rings below are ASCII 'O's.

The letter "O", slightly translucent, in Century Gothic, printed 5 times at font size=145 printer points.

This is not terminal art. However it fully satisfies Wikipedia's definition of Ascii art: 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"}]

olympic rings

DavidC

Posted 11 years ago

Reputation: 24 524

FontSize -> can be removed. – matrix89 – 7 years ago

@mathe, True. I used the font size merely to make the output a reasonable size. – DavidC – 7 years ago

@DavidC I mean you could replace FontSize -> 145 by 145. – matrix89 – 7 years ago

@mathe. Yes! Thanks. – DavidC – 7 years ago

2

As this is not console output, you are better of at the free-style olympics contest: http://codegolf.stackexchange.com/q/19050/15168

– CousinCocaine – 11 years ago

8

JavaScript: 153 chars

I wanted to see if I could do it any faster using algebra to actually graph the circles:

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 is an array of five (x,y) pairs, the centers of the circles, flattened to save ten characters.)

output:

1110000000111111111000000011111111100000001111
1000111110001111100011111000111110001111100011
0011111111100111001111111110011100111111111001
0011111111100000001111111110000000111111111001
0011111110000111000011111000011100001111111001
1000111100001111100001110000111110000111100011
1110000000111111111000000011111111100000001111
1111111100111111111001110011111111100111111111
1111111110001111100011111000111110001111111111
1111111111100000001111111110000000111111111111

159 chars is a little more readable:

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

output:

   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            

In 167 chars we have "colors":

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

output:

   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            

And with 189 chars, I can make the radius r adjustable as well:

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/

Blazemonger

Posted 11 years ago

Reputation: 193

7

APL, 8 chars/bytes*

Here's an answer pushing for lowest char count (this is code golf after all)

2 5⍴'○ '

Output:

○ ○ ○
 ○ ○ 

The symbol is ○, APL circle operator. You can put an 'O' instead, in case you want strictly ASCII output. I just thought it fit to use an APL symbol.


Just for kicks, here's a color version (37 chars - 20 = 17 score)

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

Output: color rings terminal output ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL can be written in its own (legacy) single-byte charset that maps APL symbols to the upper 128 byte values. Therefore, for the purpose of scoring, a program of N chars that only uses ASCII characters and APL symbols can be considered to be N bytes long.

Tobia

Posted 11 years ago

Reputation: 5 455

7

CSS, 1176 922 855 771 bytes, -20 colour bonus = 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 only, no markup needed. See markupless fiddle here: http://jsfiddle.net/XcBMV/12/

Rings

In colour, and with the correct overlap.

Mr Lister

Posted 11 years ago

Reputation: 3 668

6

Perl - 12 characters

say"OOO\nOO"

OK, so it's not an especially artistic rendering. ;-)

Slightly cuter:

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

tobyink

Posted 11 years ago

Reputation: 1 233

6

GAS Assembly 16-bit BIOS OL loader – 617 - 20 = 597

Going crazy on length here, so mere for the fun of it.


It does not load much, but it loads The Olympic Games logo as ASCII with colors ;)

Code:

.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) Build and extract MBR image

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

Running in emulator

(Have not tested it on my home computer yet ...)

qemu-system-i386 olymp.img

Result

enter image description here

Runium

Posted 11 years ago

Reputation: 1 878

4You sure take the idea of not using external resources to an extreme, don't you? +1 – Adam Maras – 11 years ago

@AdamMaras: Yes, and there's that ;), had to try. Next is to incorporate a real load of OS. O`Loader II. – Runium – 11 years ago

How does it score if you measure the binary, assuming that the disk already had a boot sector so you can skip the 55h AAh at the end (along with any associated padding)? – SamB – 11 years ago

@SamB: That would be 275 bytes, 255 pt where the code part is about 91 bytes and the variable + plot data 184 bytes. – Runium – 11 years ago

5

TI-Basic (16 bytes)

Note: TI-Basic is tokenized. If I remember correctly, ClrHome and Disp are one-byte tokens.

ClrHome
Disp "O O O"," O O

bb94

Posted 11 years ago

Reputation: 1 831

4

Python (318-20)

def f(s,i,j,c): 
    for (k,l) in zip([i,i,i+1,i+1,i+2,i+2,i+3,i+3,i+4,i+4,i+5,i+5],[j+2,i+3,j+1,j+4,j,j+5,j,j+5,j+1,j+4,j+2,j+3]):s[k][l]=c+'+'+'\033[0m'
a=[]; 
for i in range(9):a+=[14*[' ']]
for i in [0,4,8]:f(a,0,i,'\033[9%im'%((4*i+4)%5))
for i in [2,6]:f(a,3,i, '\033[9%im'%((i+1)%5))
for l in a:print''.join(l)

a is a matrix of strings, the function f modifies it by drawing a circle at location i,j with color c using ansi color codes. Finally a is printed.

flonk

Posted 11 years ago

Reputation: 242

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

Made in turbo c++ 3.0 compiler. Tried t make the code as short as possible

Archon

Posted 11 years ago

Reputation: 57

7

>

  • Please use Markdown to mark code block and keep the posted code readable. 2) As this is a [tag:code-golf] challenge, please try to reduce the size of your code to the strictly necessary. 3) Please add a heading line to your answer (emphasized with some markup up to your preference (usually header 1 or bold)), specifying the used language, the length of the code and the earned score.
  • – manatwork – 11 years ago

    4

    Python - 163 characters (thanks to manatwork!)

    print("""  000     000     000
     0   0   0   0   0   0
    0     000     000     0
     0   0   0   0   0   0
      000     000     000
         0   0   0   0
          000     000""")
    

    Output:

      000     000     000  
     0   0   0   0   0   0 
    0     000     000     0
     0   0   0   0   0   0 
      000     000     000  
         0   0   0   0     
          000     000
    

    Very simple...

    tasteslikejava

    Posted 11 years ago

    Reputation: 77

    >

  • Count it manually. 2) Use a text editor which displays text size or absolute character position. (Midnight Commander's built-in editor displays absolute positions too: move the cursor at the end of text and the absolute position will be equal with the size.) 3) Save it in a file and look at its size. Or if is already posted, Code Golf UserScript Enhancement Pack tells it.
  • – manatwork – 11 years ago

    I just used len() – tasteslikejava – 11 years ago

    len() said it was 170 characters... – tasteslikejava – 11 years ago

    MCEdit says 176. No idea what I miscalculated earlier. – manatwork – 11 years ago

    Minecraft Editor...? – tasteslikejava – 11 years ago

    Midnight Commander's editor. – manatwork – 11 years ago

    that makes much more sense... – tasteslikejava – 11 years ago

    1

    Regarding your code, you can spare: 2 characters by changing for "…" to """…""" and using literal newlines instead of \n; 11 characters by removing trailing spaces from each line's end. http://pastebin.com/9wQmB2N1 (See RAW Paste Data – their syntax highlight seems to alter the code.)

    – manatwork – 11 years ago

    Thinking again, that code is composed mostly by repeating two substrings. So you can use those two “Lego® bricks” to build up the logo: http://pastebin.com/9VfqULji

    – manatwork – 11 years ago

    4

    Coffeescript 123

    Input:

    for t in[y=124830,137313,146673,y,17160,15600]
     n=t.toString 2;k=31-n.length;n=0+n while k--;console.log n.replace /0/g,' '
    

    Output:

       1111  1111  1111
      1    11    11    1
      1   1111  1111   1
       1111  1111  1111
         1    11    1
          1111  1111
    

    Screenshot:

    Coffeescript Ascii Olympic Rings

    Javascript 136

    Input:

    r=[y=124830,137313,146673,y,17160,15600]
    for(i in r){
    n=r[i].toString(2)
    k=31-n.length
    while(k--)n=0+n
    console.log(n.replace(/0/g,' '))}
    

    Ignacio Lago

    Posted 11 years ago

    Reputation: 141

    3

    R - 70

    Using CRAN-R statistics. Unfortunately the output goes to X and not to the console. I resubmitted this answer to the Olympic Games Logo - Free Style Edition

    Anyhow, here is the code:

    l=c(1,9);plot(3:7,c(6,4,6,4,6),col=c(4,7,1,3,2),cex=10,ylim=l,xlim=l)
    

    R plot

    CousinCocaine

    Posted 11 years ago

    Reputation: 1 572

    1"The program must write the art to the console." – klingt.net – 11 years ago

    2The challenge calls for ASCII art... – Igby Largeman – 11 years ago

    Indeed, this program does not write art to the console and is therefor obsolete for this contest. – CousinCocaine – 11 years ago

    3

    C - 230 bytes

    Not a winner, but draws in a non-intuitive way:

    #include <stdio.h>
    #include <math.h>
    #define D(p,q) ((int)hypot(x-(p),y-(q))==8)
    int main(){int y,x;for(y=0;y<29;y++){for(x=0;x<61;x++)putchar((D(10,10)||D(30,10)||D(50,10)||D(20,18)||D(40,18))?'*':' ');putchar('\n');}return 0;}
    

    To compile, gcc -o ologo ologo.c -lm.

    Output:

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

    user15259

    Posted 11 years ago

    Reputation:

    2

    using PASCAL / DELPHI

    program Project_olympic_rings;
    {$APPTYPE CONSOLE}
    {$R *.res}
    uses
      System.SysUtils;
    begin
        writeln(' O O O ' + #10 + '  O O ');
        readln;
    end.
    

    screen dump

    bela

    Posted 11 years ago

    Reputation: 81

    1

    You can shorten that by removing lines 3, 4, 5, and 8 since they contribute nothing. You can also remove the string concatenation since string and char literals can be written adjacently. There's also a shorter way to write line breaks. In total: program O;{$APPTYPE CONSOLE}begin writeln('O O O'^M' O O')end. 62 characters

    – Rob Kennedy – 11 years ago

    1Or in plain Pascal, 34 characters: begin write('O O O'#10' O O') end. – manatwork – 11 years ago

    2

    PowerShell, 555 bytes

    Certainly not the shortest, but it's PowerShell with real circle functions and some color!

    oic sample image

    cls
    c 8 8 1
    c 16 8 2
    c 24 8 3
    c 12 15 4
    c 20 15 5
    w 30 30 . 6
    function global:c ([int]$x,[int]$y,[int]$n) {
    foreach ($i in 1..360) 
    {
    $t = [math]::pi * ($i / 180)
    w ($x + 5 * [math]::cos($t)) ($y + 5 * [math]::sin($t)) * $n
    }
    }
    function global:w ([int]$x,[int]$y,[string]$c,[int]$n) { 
    $p=$host.ui.rawui.cursorposition 
    $p.x=$x 
    $p.y=$y 
    $host.ui.rawui.cursorposition=$p 
    $h="green"
    switch ($n){ 1 {$h = "blue" } 2 {$h = "black" } 3 {$h = "red" } 4 {$h = "yellow" } 5 {$h = "green" }}
    write-host $c -f $h -nonewline
    } 
    

    chrixbittinx

    Posted 11 years ago

    Reputation: 65

    Nitpick: the rings aren't supposed to be linked to their neighbors to the left and right. – Blazemonger – 11 years ago

    Great point, really shows how much I'm into sports. Is it bad etiquette to edit my answer? – chrixbittinx – 11 years ago

    Don't see why it would be. – Blazemonger – 11 years ago

    2

    LAZARUS / FREE PASCAL (with color support , unit CRT)

    program P;
    uses crt;
    procedure R(c : Byte);
    begin
      TextColor(c);
      write('O ');
    end;
    begin
      R(blue);
      R(white);
      R(red);
      writeln;
      write(' ');
      r(yellow);
      r(green);
    end. 
    

    screen dump LAZARUS Project

    bela

    Posted 11 years ago

    Reputation: 81

    As this is a [tag:code-golf] challenge better reduce those 179 characters. For example to 115: http://pastebin.com/kuQM4TiN And please mention your code's length and score too in your answers header line.

    – manatwork – 11 years ago

    2

    HTML+CSS (222 ch)

    First go at code golf so it's not golfed nearly enough but I hadn't spotted anyone using HTML+CSS yet so meh..

    <style>a{margin:-8px;font-size:4em}a:first-child{color:blue}a:nth-child(3){color:red}a:nth-child(4){color:#ff0}a:last-child{color:#060}a:nth-child(n+4){position:relative;top:-.8em;left:.2em}</style><a>O<a>O<a>O<br><a>O<a>O
    

    Someone can probably golf it more. (size for example was just to make it look better!)

    fiddle: http://jsfiddle.net/mikecmpbll/LtYCh/1/

    Mike Campbell

    Posted 11 years ago

    Reputation: 141

    2

    Jquery 503 chars

    good challenge!

    since I'm a web developer, I used the tools that I use each day... html/jquery/js

    check out my answer at jsfiddle.net

    http://jsfiddle.net/rYcVV/5/

    screenshot of rings attached... enter image description here

    code minified <div id="rings"/><div id="rings"/>var color=["#06f","#000","red","#fa0","#193"],lefty=[150,300,450,225,380],toppy=[50,50,50,100,100];for(var j=0;j<color.length;j++){for(var i=0;i<36;i++){$("#rings").append('<span class="x'+j+'" style="color:'+color[j]+";;display:inline-block;position:absolute;left:"+lefty[j]+"px;top:"+toppy[j]+'px;height:150px;transform-origin: bottom bottom;width:15px;">*</span>')}}for(var m=0;m<color.length;m++){for(var k=0;k<36;k++){$($("span.x"+m)[k]).css("transform","rotate("+(10*k)+"deg)")}};

    J nui

    Posted 11 years ago

    Reputation: 21

    1>

  • Your jsFiddle has wrong setup. For Framework you picked “No Library (pure JS)” so the jQuery code not works. 2) jsFiddle or similar link is welcome, but optional. You have to post your code here. 3) Please add a heading line to your post and specify the used language there. (Maybe the required jQuery version too – the output I managed to get from your code is always uglier than your screenshot.) 4) As this is a [tag:code-golf] challenge, reduce your code to the bare minimum and include the code size in your post's heading.
  • < – manatwork – 11 years ago

    corrected missing jquery library thanks. – J nui – 11 years ago

    Maybe you should mention that requires Chrome. The output is equally ugly in Explorer, Firefox and Opera. – manatwork – 11 years ago

    wow, you're a bit of a hater aren't you? I just looked at that link with internet explorer 9 and it looked the same as in chrome. http://jsfiddle.net/rYcVV/1/ , firefox does not look very good tho.

    – J nui – 11 years ago

    Sorry if you felt any hate in my comment, but I really believe this is ugly: http://i.stack.imgur.com/WoVO9.png Taken in Explorer 11.

    – manatwork – 11 years ago

    added hack for firefox http://jsfiddle.net/rYcVV/3/

    – J nui – 11 years ago

    Looks much better now. – manatwork – 11 years ago

    made another change, I think it will work in IE11, but I don't have that browser right now. http://jsfiddle.net/rYcVV/5/

    – J nui – 11 years ago

    Yes, this version works fine in Explorer 11, while still displays correctly in Chrome, Firefox and Opera. – manatwork – 11 years ago

    1

    PHP, 90 bytes

    This matches the sample output exactly.

    Code in text editor Console output

    The code is displayed in a screenshot as it contains control characters that I can't post on Stack Exchange. Here is a longer, equivalent version using character codes that I can post here:

    <?echo gzinflate("SP\0\1-0D\58Åx¹\x14P\$´Ðhœb¼\\˜æ)(\x10%†M+‘NFÕª…†q‰Aµb*\"d\x08\\#Y᪀%Üð\4Š‚\2v-8‚_X§\0");
    

    That is 109 bytes but the version in the screenshot using control characters is 90 bytes.

    Alex Barrett

    Posted 11 years ago

    Reputation: 161

    Instead of making a screenshot of your editor, paste in the code! – klingt.net – 11 years ago

    I took a screenshot because it contains control characters that wouldn't be visible here. – Alex Barrett – 11 years ago

    ... Isn't it cheating to write the program in binary? – SamB – 11 years ago

    @SamB - It is well within the rules currently listed. – Alex Barrett – 11 years ago

    1

    Mathematica, 132

    Further golfing of swish's fine method:

    x_~f~y_:=Boole[E<Norm@{#-x,#2-y}<4.3]&~Array~{13,30}
    
    Grid@Replace[Hue/@{E,{0,0,0},0,π,.3}.f@@@{5|5,5|15,5|25,9|10,9|20},0->"",c_+_.:>Style["*",c]},{2}]
    

    enter image description here

    Mr.Wizard

    Posted 11 years ago

    Reputation: 2 481

    1

    Bash / base64 / zcat, 125

    $ base64 -d<<<H4sIAKc54FIAA1NQUFDQAkMEwMrnUoCLEaS5UHUrKODlcxG0G4dqLahZWjj4Ckiuxq0KxgKpJT4sUH2M3V+oclhpJDW47AIAX9PRBqIBAAA=|zcat
        * * *           * * *           * * *
      *       *       *       *       *       *
    *           *   *           *   *           *
    *           * * *           * * *           *
    *         * *   * *       * *   * *         *
      *     * *       * *   * *       * *     *
        * * *           * * *           * * *
            *           *   *           *
              *       *       *       *
                * * *           * * *
    $
    

    Digital Trauma

    Posted 11 years ago

    Reputation: 64 644

    1

    TeX, 169

    \color{blue}\put(0,2){\circle{5}}\color{black}\put(6,2){\circle{5}}\color{red}\put(12,2){\circle{5}}\color{yellow}\put(2,0){\circle{5}}\color{green}\put(9,0){\circle{5}}
    

    enter image description here

    Converting the resulting image to ASCII characters:

    Java

    public class Converter {     
        public static String convertImage(BufferedImage img)  {
            BufferedImage image = img;
    
            char[] tones = new char[]{'*', '*', '*', '*', '*',  ' '};
            int tone = 0;
    
            StringBuilder stringBuilder = new StringBuilder();
    
            Color color; 
    
            for (double y = 0; y < image.getHeight(); y++) {
                for (double x = 0; x < image.getWidth(); x++) {
                    color = new Color(image.getRGB((int) x, (int) y));
    
                    tone = (color.getRed() + color.getGreen() + color.getBlue()) / 3;
                    tone = tone / (256 / tones.length - 1);
    
                    while (tone > tones.length - 1) tone--;
    
                    stringBuilder.append(tones[tone] + " ");
                }
                stringBuilder.append("\n");
            }
            return stringBuilder.toString();
        }
    
        public static void main(String args[ ]) { 
            BufferedImage image = null;
            Writer writer;
            try {
                image = ImageIO.read(new File("C:\\OlympicRings.gif"));
    
                writer = new BufferedWriter(new FileWriter(new File("C:\\ascii-conversion.txt")));
                writer.append((convertImage(image)));
                writer.close();
    
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }    
    } 
    

    it gives -

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

    user15287

    Posted 11 years ago

    Reputation:

    1

    Math

    |f(x)|=sqrt(1-x^2)
    f(x+2)
    f(x-2)
    f(x+1)-1
    f(x-1)-1
    

    For the output to be able to be graphed with a computer I had to add:

    g(x)=-f(x)
    g(x+2)
    g(x-2)
    g(x+1)-1
    g(x-1)-1
    

    And remove the |'s from the first line.

    But they don't really have to be there.

    Output

    Blue Sheep

    Posted 11 years ago

    Reputation: 221

    1

    C# [202]

    Basic foreach loop in C#

    class P{static void Main(){foreach(var i in new[]{0x3c7f1fc7,0x37ddf77d,0x2fe3f8fe,0x379ce73d,0x3c7f1fc7,0x3fbeefbf,0x3fe3f8ff})System.Console.WriteLine(System.Convert.ToString(i,2).Replace('1',' '));}}
    

    Result Below

        000       000       000
      0     0   0     0   0     0
     0       000       000       0
      0    00   00   00   00    0
        000       000       000
           0     0   0     0
             000       000
    

    Linq Version 215 Characters

    namespace System.Linq{class P{static void Main(){new[]{0x3c7f1fc7,0x37ddf77d,0x2fe3f8fe,0x379ce73d,0x3c7f1fc7,0x3fbeefbf,0x3fe3f8ff}.ToList().ForEach(i=>Console.WriteLine(Convert.ToString(i,2).Replace('1',' ')));}}}
    

    John ClearZ

    Posted 11 years ago

    Reputation: 131

    1

    PROCESSING B/W (78 characters)

    No output to the console but still fun to participate. Colours add a lot to the code so it is not worth the 20 points in this case.

    float i,s=9,k=1;for(i=1;i<6;i++){k=i;if(i>3){s=13;k=i*1-2.5;}text("O",k*8,s);}

    enter image description here

    Colour (150-20=130 characters)

    float r=0,g=0,b=255,i,s=9,k=1;for(i=1;i<6;i++){k=i;if(i>3){s=12;k=k-2.5;g=255;r=(5-i)*255;}if(i==3){r=255;}if(i==2){b=0;}fill(r,g,b);text("O",k*9,s);}

    enter image description here

    user41353

    Posted 11 years ago

    Reputation: 11

    1

    gnuplot 42 characters

    se te du
    uns bor
    uns tic
    p '-' w ell not
    1 4
    2 3
    3 4
    4 3
    5 4
    e
    

    Output:

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

    Shorter version (with axes) 27 characters

    se te du
    p '-' w ell
    1 4
    2 3
    3 4
    4 3
    5 4
    e
    

    Output:

      5.5 ++----------+----------+-----------+----------+-----------+---------++
          +           +          +           +          +           '-' ****** +
        5 ++                                                                  ++
          |     ************           ************           ************     |
          |  ***            ***     ***            ***     ***            ***  |
      4.5 +**                  ** **                  ** **                  **+
          **                    ***                    ***                    **
        4 *+                     *                      *                     +*
          *                ************           ************                 *
      3.5 **            ***     ***    ***     ***     ***    ***             **
          |**         **       ** **      ** **       ** **      **          **|
          |  ***     **     ***     ***    ***     ***     ***    **      ***  |
        3 ++    ************           ************           ************    ++
          |          *                      *                      *           |
      2.5 ++         **                    ***                    **          ++
          |           **                  ** **                  **            |
          |             ***            ***     ***            ***              |
        2 ++               ************           ************                ++
          +           +          +           +          +           +          +
      1.5 ++----------+----------+-----------+----------+-----------+---------++
          0           1          2           3          4           5          6
    

    andyras

    Posted 11 years ago

    Reputation: 111

    0

    HTML + CSS ( 209 characters )

    This isn't really much better than the other HTML / CSS attempt, but I wanted to try this for myself! removing font size will again shrink down a teeny bit.

    <style>e:after{content:'o';font-size:2em}e{position:absolute;color:#00f}e>e{left:9px;color:#000}e e e{color:red}e e e e{left:-4px;top:9px;color:#0F0}e e e e e{left:-9px;top:0;color:#ff0}</style><e><e><e><e><e>
    

    fiddle: http://jsfiddle.net/rV4eQ/

    it's not really kosher code, but the e seemed fun to use.

    Jacob Raccuia

    Posted 11 years ago

    Reputation: 101

    0

    PERL, 15 characters

    say"O O O
     O O"
    

    To be invoked with -E.

    O O O
     O O
    

    Tomas

    Posted 11 years ago

    Reputation: 2 333

    0

    TI-Basic (15 bytes)

    This really ought to be a comment on @bb94 's answer, but I don't have the reputation for that yet.

    ClrHome
    Disp "O O O
    " O O
    

    I saved a byte by omitting a closing quote and using the fact that programs print the final line without being explicitly told to. This also avoids the "Done" that would be printed otherwise.

    ballesta25

    Posted 11 years ago

    Reputation: 65