Narysuj logo Igrzysk Olimpijskich [zamknięte]


107

Wyzwanie

Narysuj logo Igrzysk Olimpijskich ...

Logo Igrzysk Olimpijskich

... jako sztuka postaci (np. ASCII)!

Przykładowe dane wyjściowe

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

Twoja sztuka nie musi wyglądać dokładnie tak jak moja, ale musi reprezentować kółka olimpijskie na tyle dobrze, aby można je było rozpoznać.

Zasady

  • Program musi zapisać grafikę na konsoli.
  • Najkrótszy kod (w bajtach, w dowolnym języku) wygrywa.
  • Rozwiązanie, które drukuje pierścienie w ich odpowiednich kolorach (lub bliskiej reprezentacji) otrzyma premię minus dwadzieścia punktów.

Zwycięzca zostanie wybrany w dniu 23 lutego rd po zakończeniu Zimowych Igrzyskach Olimpijskich 2014.


Zwycięzcy


7
20 punktów bonusowych. Dlaczego miałbym chcieć +20 do mojego wyniku?
Justin

21
Hum, to znak towarowy…
moala

4
@moala Myślę, że podlega to zasadom dozwolonego użytku.
Nzall

11
W kolorze widać, że są one zazębiającymi się pierścieniami, a nie tylko nakładającymi się na siebie . Niewiele do tej pory dotyczyło tego.
Rob Kennedy

6
Całkowicie IANAL: ok, aby napisać oprogramowanie, które rysuje O ****** ic R ** gs, nie jest ok, aby go uruchomić. :-)
Carl Witthoft

Odpowiedzi:


23

APL (82) (-20 = 62)

Edycja: dla odmiany ten program jest na tyle prosty, że TryAPL go dotknie, więc możesz go uruchomić (wystarczy wkleić linię).

Nie jestem pewien, czy mogę ubiegać się o „kolor”, ale reprezentuję je wszystkie inaczej.

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]

Konsola APL nie obsługuje kolorów, więc użyłem zacienionych znaków blokowych (przypisanie jakiejkolwiek innej grafiki ASCII byłoby tak proste, jak zastąpienie znaków na początku łańcucha).

Powinny wyglądać jak nieprzerwane kręgi (w zależności od czcionki).

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

Lub:

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

165

Commodore 64 BASIC

Pisanie bezpośrednio na ekranie i w pamięci kolorów.

Program

Wynik:

Wynik


Oto jak to zrobić za pomocą duszków.


1
To fantastycznie. +1. Czy możemy uzyskać liczbę bajtów?
Adam Maras,

2
Pamiętaj, że jeśli chcesz grać w golfa, możesz także skracać polecenia i numery linii w C64 BASIC.
Gabriele D'Antona

15
Jedyne, co niepokoi mnie w tej odpowiedzi, to: jak tam sztuka ascii?
Justin

10
to jest sztuka PETSCII
Gabriele D'Antona

7
@Quincunx: Ponieważ PETSCII jest również znany jako CBM ASCII, może to się kwalifikować. Jeśli chcesz użyć innej postaci do rysowania (aby wyglądała bardziej jak klasyczna grafika ASCII), zastąpienie 160 (odwrócona spacja) 42 (gwiazdka) w linii 100 powinno załatwić sprawę.
Heinzi

86

Fiddle HTML - 48 , 35 , 33 znaków (Dzięki @Dom i @cnst!)

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

Wynik:

wprowadź opis zdjęcia tutaj


2
Możesz zapisać więcej znaków używając: OOO<div style="margin:-10px 5px">OOzamiast tego ... (Myślę, że to jednak musi być blok, stąd <div/>)
Dom Hastings

Ponieważ nie jest to wyjście na konsolę, lepiej być na wolnym konkursie olimpijskim: codegolf.stackexchange.com/q/19050/15168
CousinCocaine

@DomHastings: Good call! Odpowiedź zaktualizowana :)
Briguy37

