Olimpiyat Oyunları logosunu çizin [kapalı]


107

Meydan okuma

Olimpiyat Oyunları logosunu çizin ...

Olimpiyat Oyunları logosu

... karakter olarak (örneğin ASCII) sanat!

Örnek çıktı

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

Sanatınızın aynen benimkine benzemesi gerekmiyor, ancak olimpiyat halkalarını tanınması için yeterince iyi temsil etmesi gerekiyor.

kurallar

  • Program, sanatı konsola yazmalıdır.
  • En kısa kod (bayt, herhangi bir dilde) kazanır.
  • Yüzükleri kendi renklerinde basan bir çözüme (veya yakın bir gösterime) eksi yirmi puanlık bir bonus verilir.

Kazanan 23 Şubat tarihinde seçilecektir rd 2014 Kış Olimpiyatları'nda sonunda.


Kazananlar


7
20 bonus puanı. Um, neden puanımı +20 olsun ki?
Justin

21
Hum, bu bir ticari marka…
moala

4
@ Moala, bunun adil kullanım politikası kapsamında olduğunu düşünüyorum.
Nzall

11
Renk olarak, birbiriyle örtüşen değil , birbirine kenetlenen halkalar olduğu açıktır . Şimdiye kadar yapılan girişlerden bazıları bunu açıkladı.
Rob Kennedy,

6
Tamamen IANAL: Tamam, O ****** ic R ** gs yi çizen yazılımı yaz, tamam mı? :-)
Carl Witthoft,

Yanıtlar:


23

APL (82) (-20 = 62)

Düzenleme: bir değişiklik için, bu program TryAPL ona dokunacak kadar basittir , böylece oraya çalıştırabilirsiniz (çizgiyi yapıştırın).

'Renk' bitini talep edebilirsem emin değilim, yine de hepsini farklı şekilde temsil ediyorum.

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

APL konsolu rengi desteklemiyor, bu yüzden gölgeli blok karakterleri kullandım (herhangi bir başka ASCII resmini atamak, dizenin başlangıcındaki karakterleri değiştirmek kadar basit olurdu.)

Kırılmamış dairelere benzemelidirler (yazı tipine bağlı olarak.)

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

Veya:

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

165

Commodore 64 TEMEL

Doğrudan ekrana ve renkli belleğe yazma.

program

Çıktı:

Çıktı


İşte bunu sprite ile yapıyorsun.


1
Bu harika. +1. Bir bayt sayısı alabilir miyiz?
Adam Maras

2
Golf oynamak istiyorsanız, komutları ve satır numaralarını C64 BASIC'de de kısaltabileceğinizi unutmayın.
Gabriele D'Antona,

15
Beni bu cevapta rahatsız eden tek şey şudur: Bu bilim sanatı nasıl?
Justin

10
Bu PETSCII-sanat
Gabriele D'Antona

7
Quincunx: PETSCII aynı zamanda CBM ASCII olarak da bilindiğinden, bu nitelik kazanabilir. Çizim için farklı bir karakterin kullanılmasını istiyorsanız (klasik ASCII sanatı gibi görünmesini sağlamak için), 100 (160) (ters çevrilmiş alan) yerine 100 (100) satırını 42 (yıldız işareti) ile değiştirmek hile yapmalıdır.
Heinzi,

86

HTML Fiddle - 48 , 35 , 33 karakter (Thanks @Dom ve @cnst!)

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

Çıktı:

görüntü tanımını buraya girin


2
Kullanarak daha fazla karakter kaydedebilirsiniz: OOO<div style="margin:-10px 5px">OObunun yerine ... (sanırım bir blok olması gerektiğini düşünüyorum, dolayısıyla <div/>)
Dom Hastings

Bu konsol çıkışı olmadığından, serbest stil olimpiyat yarışmasında daha iyisin
CousinCocaine

@DomHastings: İyi arama! Cevap güncellendi :)
Briguy37

3
Öyleyse neden rahatsız etsin div, sadece kullanabilir p!
saat

