Gambar logo Olimpiade [tertutup]

107

Tantangan

Gambarkan logo Olimpiade ...

Logo Olimpiade

... sebagai seni karakter (mis. ASCII)!

Output Sampel

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

Seni Anda tidak harus persis seperti milik saya, tetapi harus mewakili cincin Olimpiade dengan cukup baik sehingga dapat dikenali.

Aturan

  • Program harus menulis karya seni ke konsol.
  • Kode terpendek (dalam byte, bahasa apa pun) menang.
  • Solusi yang mencetak cincin dalam warna masing-masing (atau representasi dekat) akan diberikan bonus minus dua puluh poin.

Pemenang akan dipilih pada 23 Februari rd di akhir Olimpiade Musim Dingin 2014.


Pemenang

Adam Maras
sumber
7
20 poin bonus. Um, mengapa saya ingin +20 untuk skor saya?
Justin
21
Hum, ini adalah merek dagang ...
moala
4
@moala Saya pikir ini termasuk dalam kebijakan penggunaan yang adil.
Nzall
11
Dalam warna, terbukti bahwa cincin-cincin tersebut saling terkait , tidak hanya saling tumpang tindih . Beberapa entri sejauh ini telah menjelaskan hal itu.
Rob Kennedy
6
Benar-benar IANAL: ok untuk menulis perangkat lunak yang menarik O ****** ic R ** gs, bukan ok untuk menjalankannya. :-)
Carl Witthoft

Jawaban:

23

APL (82) (-20 = 62)

Sunting: untuk suatu perubahan, program ini cukup sederhana sehingga TryAPL akan menyentuhnya, sehingga Anda dapat menjalankannya di sana (cukup tempel barisnya).

Tidak yakin apakah saya bisa mengklaim bit 'warna', saya mewakili mereka semua secara berbeda.

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]

Konsol APL tidak mendukung warna, jadi saya menggunakan karakter blok yang diarsir (menugaskan segala jenis seni ASCII lainnya semudah mengganti karakter di awal string.)

Itu harus terlihat seperti lingkaran yang tidak terputus (tergantung font Anda.)

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

Atau:

      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
sumber
165

Commodore 64 BASIC

Menulis langsung di layar dan memori warna.

Program

Keluaran:

Keluaran


Inilah cara Anda melakukan ini dengan sprite.

Danko Durbić
sumber
1
Itu luar biasa. +1. Bisakah kita mendapatkan jumlah byte?
Adam Maras
2
Ingatlah bahwa Anda juga dapat menyingkat perintah dan nomor baris pada C64 BASIC jika ingin bermain golf.
Gabriele D'Antona
15
Satu-satunya hal yang menggangguku tentang jawaban ini adalah: Bagaimana ini ascii art?
Justin
10
ini adalah seni PETSCII
Gabriele D'Antona
7
@ Quincunx: Karena PETSCII juga dikenal sebagai CBM ASCII, ini mungkin memenuhi syarat. Jika Anda ingin karakter yang berbeda digunakan untuk menggambar (agar terlihat lebih seperti seni ASCII klasik), mengganti 160 (ruang terbalik) dengan 42 (tanda bintang) pada baris 100 harus melakukan trik.
Heinzi
86

HTML Fiddle - 48 , 35 , 33 karakter (Terima kasih @Dom dan @cnst!)

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

Keluaran:

masukkan deskripsi gambar di sini

Briguy37
sumber
2
Anda dapat menyimpan lebih banyak karakter menggunakan: OOO<div style="margin:-10px 5px">OOsebagai gantinya ... (Saya pikir itu perlu menjadi blok, karenanya <div/>)
Dom Hastings
Karena ini bukan output konsol, Anda lebih baik mengikuti kontes olimpiade gaya bebas: codegolf.stackexchange.com/q/19050/15168
CousinCocaine
@HomHastings: Panggilan bagus! Jawaban diperbarui :)
Briguy37
3
Lalu kenapa repot-repot dengan div, bisa pakai psaja!
cnst
2
@PygameNerd: Tergantung pada definisi Anda tentang "seni ASCII": Ya jika definisi Anda adalah "karakter ASCII diatur untuk membentuk gambar"; tidak jika definisi Anda adalah "karakter ASCII dalam editor teks tetap untuk membentuk gambar". Adapun apakah itu output ke konsol seperti kata CousinCocaine, jika definisi adalah "Unit kontrol atau pemantauan komputer, yang berisi keyboard atau tombol, switch, dll." , maka output browser web adalah bagian dari monitor dan dengan demikian konsol (meskipun ini mungkin bukan yang dimaksudkan OP).
Briguy37
76