3
Więc po co zawracać sobie głowę div, można po prostu użyć pzamiast tego!
cnst

2
@PygameNerd: Zależy od twojej definicji „sztuki ASCII”: Tak, jeśli twoja definicja to „znaki ASCII ułożone w obraz”; nie, jeśli twoja definicja to „znaki ASCII w edytorze tekstów o stałej szerokości, aby utworzyć obraz”. Co do tego, czy jest wysyłany do konsoli, jak powiedział CousinCocaine, jeśli definicja to „Jednostka sterująca lub monitorująca komputera, zawierająca klawiaturę lub klawisze, przełączniki itp.” , to dane wyjściowe przeglądarki internetowej są częścią monitora, a tym samym konsoli (choć prawdopodobnie nie jest to zamierzenie OP).
Briguy37

76

BASH w kolorze - 271 - 20 = 251 - Z splątanymi pierścieniami; 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}"

Wynik:

wprowadź opis zdjęcia tutaj


A dla zabawy jeden: 61-20 = 41.

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

wprowadź opis zdjęcia tutaj


Wersja LZ77:

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

13
Niewiele do tej pory odpowiedzi poprawnie pokrywają się na przemian pierścienie, więc warto to ocenić, nawet jeśli wynik jest nieco wyższy.
Peter Taylor

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

Myślę, że twoja wersja bash jest poprawna - nigdzie w OP nie określa rozmiaru grafiki - ale musisz naprawić pierścienie w kształcie litery „V”. Może tylda (~) na dole pierścieni?
AmeliaBR

@AlterLagos: Być może aktualizacja działa?
Runium

@AmeliaBR: Tak, ten był bardziej dla zabawy, a nie aż tak poważnie. Próbowałem z różnymi. Być może jest to bardziej do gustu? x='54mO53m_50m052m_51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"- (Jestem trochę zły z 5 tutaj.) Lub nawet to może być lepsze, mając na uwadze nakładanie się: x='54mO53mA50m052mA51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"- chociaż może wyglądać bardziej niechlujnie niż inni.
Runium

76

Sinclair BASIC na ZX Spectrum 48K (261 bajtów)

Podstawowa lista:

Podstawowa lista

Ostateczny wynik:

Wynik

Uruchomienie programu i pomiar kodu:

Program działa

Podstawowa lista w formacie tekstowym:

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

Plik TAP z programem, odpowiedni dla emulatorów lub prawdziwej maszyny używającej DivIDE lub DivMMC: http://www.zxprojects.com/images/stories/draw_the_olympics_flag.tap


17
Podoba mi się część dotycząca pokrewieństwa :)
Thorbjørn Ravn Andersen

1
To jest urocze!
pcnThird

Użycie grafiki sprite Z80 jest po prostu genialne !! PS odejmij 20 punktów za kolory.
Tomas

Tworzenie brudnej sztuki, a następnie tworzenie z niej grafiki ASCII, jest tak brudne. :)
undergroundmonorail

Czy możesz dołączyć kod źródłowy w formie umożliwiającej kopiowanie?
Paŭlo Ebermann

44

Więc właściwie nie czytałem poprawnie, to grafika ASCII, więc myślę, że to jest nieprawidłowe. 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

W Chrome:

Co to jest!  Olimpijska flaga dla mrówek?

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
Możesz zbliżyć kolory nieco bliżej bez kary: niebieski #06f#fa0#193
:,

2
Ponieważ nie jest to wyjście konsolowe, lepiej jest być na wolnym konkursie olimpijskim: codegolf.stackexchange.com/q/19050/15168
CousinCocaine

39

Rubin: 198 znaków - 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*''}*$/