2
@PygameNerd: "ASCII sanatı" tanımınıza bağlıdır: Evet, tanımınız "resim oluşturmak üzere düzenlenmiş ASCII karakterleri" ise; tanımınız "resim oluşturmak için sabit genişlikte bir metin düzenleyicide ASCII karakterleri" ise hayır. CousinCocaine’in dediği gibi konsola çıkıp çıkmadığı gibi daha sonra, web tarayıcı çıktısı monitörün ve dolayısıyla konsolun bir parçasıdır (bu muhtemelen OP'nin hedeflediği şekilde değildir).
Briguy37

76

Renkli BASH - 271 - 20 = 251 - Dolaştırılmış halkalarla; 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}"

Sonuç:

görüntü tanımını buraya girin


Ve bunun eğlencesi için bir: 61 - 20 = 41.

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

görüntü tanımını buraya girin


LZ77 sürümü:

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

13
Şu ana kadarki cevaplar halkaların alternatif örtüşmesini sağlamaz, bu yüzden puan biraz daha yüksek olsa bile bu bir değer kazanmaya değer.
Peter Taylor,

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

Bash sürümünüzün geçerli olduğunu düşünüyorum - OP'de hiçbir yerde grafiğin boyutunu belirtmiyor - ancak "V" şekli halkalarını düzeltmeniz gerekiyor. Yüzüklerin dibinde belki bir tilde (~)?
AmeliaBR

@AlterLagos: Güncelleme çalışmalarını bulabilirsiniz?
Runium

@AmeliaBR: Evet, bunun eğlencesi için daha fazlasıydı ve bu ciddi anlamda değil. Çeşitli denedim. Belki de bu beğeniden daha fazlasıdır? x='54mO53m_50m052m_51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"- (Buradaki 5 ile biraz kötüyüm.) Ya da bu daha iyi olabilir, akılda binme ile: x='54mO53mA50m052mA51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"- Diğerlerinden daha karışık görünebilir olsa da.
Runium

76

Sinclair BASIC, ZX Spektrumu 48K (261 bayt)

TEMEL liste:

TEMEL liste

Son sonuç:

Sonuç

Program çalışması ve kod ölçümü:

Program çalışıyor

Metin biçiminde TEMEL listeleme:

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

Programla birlikte TAP dosyası, öykünücüler veya DivIDE veya DivMMC kullanan gerçek makine için uygun: http://www.zxprojects.com/images/stories/draw_the_olympics_flag.tap


17
Ben asciification bölümünü seviyorum :)
Thorbjørn Ravn Andersen

1
Bu çok hoş!
pcnThird

Z80 sprite grafiğinin kullanımı sadece genitaldir !! PS renkler için 20 puan çıkarın.
Tomas

Düzenli sanat üretmek ve ardından ASCII sanatını yapmak çok kirli geliyor. :)
undergroundmonorail

Kaynak kodunu kopyalanabilir bir formata ekleyebilir misiniz?
Paŭlo Ebermann

44

Aslında doğru okumadım, bu ASCII-sanatı, bu yüzden geçersiz. Hata!


HTML 121 (141 - 20)

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

Chrome'da:

Bu nedir!  Karıncalar için Olimpiyat bayrağı?

PHP 103 (123 - 20)

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

2
Renkleri ceza #06f#fa0#193
vermeden

2
Bu konsol çıktısı olmadığından, serbest stil olimpiyat yarışmasında daha iyisin
KuzenCocaine

39

Yakut: 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*''}*$/