BASH dalam warna - 271 - 20 = 251 - Dengan cincin terjerat; 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}"

Hasil:

masukkan deskripsi gambar di sini


Dan untuk bersenang-senang satu: 61 - 20 = 41.

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

masukkan deskripsi gambar di sini


Versi LZ77:

echo H4sIALOY5VIAA12QwRXAIAhD767ghQV8CnYbXYENOnw1YqX1xk8wQGz1UiJKKRFebLX8ARsIs7g0g/djN7CdRAYC7Pf6h+5RVR3foMdTMcqHWlS3jKr5RKO/g25doJdXZ+ii75CseU2zNkGzH6HYCPKhPGmA2Wh3+7mEDHMgb/2cUPYJH2gPhtZxAQAA|base64 -d|zcat
Runium
sumber
13
Sejauh ini tidak banyak jawaban yang mendapatkan tumpang tindih cincin yang berganti-ganti, jadi ini layak mendapat upvote bahkan jika nilainya sedikit lebih tinggi.
Peter Taylor
1
bash: !/\\e[3}": event not found:(
Alter Lagos
Saya pikir versi bash Anda valid - di mana pun di OP tidak menentukan ukuran grafik - tetapi Anda perlu memperbaiki cincin bentuk "V". Mungkin tilde (~) untuk bagian bawah cincin?
AmeliaBR
@AlterLagos: Anda mungkin menemukan karya pembaruan?
Runium
@ AmeliaBR: Ya, yang itu lebih untuk bersenang-senang, dan tidak serius. Mencoba dengan berbagai macam. Mungkin ini lebih sesuai dengan keinginan? x='54mO53m_50m052m_51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"- (Saya agak jahat dengan 5 di sini.) Atau bahkan ini mungkin lebih baik, dengan tumpang tindih dalam pikiran: x='54mO53mA50m052mA51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"- meskipun mungkin terlihat lebih berantakan daripada yang lain.
Runium
76

Sinclair BASIC pada ZX Spectrum 48K (261 byte)

Daftar DASAR:

Daftar DASAR

Hasil akhir:

Hasil

Program berjalan dan pengukuran kode:

Program berjalan

Daftar BASIC dalam format teks:

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

File TAP dengan program ini, cocok untuk emulator atau mesin nyata menggunakan DivIDE atau DivMMC: http://www.zxprojects.com/images/stories/draw_the_olympics_flag.tap

mcleod_ideafix
sumber
17
Saya suka bagian asciification :)
Thorbjørn Ravn Andersen
1
Ini indah!
pcnThird
Penggunaan grafik sprite Z80 sangat sederhana !! PS kurangi 20 poin untuk warna.
Tomas
Rasanya sangat kotor untuk menghasilkan seni reguler dan kemudian membuat seni ASCII darinya. :)
undergroundmonorail
Bisakah Anda memasukkan kode sumber dalam bentuk yang dapat disalin?
Paŭlo Ebermann
44

Jadi saya tidak benar-benar membaca dengan benar, ini ASCII-art, jadi saya kira ini tidak valid. Ups!


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

Di Chrome:

Apa ini!  Bendera Olimpiade untuk semut?

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
sumber
2
Anda bisa mendapatkan warna sedikit lebih dekat dengan tidak ada hukuman: biru: #06f, kuning: #fa0, hijau:#193
mual ossifrage
2
Karena ini bukan keluaran konsol, Anda lebih baik mengikuti kontes olimpiade gaya bebas: codegolf.stackexchange.com/q/19050/15168
CousinCocaine
39

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