(Uwaga, które ^[są pojedynczymi znakami).

Przykładowy przebieg:

logo igrzysk olimpijskich


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

Oto wyjście

wprowadź opis zdjęcia tutaj

Kolejna wersja oparta na rasteryzacji grafiki wektorowej

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

wprowadź opis zdjęcia tutaj


2
Dostajesz punkty za najładniejsze wyjście.
Michael Stern

Dobra robota. Opublikowałem własną wersję twojego kodu.
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

Uważam, że liczy się to jako „grafika ASCII”, chociaż nie zapisuje się w konsoli. Wynik:

Pierścienie Olimpijskie

To może być trochę bardziej golfa.


19
Jeśli to jest sztuka ASCII, to z pewnością pierwsza, jaką widziałem przy użyciu obróconych gwiazdek.
TheBlastOne

2
Jestem pewien, że to nie będzie ostatni.
pseudonim

25

Skrypt poleceń systemu Windows - 112 procent bajtów

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

100% kół olimpijskich

I oczywiście obowiązkowa wersja cheat'ish - 4 bajty

%~n0

zapisane jako:

@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
potrzebujemy więcej odpowiedzi w BAT i CMD :)
Einacio

21

Kolejna próba w Perlu, 130 120

Dzięki manatwork za pomoc w tym

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

Wynik:

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

3
Możesz oszczędzić: 4 znaki, używając forzamiast foreach; 2 znaki poprzez usunięcie (… argumentów )rundy sprintf(); 2 znaki poprzez usunięcie hexparametru; 1 znak za pomocą y///zamiast tr///; 1 postać poprzez usunięcie finału ;.
manatwork

@manatwork Thanks! Nigdy wcześniej o tym nie słyszałem y///. Pójdę teraz to sprawdzić.
piskliwy kostnica

20

Python: 157 140 138 133 122 107 znaków

107

(dzięki manatwork )

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

próbka wyjściowa:

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

(właśnie zaczął ten, postaram się go poprawić)

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

z lepszym wyjściem: 120 znaków

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

próbka wyjściowa:

   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
Co z bazą 36? Ma to 140 znaków: print'\n'.join(['{0:b}'.format(int(o,36)).rjust(39,'0')for o in"kpvbkq0 1re099tu 3ifszg1t 3iwiuayp 1re099tu kpvbkq0 httbls 5trxmo".split()]). Jeśli chodzi o wersję „lepszą wydajność”, możesz oszczędzić rjust()drugiego parametru. (I wstaw „t” w nagłówku tego postu.)
manatwork

Szukałem lepszego rozwiązania, twoje wygląda świetnie!
evuez

1
Niezła poprawa dzięki bin(). Ale dlaczego korzystasz z str()tego? bin()Zwracana wartość jest już str.
manatwork

3
Czy nie powinna być piąta linia 010000010100000101000101000001010000010? Dwa dolne pierścienie wydają mi się trochę połamane.
piskliwy kostnica

@manatwork, naprawdę, nie myślałem o tym!
evuez

17

Perl, 177 163

Ulepszona wersja dzięki 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;

Wynik:

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

2
Brawo dla Perla! Kilka dodatkowych oszczędności: zamiast używać "\n"as $r, możesz użyć $/wartości domyślnych "\n", dosłowne znaki nowej linii mogą nawet zaoszczędzić więcej w kilku miejscach. Możesz także zapisać 1 dodatkowy znak, używając $s=$"x3zamiast $s=" ". Mam nadzieję, że to pomaga!
Dom Hastings

15

C, 257 bajtów

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

To mogło być trochę bardziej golfa.

To musi być uruchomione na Tektronix 4010 (lub emulatorze takim jak xterm -t). Wynik:

Wyjście

To rzeczywiście sztuka ASCII, ponieważ wszystkie one są „.” postacie. I wysyła dane do konsoli, zgodnie z żądaniem. Niektóre emulatory Tektronix obsługują kolor. Mój nie, więc nie mogłem tego zrobić.


12

Java, 181 179 161 156 bajtów

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

(Nie kompiluje się na jdk 1.7, wymaga wersji 1.6 lub nowszej)

Wyjście:

11100011111110001111111000111
10111110111011111011101111101
01111111000111111100011111110
10111100111001110011100111101
11100011111110001111111000111
11111101111101110111110111111
11111111000111111100011111111

Zdecydowanie nie jest zwycięzcą, ale daj spokój, to Java .


2
Części 2 znaki przechwytywanie przez nie w replaceAll()„s wyrażenia regularnego i oddanie z powrotem całą dopasowaną część: replaceAll(".{29}","$0\n"). (Na końcu twojego pliku może występować dodatkowy podział wiersza, ponieważ w wysłanym kodzie liczę tylko 181 znaków.)
manatwork

1
Jeszcze jedno: usuń importi umieść nazwę pakietu bezpośrednio w wywołaniu konstruktora. To zmniejsza rozmiar do 161 znaków.
manatwork

Oszczędzono kolejne 5 bajtów, zmieniając class M{static{...na enum M{M;{.... Kolejnym dużym krokiem jest pozbycie się BigInteger, czy to możliwe? Próbuję zrobić magię za pomocą String.format, ale nie mam jeszcze żadnych rezultatów.
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]

Wynik:

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

grał w golfa z:

{-# 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
Nadal się śmieję, map.mapbo to brzmi zabawnie. : D
Vektorweg

Wydaje się, że jest rozdęty ...
SamB

pierścienie czy kod?
Vektorweg

Mam na myśli pierścienie :-)
SamB

11

Ruby, 9

p"\044"*5

#satyra

Reguły dopuszczają sztukę, która nie wygląda dokładnie tak jak w przykładzie, ale musi „reprezentować pierścienie olimpijskie na tyle dobrze, aby można je było rozpoznać” .

Możesz rozpoznać tę reprezentację logo Igrzysk Olimpijskich.


Zabawne :) Jako Chicagoanin, mogę ci powiedzieć, że dokładnie to widział burmistrz, gdy zaliczył gry!
Dean Radcliffe

Jako Vancouverite (2010 Games), mogę również odnosić się. :-)
Darren Stone

8
Czuję, że brakuje mi tutaj wewnętrznego żartu :-P
Klamka

2
@DoorknobofSnow Przepraszamy, myślałem, że masz wątpliwości co do kodów znaków. Jeśli nie uzyskasz połączenia między olimpiadą a znakami dolara, nie mogę ci pomóc.
AmeliaBR

8
wyjście to:
$
Roger

11

JavaScript - 170 185 189 znaków

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

Wynik:

   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 znaków

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

Wynik:

O O O 
 O O 

Drugi jest leniwy


1
Możesz oszczędzić; 2 znaki, używając „4” jako separatora zamiast „.” I używając cyfry 4 (bez cudzysłowów) jako split()parametru; 2 znaki, usuwając ostatnie 2 ;s.
manatwork

A (obecnie) Firefox tylko wersja powyższego można zmniejszyć jeszcze bardziej, do 172 znaków: 'kpvbkq041re099tu43ifszg1t43iwiuayp41sdk52824kpvbkq04httbls45trxmo'.split(4).map(x=>{a=parseInt(x,36).toString(2);console.log(' '.repeat(39-a.length)+a.replace(/0/g,' '))}).
manatwork

Dzięki, dodałem twoją sugestię, na razie pozostawię niezależną przeglądarkę.
Eduard Florinescu

◯ nie jest ascii ...
njzk2

@ njzk2 Tak, rozwiązałem to סּ_סּ
Eduard Florinescu

11

Dwójkowy! (265 CHARS)

0001111100000000111110000000011111000
0100000001000010000000100001000000010
1000000001111100000000011111000000001
0100000011000011000001100001100000010
0001111100000000111110000000011111000
0000000010000001000001000000100000000
0000000001111100000000011111000000000

Jest za duży, aby wygrać, ale przynajmniej wygląda świetnie!


Olimpijskie logo w matrycy.
user13107

@ user13107 Co?
Dozer789

10

PHP - 99 (-20?)

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

To jest zdecydowanie rozpoznawalne. Mówię, że moje „kolory” się liczą; to ścisła reprezentacja.

Jeśli ci się to nie podoba, oto jest

GolfScript - 101 (-20?)

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

16
Gdzie jest kod
Cofnij

14
@Undo To jest kod ;-)
Klamka