( ^[Tek karakter olduğunu unutmayın .)

Örnek çalışma:

olimpiyat oyunları logosu


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

İşte çıkış

görüntü tanımını buraya girin

Vektör grafiklerin rasterleştirilmesine dayanan başka bir versiyon

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

görüntü tanımını buraya girin


2
En güzel çıktı için puan alıyorsunuz.
Michael Stern,

İyi iş. Kodunuzun kendi versiyonunu gönderdim.
Sayın Sihirbaz,

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

Konsola yazmasa da, bunun "ASCII sanatı" olarak sayıldığını düşünüyorum. Çıktı:

Olimpiyat Halkaları

Bu biraz daha golf oynayabilir.


19
Eğer bu ASCII sanatıysa, döndürülmüş yıldızları kullanırken ilk gördüğüm kesinlikle.
TheBlastOne

2
Bunun son olmayacağına eminim.
Pseudonym

25

Windows Komut Denetimi - Yüzde 112 bayt

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

% 100 Olimpiyat halkaları

Ve tabii ki, zorunlu hile 'versiyonu - 4 byte

%~n0

olarak kaydedildi:

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

10
BAT ve
CMD'de

21

Perl'deki bir başka girişim, 130 120

Bu konuda yardımcı olduğunuz için teşekkürler

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

Çıktı:

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

3
Yedekleyebilirsiniz: foryerine 4 karakter foreach; ()Round sprintf()argümanlarını kaldırarak 2 karakter ; hexS parametresini kaldırarak 2 karakter ; Kullanılarak 1 karakter y///yerine tr///; Finali kaldırarak 1 karakter ;.
Manatwork

@ manatwork Teşekkürler! Daha önce hiç duymadım bile y///. Şimdi gidip bakacağım.
pembemsi ossifrage

20

Python: 157 140 138 133 122 107 karakter

107

(sayesinde manatwork )

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

örnek çıktı:

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

(bunu yeni başlattım, geliştirmeye çalışacağım)

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

daha iyi çıktı: 120 karakter

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

örnek çıktı:

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

1
Peki ya baz 36? Bu 140 karakter var: print'\n'.join(['{0:b}'.format(int(o,36)).rjust(39,'0')for o in"kpvbkq0 1re099tu 3ifszg1t 3iwiuayp 1re099tu kpvbkq0 httbls 5trxmo".split()]). “Daha iyi çıkış” versiyonuyla ilgili olarak, rjust()ikinci parametresini yedekleyebilirsiniz. (Ve bu
yazının

Daha iyi bir çözüm arıyordum, seninki harika görünüyor!
evuez

1
İle güzel bir gelişme bin(). Ama neden onu kullanıyorsun str()? bin()'nin dönüş değeri zaten str.
Manatwork

3
5. hat olmamalı 010000010100000101000101000001010000010mı? Alttaki iki halka bana biraz kırılmış görünüyor.
pembemsi ossifrage,

@ Manatwork gerçekten, bunun hakkında düşünmedim!
14'de Evuez

17

Perl, 177 163

Dom Hastings sayesinde geliştirilmiş bir sürüm:

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

Çıktı:

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

2
Perl için Yaşasın! Ekstra tasarruf Birkaç: kullanmak yerine "\n"olarak $rkullanabileceğiniz $/bu durumda varsayılan "\n", edebi yeni satırlar bile yerlerde bir çift daha sizi kurtarabilir. Ayrıca, $s=$"x3yerine 1 karakter daha kaydedebilirsiniz $s=" ". Umarım yardımcı olur!
Dom Hastings,

15

C, 257 bayt

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

Bu biraz daha golf oynayabilirdi.

Bunun bir Tektronix 4010 (veya xterm -t gibi bir emülatör) üzerinde çalıştırılması gerekir. Çıktı:

Ooutput

Bu gerçekten de ASCII sanatı, çünkü hepsi '.' karakter. Ve istendiği gibi konsola çıktı veriyor. Bazı Tektronix emülatörleri rengi destekler. Benimki yapmadı, ben de yapamadım.


12

Java, 181 179 161 156 bayt

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

(Jdk 1.7'de derlenmeyecek, 1.6 veya daha az sürüm gerektirecektir)

Çıktı:

11100011111110001111111000111
10111110111011111011101111101
01111111000111111100011111110
10111100111001110011100111101
11100011111110001111111000111
11111101111101110111110111111
11111111000111111100011111111

Kesinlikle bir kazanan değil, ama hadi, bu Java .


2
Yakalayarak etmeyerek 2 karakter Yedek replaceAll()'ın normal ifadeyi ve tüm eşleşen parçası geri koyarak: replaceAll(".{29}","$0\n"). (Gönderilen kodda yalnızca 181 karakter
saydığım

1
Bir şey daha: kaldırın importve paket adını doğrudan yapıcı çağrısına koyun. Bu, boyutu 161 karaktere düşürür.
Manatwork

Değiştirerek başka 5 bayt bağışladı class M{static{...için enum M{M;{.... Bir sonraki büyük adım BigInteger'dan kurtulmak, mümkün mü? String.format ile biraz sihir yapmaya çalışıyorum ama henüz sonuç yok.
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]

Çıktı:

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

golf oynadı:

{-# LANGUAGE NoMonomorphismRestriction #-}

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

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

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

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

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

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

main = printOlymp

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

2
Hala gülüyorum map.mapçünkü kulağa komik geliyor. : D
Vektorweg


yüzükler veya kod?
Vektorweg

Halkaları kastediyorum :-)
SamB

11

Yakut, 9

p"\044"*5

#satire

Kurallar, tam olarak örneğe benzemeyen sanata izin veriyor, ancak “olimpiyat halkalarını tanınabilir şekilde yeterince temsil etmeli .

Olimpiyat Oyunları logosunun bu temsilini tanıyabilirsiniz.


Komik :) Bir Chicagoan olarak, oyun kuruculuyken belediye başkanının gördüğü şeyin tam olarak böyle olduğunu söyleyebilirim!
Dean Radcliffe,

Bir Vancouverit (2010 Oyunları) olarak, ben de ilişki kurabilirim. :-)
Darren Stone

8
Burada bir iç şaka
kaçırmış

2
@DoorknobofSnow Üzgünüm, karakter kodları konusunda kafanız karıştı. Olimpiyatlar ve dolar işaretleri arasındaki bağlantıyı alamazsan, sana yardım edemem.
AmeliaBR

8
çıktı:
$
Roger

11

Javascript - 170 185 189 Karakterler

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

Çıktı:

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

2. Javascript - 25 Karakter

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

Çıktı:

O O O 
 O O 

İkinci tembel


1
Yedekleyebilirsiniz; “.” Yerine ayırıcı olarak “4” kullanarak ve split()'parametresi olarak 4 rakamını (tırnak işaretleri olmadan) kullanarak 2 karakter ; Son 2 saniyeyi kaldırarak 2 karakter ;.
Manatwork

A (şu anda) Firefox okunur sürümü yukarıda 172 karakter, hatta daha azaltılabilir: 'kpvbkq041re099tu43ifszg1t43iwiuayp41sdk52824kpvbkq04httbls45trxmo'.split(4).map(x=>{a=parseInt(x,36).toString(2);console.log(' '.repeat(39-a.length)+a.replace(/0/g,' '))}).
Manatwork

Teşekkürler, önerinizi ekledik, şimdilik tarayıcıyı bağımsız bırakacağım.
Eduard Florinescu

As ascii değil ...
njzk2

@ njzk2 Evet, çözüldü סּ_סּ
Eduard Florinescu

11

İkili! (265 CHARS)

0001111100000000111110000000011111000
0100000001000010000000100001000000010
1000000001111100000000011111000000001
0100000011000011000001100001100000010
0001111100000000111110000000011111000
0000000010000001000001000000100000000
0000000001111100000000011111000000000

Kazanmak için çok büyük, ama en azından havalı görünüyor!


Matrix Olimpiyat logosu.
user13107

@ user13107 Ne?
Dozer789

10

PHP - 99 (-20?)

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

Bu kesinlikle tanınabilir. "Renklerimin" sayıldığını söylüyorum; bu yakın bir temsildir.

Bundan hoşlanmıyorsan, işte burada.

GolfScript - 101 (-20?)

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

16
Kod nerde?
geri al

14
@ Kod Bu ; ;-)
Doorknob

Aslında, PHP bilmiyorum. Yazmayı bildiğim tek PHP programı / stili budur. (Tabii ki bir öğretici geçtim, ama unuttum).
Justin

2
PHP bir bbbb olarak çıkmaz mıydı #### rrrr bb # #rrb ybyy g # gg r bbyb ## g # rrrr y yg g yyyy gggg ekranda?
Bay Lister,

4
header("Content-Type: text/plain")
Eklemeniz

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

Örnek çıktı:

.

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

10

Perl 6: 112 77 56 karakter, 75 bayt

say flip .ord.base(2).trans("01"=>" @")for"𜜜𢢢񃣡𦶲𜜜䔐㣠".comb
  • Unicde dizeleri! (yukarıdaki dize "\ x1C71C \ x228A2 \ x438E1 \ x26DB2 \ x1C71C \ x4510 \ x38E0" şeklindedir)
  • .comb bir String'deki ayrı karakterlerin bir listesini verir (yine de bağımsız değişken olmadan)
  • .ord karakterden karakter kod numarası verir
  • .base(2) o Int'in base-2 kodlamasını içeren bir string döndürür
  • .trans daha iyi görünürlük için rakamları boşluk ve @ ile değiştirir
  • flip bir dizgenin karakterlerini tersine çevirir, böylece eksik baştaki 0'lar çizimi karıştırmaz.
  @@@ @@@ @@@
 @ @ @ @ @ @
@ @@@ @@@ @
 @ @@ @@ @@ @@ @
  @@@ @@@ @@@
    @ @ @ @
     @@@ @@@

edit2: qwote kelimeleri ve base-36 kodlu kullanarak daha yeni bir çözüm

say flip :36($_).base(2).trans("01"=>" @")for<2HWC 315U 5XI9 3ESY 2HWC DN4 B8G>
  • <ABC DEF GHI> perl6'da bir alıntı sözcük sözdizimidir, bu nedenle Dizelerin bir listesini alırsınız.
  • :36($_)içinde baz-36 kodlu dizgeden bir int oluşturur $_( fordöngü varsayılan değişkeni)

düzenleme: eski çözüm daha güzel (kopyalandı) çizimi var ama daha uzun:

  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

10

Mathematica 185 175

Mathe tarafından kaydedilen 10 bayt.

Aşağıdaki halkalar ASCII 'O' dır.

Century Gothic’te hafif yarı saydam “O” harfi yazı tipi boyutunda 5 kez basıldı = 145 yazıcı noktası.

Bu son sanat değil. Bununla birlikte, Wikipedia'nın Ascii sanatı tanımını tam olarak tatmin ediyor: 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"}]

olimpiyat halkaları


2
Bu konsol çıkışı olmadığından, serbest stil olimpiyat yarışmasında daha iyisin
CousinCocaine

FontSize -> kaldırılabilir.
mathe

@ mathe, Doğru. Yazı tipi boyutunu yalnızca çıktıyı makul bir boyutta yapmak için kullandım.
DavidC,

@DavidC Sana yerini alabilir demek FontSize -> 145tarafından 145.
mat

@mathe. Evet! Teşekkürler.
DavidC

8

JavaScript: 153 karakter

Çevreleri gerçekte grafiklendirmek için cebir kullanarak daha hızlı yapıp yapamayacağımı görmek istedim:

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

( con karakterden tasarruf etmek için düzleştirilmiş, daire merkezlerinden oluşan beş (x, y) çift dizisidir.)

çıktı:

1110000000111111111000000011111111100000001111
1000111110001111100011111000111110001111100011
0011111111100111001111111110011100111111111001
0011111111100000001111111110000000111111111001
0011111110000111000011111000011100001111111001
1000111100001111100001110000111110000111100011
1110000000111111111000000011111111100000001111
1111111100111111111001110011111111100111111111
1111111110001111100011111000111110001111111111
1111111111100000001111111110000000111111111111

159 karakter biraz daha okunaklı:

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

çıktı:

   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 karakter biz "renkleri" vardır:

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

çıktı:

   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            

Ve 189 karakter ile yarıçapı rayarlanabilir hale getirebilirim :

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

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


7

APL, 8 karakter / bayt *

İşte en düşük karakter sayımı için zorlayan bir cevap.

2 5⍴'○ '

Çıktı:

○ ○ ○
 ○ ○ 

Sembol ○, APL daire operatörüdür. Kesinlikle ASCII çıktısı almak istemeniz durumunda yerine 'O' koyabilirsiniz. Sadece bir APL sembolü kullanmanın uygun olduğunu düşündüm.


Sadece vuruşlar için işte renkli bir versiyon (37 karakter - 20 = 17 puan)

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

Çıktı: renkli halkalar terminal çıkışı ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL, APL sembollerini 128 baytlık değerlerle eşleyen kendi (eski) tek baytlık karakter kümesi ile yazılabilir. Bu nedenle, puanlama amacıyla, yalnızca ASCII karakterlerini ve APL sembollerini kullanan bir N karakter programı N bayt uzunluğunda kabul edilebilir.


7

CSS, 1176 922 855 771 bayt, -20 renk bonusu = 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}

Yalnızca CSS, biçimlendirme gerekmez. Burada işaretsiz kemanı görün: http://jsfiddle.net/XcBMV/12/

Halkalar

Renkli ve doğru örtüşme ile.


6

Perl - 12 karakter

say"OOO\nOO"

Tamam, bu özellikle sanatsal bir render değil. ;-)

Biraz şirin

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

6

GAS Düzeneği 16-bit BIOS OL yükleyici - 617 - 20 = 597

Burada uzunca çıldırıyor, sadece eğlencesi için.


Çok fazla yüklenmiyor, ancak renklerle ASCII olarak Olimpiyat Oyunları logosunu yüklüyor;)