(Perhatikan bahwa itu ^[adalah karakter tunggal.)

Contoh dijalankan:

logo permainan Olimpiade

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

Inilah ouput

masukkan deskripsi gambar di sini

Versi lain, berdasarkan rasterisasi grafik vektor

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

masukkan deskripsi gambar di sini

desir
sumber
2
Anda mendapatkan poin untuk output tercantik.
Michael Stern
Kerja bagus. Saya memposting versi saya sendiri dari kode Anda.
Mr.Wizard
34

PostScript, 203 (-20 = 183)

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

Saya berpendapat bahwa ini dianggap sebagai "seni ASCII", meskipun tidak menulis ke konsol. Keluaran:

Cincin Olimpiade

Ini bisa bermain golf lebih sedikit.

Nama samaran
sumber
19
Jika ini adalah seni ASCII, itu pasti yang pertama saya lihat menggunakan tanda bintang yang diputar.
TheBlastOne
2
Saya yakin itu bukan yang terakhir.
Nama samaran
25

Windows Command Script - 112 persen byte

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

100% cincin Olimpiade

Dan tentu saja, versi cheat'ish wajib - 4 byte

%~n0

disimpan sebagai:

@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
sumber
10
kita membutuhkan lebih banyak jawaban dalam BAT dan CMD :)
Einacio
21

Upaya lain di Perl, 130 120

Terima kasih kepada manatwork untuk membantu dengan ini

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

Keluaran:

   # # #         # # #         # # #   
 #       #     #       #     #       # 
#         # # #         # # #         #
#       # #   # #     # #   # #       #
 #     # #     # #   # #     # #     # 
   # # #         # # #         # # #   
        #       #     #       #        
          # # #         # # #          
osifrque melengking
sumber
3
Anda dapat menyimpan: 4 karakter dengan menggunakan foralih-alih foreach; 2 karakter dengan menghapus (… argumen )bulat sprintf(); 2 karakter dengan menghapus hexparameter; 1 karakter dengan menggunakan y///alih-alih tr///; 1 karakter dengan menghapus final ;.
manatwork
@manatwork Terima kasih! Aku bahkan belum pernah dengar y///sebelumnya. Akan pergi dan mencarinya sekarang.
ossifrage mual
20

Python: 157 140 138 133 122 107 karakter

107

(terima kasih kepada manatwork )

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

keluaran sampel:

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

(baru mulai yang ini, saya akan mencoba memperbaikinya)

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

dengan output yang lebih baik: 120 karakter

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

keluaran sampel:

   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
sumber
1
Bagaimana dengan base 36? Ini memiliki 140 karakter: print'\n'.join(['{0:b}'.format(int(o,36)).rjust(39,'0')for o in"kpvbkq0 1re099tu 3ifszg1t 3iwiuayp 1re099tu kpvbkq0 httbls 5trxmo".split()]). Mengenai versi "output yang lebih baik", di sana Anda dapat menyimpan rjust()parameter kedua. (Dan masukkan "t" dalam judul posting ini.)
manatwork
Saya mencari solusi yang lebih baik, milik Anda terlihat hebat!
evuez
1
Perbaikan yang bagus dengan bin(). Tetapi mengapa Anda menggunakannya str()? bin()Nilai pengembalian sudah str.
manatwork
3
Bukankah seharusnya baris ke-5 010000010100000101000101000001010000010? Dua cincin bawah terlihat agak rusak bagiku.
ossifrage pelit
@Manatwork memang, tidak memikirkan hal itu!
evuez
17

Perl, 177 163

Versi yang ditingkatkan berkat 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;

Keluaran:

  .-~-.   .-~-.   .-~-. 
 /     \ /     \ /     \
|       |       |       |       
 \    ./~\.   ./~\.    /
  '-./'   '\-/'   '\.-'
    |       |       |   
     \     / \     /
      '-.-'   '-.-'
osifrque melengking
sumber
2
Hore untuk Perl! Beberapa penghematan ekstra: alih-alih menggunakan "\n"sebagai $r, Anda dapat menggunakan $/default ke mana "\n", baris baru literal bahkan mungkin lebih menghemat Anda di beberapa tempat. Anda juga dapat menyimpan 1 char lebih banyak menggunakan $s=$"x3daripada $s=" ". Semoga itu bisa membantu!
Dom Hastings
15

C, 257 byte

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

Ini bisa golf lebih sedikit.

Ini harus dijalankan pada Tektronix 4010 (atau emulator seperti xterm -t). Keluaran:

Ooutput

Ini memang seni ASCII, karena semuanya '.' karakter. Dan itu output ke konsol, seperti yang diminta. Beberapa emulator Tektronix mendukung warna. Milik saya tidak, jadi saya tidak bisa melakukan itu.

Nama samaran
sumber
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);}}

(Tidak akan dikompilasi pada jdk 1.7, membutuhkan 1,6 atau lebih rendah)