Tak naprawdę nie znam PHP. To jedyny program / styl PHP, który potrafię pisać. (Pewnie, że przeszedłem samouczek, ale zapomniałem).
Justin

2
Czy PHP nie pojawi się na ekranie jako bbbb #### rrrr bb # #rrb ybyy g # gg r bbyb ## g # rrrr y yg g yyyy gggg na ekranie?
Pan Lister

4
Musisz dodać header("Content-Type: text/plain"), domyślnie dla serwerów sieciowych jest text / html
Kroltan

10

Bash + ImageMagick: 163 znaki

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

Przykładowe dane wyjściowe:

.

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

10

Perl 6: 112 77 56 znaków, 75 bajtów

say flip .ord.base(2).trans("01"=>" @")for"𜜜𢢢񃣡𦶲𜜜䔐㣠".comb
  • Ciągi znaków Unicde! (powyższy ciąg to „\ x1C71C \ x228A2 \ x438E1 \ x26DB2 \ x1C71C \ x4510 \ x38E0”)
  • .comb daje listę oddzielnych znaków w ciągu (w każdym razie bez argumentu)
  • .ord podaje numer kodowy znaku od znaku
  • .base(2) zwraca ciąg z kodowaniem base-2 tego Int
  • .trans zastępuje cyfry spacją i @ dla lepszej widoczności
  • flip odwraca znaki łańcucha, aby brakujące początkowe zera nie zepsuły rysunku.
  @@@ @@@ @@@
 @ @ @ @ @ @
@ @@@ @@@ @
 @ @@ @@ @@ @@ @
  @@@ @@@ @@@
    @ @ @ @
     @@@ @@@

edit2: nowsze rozwiązanie wykorzystujące słowa qwote i zakodowane w standardzie 36

say flip :36($_).base(2).trans("01"=>" @")for<2HWC 315U 5XI9 3ESY 2HWC DN4 B8G>
  • <ABC DEF GHI> jest składnią słów-cytatów w perl6, więc dostajesz listę ciągów
  • :36($_)tworzy Int z ciągu zakodowanego w base-36 w $_( forzmienna domyślna pętli)

edycja: stare rozwiązanie ma ładniejszy (skopiowany) rysunek, ale jest dłuższe:

  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

10 bajtów zapisanych przez mathe.

Pierścienie poniżej to ASCII 'O.

Litera „O”, nieco półprzezroczysta, w Century Gothic, drukowana 5 razy przy rozmiarze czcionki = 145 punktów drukarki.

To nie jest sztuka terminalna. Jednak w pełni spełnia definicję Wikipedii dotyczącą sztuki Ascii: http://en.wikipedia.org/wiki/ASCII_art .

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

kółka olimpijskie


2
Ponieważ nie jest to wyjście konsolowe, lepiej jest być na wolnym konkursie olimpijskim: codegolf.stackexchange.com/q/19050/15168
CousinCocaine

FontSize -> może być usunięty.
mathe

@mathe, True. Użyłem rozmiaru czcionki tylko po to, aby wydruk był rozsądny.
DavidC

@DavidC Znaczy można zastąpić FontSize -> 145przez 145.
mathe

@mathe. Tak! Dzięki.
DavidC

8

JavaScript: 153 znaki

Chciałem sprawdzić, czy mógłbym to zrobić szybciej, używając algebry do graficznego rysowania okręgów:

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

( cto tablica pięciu par (x, y), środki okręgów, spłaszczone, aby zapisać dziesięć znaków).

wynik:

1110000000111111111000000011111111100000001111
1000111110001111100011111000111110001111100011
0011111111100111001111111110011100111111111001
0011111111100000001111111110000000111111111001
0011111110000111000011111000011100001111111001
1000111100001111100001110000111110000111100011
1110000000111111111000000011111111100000001111
1111111100111111111001110011111111100111111111
1111111110001111100011111000111110001111111111
1111111111100000001111111110000000111111111111

159 znaków jest trochę bardziej czytelnych:

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

wynik:

   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            

W 167 znakach mamy „kolory”:

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

wynik:

   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            

Za pomocą 189 znaków mogę również rustawić promień :

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 znaków / bajtów *

Oto odpowiedź zachęcająca do najniższej liczby znaków (w końcu to jest golf golfowy)

2 5⍴'○ '

Wynik:

○ ○ ○
 ○ ○ 

Symbolem jest ○, operator okręgu APL. Zamiast tego możesz wstawić „O”, na wypadek, gdybyś chciał wyjściowo ściśle ASCII. Pomyślałem, że warto użyć symbolu APL.


Tylko dla kopnięć, oto wersja kolorowa (37 znaków - 20 = 17 punktów)

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

Dane wyjściowe: kolorowe pierścienie wyjściowe ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL można zapisać we własnym (starszym) jednobajtowym zestawie znaków, który odwzorowuje symbole APL na górne 128 bajtów. Dlatego do celów oceniania program N znaków, który używa tylko znaków ASCII i symboli APL, może zostać uznany za N-bajtowy.


7

CSS, 1176 922 855 771 bajtów, -20 premia za kolor = 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}

Tylko CSS, nie wymaga znaczników. Zobacz skrzypce markupless tutaj: http://jsfiddle.net/XcBMV/12/

Pierścienie

W kolorze i przy prawidłowym nałożeniu.


6

Perl - 12 znaków

say"OOO\nOO"

OK, więc nie jest to szczególnie artystyczny rendering. ;-)

Nieco ładniejszy:

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

6

GAS Assembly 16-bitowy moduł ładujący BIOS OL - 617-20 = 597

Szaleje tutaj na długość, więc tylko dla zabawy.


Nie ładuje się dużo, ale ładuje logo Igrzysk Olimpijskich jako ASCII z kolorami;)

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) Zbuduj i wyodrębnij obraz MBR

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

Uruchomiony w emulatorze

(Nie przetestowałem tego jeszcze na moim komputerze domowym ...)

qemu-system-i386 olymp.img

Wynik

wprowadź opis zdjęcia tutaj


4
Jesteś pewien, że skrajnie nie używasz zasobów zewnętrznych, prawda? +1
Adam Maras

@AdamMaras: Tak, i jest tam;), musiał spróbować. Następnie należy wprowadzić rzeczywiste obciążenie systemu operacyjnego. O`Loader II.
Runium

Jak ocenia się to, jeśli mierzysz plik binarny, zakładając, że dysk ma już sektor rozruchowy, więc możesz pominąć 55h AAh na końcu (wraz z wszelkimi powiązanymi wypełnieniami)?
SamB

@SamB: Będzie to 275 bajtów, 255 pkt, gdzie część kodowa ma około 91 bajtów, a zmienna + dane wykresu 184 bajty.
Runium

5

TI-Basic (16 bajtów)

Uwaga: TI-Basic jest tokenizowany. Jeśli dobrze pamiętam ClrHomei Dispsą to jednobajtowe tokeny.

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

Wykonane w kompilatorze turbo c ++ 3.0.  Próbowałem, aby kod był jak najkrótszy


7
1) Użyj Markdown, aby zaznaczyć blok kodu i zachować czytelność wysłanego kodu. 2) Ponieważ jest to wyzwanie związane z golfem , spróbuj zmniejszyć rozmiar kodu do niezbędnego poziomu. 3) Dodaj do swojej odpowiedzi nagłówek (podkreślony z użyciem znaczników do swoich preferencji (zwykle nagłówek 1 lub pogrubiony )), określając używany język, długość kodu i uzyskany wynik.
manatwork
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.