Kod:

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

(Linux) MBR resmi oluşturun ve çıkarın

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

Emülatörde çalıştırma

(Henüz ev bilgisayarımda test etmedim ...)

qemu-system-i386 olymp.img

Sonuç

görüntü tanımını buraya girin


4
Dış kaynakları aşırı kullanmama fikrini kesinlikle alıyorsunuz, değil mi? +1
Adam Maras

@AdamMaras: Evet, işte o;) denemek zorunda kaldı. Daha sonra gerçek bir işletim sistemi yükü dahil etmektir. Yükleyici II.
Runium

Diskin zaten bir önyükleme kesimi olduğunu varsayarak, sonunda 55h AAh'ı atlayabilmeniz için (ilgili bir dolgu ile birlikte), ikili değeri ölçerseniz nasıl puan alır?
SamB,

@SamB: Kod bölümü yaklaşık 91 byte olan değişken + arsa verisi 184 byte olan 275 bayt, 255 pt olacaktır.
Runium

5

TI-Basic (16 bayt)

Not: TI-Basic belirtecidir. Doğru hatırlıyorsam ClrHomeve Dispbir bayt jetonum.

ClrHome
Disp "O O O"," O O

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

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

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

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

Turbo c ++ 3.0 derleyicisinden yapılmıştır.  Kodu mümkün olduğu kadar kısa kılmaya çalıştım


7
1) Kod bloğunu işaretlemek ve kaydedilen kodu okunaklı tutmak için lütfen Markdown'ı kullanın . 2) Bu bir kod golfü mücadelesi olduğundan, lütfen kodunuzun boyutunu kesinlikle gerekli olan ölçüde azaltmaya çalışın. 3) Lütfen kullanılan dili, kodun uzunluğunu ve kazanılan puanı belirterek cevabınıza bir başlık satırı ekleyin (tercihinize göre bir miktar işaretleme ile vurgulanır (genellikle başlık 1 veya koyu )).
Manatwork
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.