Hasil:

11100011111110001111111000111
10111110111011111011101111101
01111111000111111100011111110
10111100111001110011100111101
11100011111110001111111000111
11111101111101110111110111111
11111111000111111100011111111

Jelas bukan pemenang, tapi ayolah, ini java .

Yurii Shylov
sumber
2
Spare 2 karakter dengan tidak menangkap di replaceAll()ekspresi reguler 's dan menempatkan kembali seluruh bagian cocok: replaceAll(".{29}","$0\n"). (Mungkin ada jeda baris tambahan di akhir file Anda, karena saya hanya menghitung 181 karakter dalam kode yang diposting.)
manatwork
1
Satu hal lagi: hapus importdan letakkan nama paket langsung di panggilan konstruktor. Itu mengurangi ukuran hingga 161 karakter.
manatwork
Spared 5 byte lagi dengan mengubah class M{static{...ke enum M{M;{.... Langkah besar selanjutnya adalah menyingkirkan BigInteger, apakah itu mungkin? Saya mencoba melakukan sihir dengan String.format tetapi belum ada hasilnya.
Yurii Shylov
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]

Keluaran:

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

bermain golf dari:

{-# 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
sumber
2
saya masih tertawa tentang map.mapitu karena kedengarannya lucu. : D
Vektorweg
Sepertinya agak kembung ...
SamB
cincin atau kodenya?
Vektorweg
Maksud saya cincin :-)
SamB
11

Ruby, 9

p"\044"*5

#sindiran

Aturan memungkinkan untuk seni yang tidak persis seperti contohnya, tetapi harus "mewakili cincin Olimpiade dengan cukup baik sehingga dapat dikenali" .

Anda dapat mengenali representasi logo Olimpiade ini.

Darren Stone
sumber
Lucu :) Sebagai orang Chicago, saya dapat memberi tahu Anda bahwa itulah yang dilihat walikota saat ia mendekati permainan!
Dean Radcliffe
Sebagai seorang Vancouverite (Game 2010), saya juga bisa berhubungan. :-)
Darren Stone
8
Aku merasa seperti kehilangan lelucon di dalam sini :-P
Gagang Pintu
2
@DoorknobofSnow Sekarang, saya pikir Anda bingung tentang kode karakter. Jika Anda tidak mendapatkan koneksi antara Olimpiade dan tanda dolar, saya tidak dapat membantu Anda di sana.
AmeliaBR
8
output adalah:
$
Roger
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,' '))})

Keluaran:

   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 Karakter

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

Keluaran:

O O O 
 O O 

Yang kedua malas

Eduard Florinescu
sumber
1
Anda dapat mengampuni; 2 karakter dengan menggunakan "4" sebagai pemisah bukannya "." Dan menggunakan digit 4 (tanpa tanda kutip) sebagai split()parameter; 2 karakter dengan menghapus 2 ;detik terakhir .
manatwork
A (saat ini) Firefox-satunya versi di atas dapat dikurangi bahkan lebih, untuk 172 karakter: 'kpvbkq041re099tu43ifszg1t43iwiuayp41sdk52824kpvbkq04httbls45trxmo'.split(4).map(x=>{a=parseInt(x,36).toString(2);console.log(' '.repeat(39-a.length)+a.replace(/0/g,' '))}).
manatwork
Terima kasih, tambahkan saran Anda, saya akan membiarkannya tetap independen untuk saat ini.
Eduard Florinescu
◯ bukan ascii ...
njzk2
@ njzk2 Yup, selesaikan סּ_סּ
Eduard Florinescu
11

Biner! (265 CHARS)

0001111100000000111110000000011111000
0100000001000010000000100001000000010
1000000001111100000000011111000000001
0100000011000011000001100001100000010
0001111100000000111110000000011111000
0000000010000001000001000000100000000
0000000001111100000000011111000000000

Terlalu besar untuk menang, tetapi setidaknya itu terlihat keren!

Dozer789
sumber
Logo olimpiade dalam Matriks.
user13107
@ user13107 Apa?
Dozer789
10

PHP - 99 (-20?)

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

Itu pasti bisa dikenali. Saya mengatakan bahwa "warna" saya diperhitungkan; itu representasi yang dekat.

Jika Anda tidak suka itu, maka ini dia

GolfScript - 101 (-20?)

' bbbb  ####  rrrr
b    b#    #r    r
b   ybyy  g#gg   r
 bbyb  ##g#  rrrr
   y    yg    g
    yyyy  gggg'
Justin
sumber
16
Dimana kodenya?
Undo
14
@Undo Itu adalah kode ;-)
Doorknob
Sebenarnya, saya tidak tahu PHP. Itulah satu-satunya program / gaya PHP yang saya tahu cara menulis. (Tentu saya sudah melalui tutorial, tapi saya lupa itu).
Justin
2
Bukankah PHP yang keluar sebagai bbbb #### rrrr bb # #rrb ybyy g # gg r bbyb ## g # rrrr y siapa g yyyy gggg di layar?
Tn. Lister
4
Anda perlu menambahkan header("Content-Type: text/plain"), default untuk server web adalah teks / html
Kroltan
10

Bash + ImageMagick: 163 karakter

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

Output sampel:

.

     ...........             ...........             ...........
   ....       ....         ....       ....         ....       ....
 ...             ...     ...             ...     ...             ...
..                 ..   ..                 ..   ..                 ..
..                 ..   ..                 ..   ..                 ..
.                ...........             ...........                .
..             ......   ......         ......   ......             ..
..           ...   ..   ..   ...     ...   ..   ..   ...           ..
 ...        ..   ...     ...   ..   ..   ...     ...   ..        ...
   ....     ......         ......   ......         ......     ....
     ...........             ...........             ...........
            ..                 ..   ..                 ..
            ..                 ..   ..                 ..
             ...             ...     ...             ...
               ....       ....         ....       ....
                 ...........             ...........
manatwork
sumber
10

Perl 6: 112 77 56 karakter, 75 byte

say flip .ord.base(2).trans("01"=>" @")for"𜜜𢢢񃣡𦶲𜜜䔐㣠".comb
  • String unik! (string di atas adalah "\ x1C71C \ x228A2 \ x438E1 \ x26DB2 \ x1C71C \ x4510 \ x38E0")
  • .comb memberikan daftar karakter yang terpisah dalam sebuah String (tanpa argumen)
  • .ord memberikan nomor kode karakter dari karakter
  • .base(2) mengembalikan sebuah string dengan basis-2 encoding dari Int itu
  • .trans mengganti digit dengan spasi dan @ untuk visibilitas yang lebih baik
  • flip membalikkan karakter string sehingga kehilangan 0 di depan tidak mengacaukan gambar.
  @@@ @@@ @@@
 @ @ @ @ @ @
@ @@@ @@@ @
 @ @@ @@ @@ @@ @
  @@@ @@@ @@@
    @ @ @ @
     @@@ @@@

sunting2: solusi yang lebih baru menggunakan kata-kata qwote dan base-36 disandikan

say flip :36($_).base(2).trans("01"=>" @")for<2HWC 315U 5XI9 3ESY 2HWC DN4 B8G>
  • <ABC DEF GHI> adalah sintaksis kata-kata dalam perl6, jadi Anda mendapatkan daftar Strings
  • :36($_)membuat Int dari basis-36 string yang dikodekan dalam $_( forvariabel default loop)

sunting: solusi lama memiliki gambar yang lebih bagus (disalin) tetapi lebih panjang:

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

Mathematica 185 175

10 byte disimpan oleh mathe.

Cincin di bawah adalah ASCII 'O's.

Huruf "O", sedikit tembus cahaya, dalam Century Gothic, dicetak 5 kali pada ukuran font = 145 titik printer.

Ini bukan seni terminal. Namun itu sepenuhnya memenuhi definisi Wikipedia tentang seni Ascii: http://en.wikipedia.org/wiki/ASCII_art .

Graphics[{[email protected],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"}]

cincin olimpiade

DavidC
sumber
2
Karena ini bukan output konsol, Anda lebih baik di kontes olimpiade gaya bebas: codegolf.stackexchange.com/q/19050/15168
CousinCocaine
FontSize -> dapat dihapus.
mathe
@mathe, Benar. Saya menggunakan ukuran font hanya untuk membuat output ukuran yang masuk akal.
DavidC
@ DavidC Maksudku, kamu bisa menggantinya FontSize -> 145dengan 145.
mathe
@mathe. Iya! Terima kasih.
DavidC
8

JavaScript: 153 karakter

Saya ingin melihat apakah saya bisa melakukannya lebih cepat menggunakan aljabar untuk membuat grafik lingkaran:

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

( cadalah array yang terdiri dari lima (x, y) pasangan, pusat lingkaran, diratakan untuk menyimpan sepuluh karakter.)

keluaran:

1110000000111111111000000011111111100000001111
1000111110001111100011111000111110001111100011
0011111111100111001111111110011100111111111001
0011111111100000001111111110000000111111111001
0011111110000111000011111000011100001111111001
1000111100001111100001110000111110000111100011
1110000000111111111000000011111111100000001111
1111111100111111111001110011111111100111111111
1111111110001111100011111000111110001111111111
1111111111100000001111111110000000111111111111

159 karakter sedikit lebih mudah dibaca:

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

keluaran:

   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            

Dalam 167 karakter kita memiliki "warna":

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

keluaran:

   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            

Dan dengan 189 karakter , saya dapat membuat jari-jari rdapat disesuaikan juga:

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

APL, 8 karakter / byte *

Inilah jawaban yang mendorong jumlah char terendah (ini kode golf)

2 5⍴'○ '

Keluaran:

○ ○ ○
 ○ ○ 

Simbolnya adalah ○, operator lingkaran APL. Anda dapat menempatkan 'O' sebagai gantinya, jika Anda ingin output ASCII ketat. Saya pikir cocok menggunakan simbol APL.


Hanya untuk iseng, inilah versi warna (37 karakter - 20 = 17 skor)

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

Output: cincin warna keluaran terminal ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL dapat ditulis dalam charset byte tunggal (warisan) yang memetakan simbol APL ke nilai 128 byte atas. Oleh karena itu, untuk tujuan penilaian, program karakter N yang hanya menggunakan karakter ASCII dan simbol APL dapat dianggap sebagai panjang N byte.

Tobia
sumber
7

CSS, 1176 922 855 771 byte, -20 bonus warna = 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}

Hanya CSS, tidak perlu markup. Lihat biola tanpa mark di sini: http://jsfiddle.net/XcBMV/12/

Dering

Berwarna, dan dengan tumpang tindih yang benar.

Tuan Lister
sumber
6

Perl - 12 karakter

say"OOO\nOO"

OK, jadi ini bukan render artistik. ;-)

Sedikit lebih manis:

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

Unit GAS loader BIOS OL 16-bit - 617 - 20 = 597

Menjadi gila panjang di sini, jadi hanya untuk bersenang-senang.


Ini tidak memuat banyak, tetapi memuat logo The Olympic Games sebagai ASCII dengan warna;)

Kode:

.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) Bangun dan ekstrak gambar MBR

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

Berjalan di emulator

(Belum mengujinya di komputer di rumah saya ...)

qemu-system-i386 olymp.img

Hasil

masukkan deskripsi gambar di sini

Runium
sumber
4
Anda yakin mengambil ide untuk tidak menggunakan sumber daya eksternal secara ekstrem, bukan? +1
Adam Maras
@AdamMaras: Ya, dan itu;), harus mencoba. Selanjutnya adalah memasukkan beban nyata OS. O`Loader II.
Runium
Bagaimana skornya jika Anda mengukur biner, dengan asumsi bahwa disk sudah memiliki sektor boot sehingga Anda dapat melewati 55h AAh di akhir (bersama dengan bantalan yang terkait)?
SamB
@ SamB: Itu akan menjadi 275 byte, 255 pt di mana bagian kode sekitar 91 byte dan data variabel + plot 184 byte.
Runium
5

TI-Basic (16 byte)

Catatan: TI-Basic adalah tokenized. Jika saya ingat dengan benar, ClrHomedan Dispmerupakan token satu byte.

ClrHome
Disp "O O O"," O O
bb94
sumber
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();
}

Dibuat dalam turbo c ++ 3.0 compiler.  Mencoba membuat kode sesingkat mungkin

Archon
sumber
7
1) Silakan gunakan Markdown untuk menandai blok kode dan menjaga agar kode yang diposting dapat dibaca. 2) Karena ini adalah tantangan kode-golf , coba kurangi ukuran kode Anda hingga sangat diperlukan. 3) Silakan tambahkan baris judul ke jawaban Anda (ditekankan dengan beberapa markup hingga preferensi Anda (biasanya tajuk 1 atau tebal )), menentukan bahasa yang digunakan, panjang kode dan skor yang diperoleh.
manatwork