올림픽 게임 로고를 그립니다.


107

도전

올림픽 게임 로고를 그립니다.

올림픽 게임 로고

... 캐릭터 (예 : ASCII) 예술로!

샘플 출력

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

당신의 예술은 나의 것과 똑같아 보일 필요는 없지만, 인식 할 수있을 정도로 올림픽 반지를 충분히 나타내야합니다.

규칙

  • 프로그램은 예술 작품을 콘솔에 써야합니다.
  • 가장 짧은 코드 (바이트, 모든 언어)가 이깁니다.
  • 각각의 색상으로 링을 인쇄하는 솔루션 (또는 면밀한 표현)에는 마이너스 20 포인트 보너스가 부여됩니다.

우승자 2 월 23 일에 선택됩니다 RD 2014 년 동계 올림픽의 끝에서.


승자


7
20 보너스 포인트. 음, 내 점수에 +20을 원하는 이유는 무엇입니까?
Justin

21
흠, 이것은 상표입니다…
moala

4
@ moala 나는 이것이 공정 사용 정책에 속한다고 생각합니다.
Nzall

11
색상이 서로 겹치지 않고 연동 고리 임을 알 수 있습니다 . 지금까지 몇 가지 항목이이를 설명했습니다.
Rob Kennedy

6
완전히 IANAL : O ****** ic R ** gs를 그리는 소프트웨어를 작성해도 괜찮습니다. :-)
Carl Witthoft

답변:


23

APL (82) (-20 = 62)

편집 : 변경의 경우,이 프로그램은 TryAPL 이 그것을 만질 정도로 간단 하므로 거기에서 실행할 수 있습니다 (라인을 붙여 넣으십시오).

'컬러'비트를 주장 할 수 있는지 확실하지 않지만 모두 다르게 표현하고 있습니다.

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

APL 콘솔은 색상을 지원하지 않으므로 음영 처리 된 블록 문자를 사용했습니다 (다른 ASCII 아트를 지정하는 것은 문자열 시작 부분의 문자를 바꾸는 것만 큼 간단합니다).

글꼴에 따라 끊어지지 않은 원처럼 보일 것입니다.

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

또는:

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

165

코모도어 64 베이직

화면과 컬러 메모리에 직접 쓰기

프로그램

산출:

산출


스프라이트로이를 수행하는 방법은 다음과 같습니다.


1
환상적입니다. +1. 바이트 수를 얻을 수 있습니까?
Adam Maras

2
골프를 즐기고 싶다면 C64 BASIC에서 명령과 줄 번호를 축약 할 수 있습니다.
Gabriele D' Antona

15
이 답변에 대해 나를 귀찮게하는 유일한 것은 :이 아스키 아트는 어떻습니까?
Justin

10
이것은 PETSCII 예술입니다
Gabriele D' Antona

7
@Quincunx : PETSCII 는 CBM ASCII라고도하므로 자격이있을 수 있습니다. 다른 문자를 사용하여 그림을 그리는 데 사용하려면 (클래식 ASCII 아트처럼 보이게하려면) 100 행에서 160 (거꾸로 된 공간)을 42 (별표)로 바꾸면됩니다.
Heinzi

86

HTML Fiddle - 48 , 35 , 33 자 (감사합니다. @Dom 및 @cnst!)

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

산출:

여기에 이미지 설명을 입력하십시오


2
다음을 사용하여 더 많은 문자를 절약 할 수 있습니다. OOO<div style="margin:-10px 5px">OO대신 ... (하지만 블록이어야한다고 생각합니다 <div/>)
Dom Hastings

이것은 콘솔 출력이 아니기 때문에 프리 스타일 올림픽 대회에 더 좋습니다 : codegolf.stackexchange.com/q/19050/15168
CousinCocaine

@DomHastings : 좋은 전화! 답변 업데이트 :)
Briguy37

3
그렇다면 왜 귀찮게 대신 div사용할 수 있습니다 p!
cnst

2
@PygameNerd : "ASCII art"에 대한 정의에 따라 다릅니다. 예 : "ASCII 문자가 그림을 구성하도록 정렬 된 경우"입니다. 정의가 "고정 너비 텍스트 편집기의 ASCII 문자로 그림을 형성하는 경우"는 아닙니다. CousinCocaine이 말한 것처럼 콘솔에 출력되는지 여부에 대한 정의는 "키보드 또는 키, 스위치 등을 포함하는 컴퓨터의 제어 또는 모니터링 장치"입니다. 그런 다음 웹 브라우저 출력은 모니터와 콘솔의 일부입니다 (OP가 의도 한 것은 아니지만).
Briguy37

76

색상의 배쉬-271-20 = 251 – 얽힌 고리 사용; P

o='_4mGA  _0mGA  _1mG\n _4m/A \A _0m/A \\_1mA /A \\\n_4mD_3m---_0mD_2m---_1mD\n _4m\A_3m/_4m/A_0m\\_3m\\A_2m/_0m/A_1m\\_2m\A _1m/\n_4mG_3mD_0m---_2mD_1m---\n_3m   A\A /A _2m\A /_1m\n _3mA G  A_2mG\n';o=${o//D/|A   |};o=${o//A/    };o=${o//G/   ---};printf "${o//_/\\e[3}"

결과:

여기에 이미지 설명을 입력하십시오


그리고 그것의 재미위해 : 61-20 = 41.

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

여기에 이미지 설명을 입력하십시오


LZ77 버전 :

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

13
지금까지 많은 답변이 고리의 번갈아 겹치는 부분을 얻지 못하므로 점수가 약간 높더라도 공감할 가치가 있습니다.
피터 테일러

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

bash 버전이 유효하다고 생각합니다. OP의 어느 곳에서도 그래픽의 크기를 지정하지는 않지만 "V"모양의 고리를 수정해야합니다. 반지의 바닥에 물결표 (~)가 있을까요?
AmeliaBR

@ AlterLagos : 업데이트가 작동합니까?
Runium

@AmeliaBR : 그렇습니다. 그것의 재미를 위해 더 많은 것이었고, 진지한 의미는 아니 었습니다. 다양한 시도. 아마도 이것은 더 좋아하는 것입니까? x='54mO53m_50m052m_51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"– (여기서는 5가 약간 악합니다.) 또는 중복을 염두에두고이 방법이 더 나을 수도 있습니다. x='54mO53mA50m052mA51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"– 다른 것보다 더 복잡해 보일 수 있습니다.
Runium

76

ZX Spectrum 48K의 Sinclair BASIC (261 바이트)

기본 목록 :

기본 목록

최종 결과:

결과

프로그램 실행 및 코드 측정 :

프로그램 실행

텍스트 형식의 기본 목록 :

5 INK VAL "7": CLS 
10 LET a=VAL "42": LET b=VAL "131": LET c=VAL "40": CIRCLE INK SGN PI;a,b,c: CIRCLE INK PI-PI;a+a+a,b,c: CIRCLE INK VAL "2";VAL "210",b,c
20 LET a=VAL "84": LET b=VAL "87": CIRCLE INK VAL "6";a,b,c: CIRCLE INK VAL "4";a+a,b,c
30 FOR l=PI-PI TO VAL "21": FOR c=PI-PI TO VAL "31": IF ATTR (l,c)<>VAL "63" THEN PRINT INK VAL "8";AT l,c;"*"
40 NEXT c: NEXT l

DivIDE 또는 DivMMC를 사용하는 에뮬레이터 또는 실제 머신에 적합한 프로그램이 포함 된 TAP 파일 : http://www.zxprojects.com/images/stories/draw_the_olympics_flag.tap


17
나는 asciification 부분을 좋아한다 :)
Thorbjørn Ravn Andersen

1
사랑 스럽습니다!
pcnThird

Z80 스프라이트 그래픽의 사용은 간단합니다! PS는 색의 20 점을 뺍니다.
Tomas

일반 아트를 생성 한 다음 ASCII 아트를 만드는 것이 너무 더럽습니다. :)
undergroundmonorail

소스 코드를 복사 가능한 형식으로 포함시킬 수 있습니까?
Paŭlo Ebermann

44

그래서 실제로 제대로 읽지 못했습니다. ASCII 기술이므로 이것이 유효하지 않은 것 같습니다. 죄송합니다!


HTML 121 (141-20)

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

Chrome에서 :

이게 뭐야!  개미를위한 올림픽 깃발?

PHP 103 (123-20)

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

2
페널티없이 색상을 조금 더 가깝게 얻을 수 있습니다 : 파랑 : #06f, 노랑 : #fa0, 초록 :#193
으스스한 ossifrage

2
이것은 콘솔 출력이 아니므로 프리 스타일 올림픽 대회에 더 좋습니다 : codegolf.stackexchange.com/q/19050/15168
CousinCocaine

39

루비 : 198 자-20 = 178

a=[*0..9].map{[' ']*35}
d=->c,x,y=0{11.times{|i|7.times{|j|a[y+j][x+i]="^[[3#{c}m#^[[0m"if[248,774,1025,1025,1025,774,248][j]&1<<i!=0}}}
d[4,0]
d[0,12]
d[1,24]
d[3,6,3]
d[2,18,3]
$><<a.map{|r|r*''}*$/

( ^[단일 문자입니다.)

샘플 실행 :

올림픽 게임 로고


37

매스 매 티카-185

c[x_, y_] := 
 Table[Boole[Abs[(i - x)^2 + (j - y)^2 - 16] < 4], {i, 0, 15}, {j, 0, 
   30}]
MatrixForm@
 Replace[Blue c[5, 4] + Black c[5, 14] + Red c[5, 24] + 
   Yellow c[9, 9] + Green c[9, 19], {0 -> "", 
   c_ + _ | c_ :> Style["*", c]}, {2}]

여기는 출력입니다

여기에 이미지 설명을 입력하십시오

벡터 그래픽의 래스터 화를 기반으로하는 다른 버전

MatrixForm@
 Replace[ImageData@
   Rasterize[
    Graphics[{Blue, Circle[{4, 9}, 4], Black, Circle[{14, 9}, 4], Red,
       Circle[{24, 9}, 4], Yellow, Circle[{9, 4}, 4], Green, 
      Circle[{19, 4}, 4]}], ImageSize -> {30, 15}], {c_ :> 
    Style["*", RGBColor@c]}, {2}]

여기에 이미지 설명을 입력하십시오


2
당신은 가장 아름다운 출력에 대한 포인트를 얻습니다.
Michael Stern

잘 했어. 내 코드의 내 버전을 게시했습니다.
Mr.Wizard

34

포스트 스크립트, 203 (-20 = 183)

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

콘솔에 쓰지는 않지만 "ASCII 아트"로 간주합니다. 산출:

올림픽 반지

이것은 조금 더 골프를 칠 수 있습니다.


19
이것이 ASCII 아트라면 회전 된 별표를 사용하여 처음 본 것입니다.
TheBlastOne

2
나는 그것이 마지막이 아닐 것이라고 확신한다.
가명

25

Windows 명령 스크립트-112 % 바이트

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

100 % 올림픽 반지

그리고 물론, 필수 치트 버전-4 바이트

%~n0

다음으로 저장 :

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

10
BAT와 CMD에서 더 많은 답변이 필요합니다 :)
Einacio

21

펄 또 다른 시도, 130 120

이것을 도와주는 manatwork 덕분에

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

산출:

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

3
다음을 for대신 사용할 수 있습니다. 대신 4자를 사용하여 foreach; ()round sprintf()의 인수 를 제거하여 2 문자 ; hex의 매개 변수 를 제거하여 2 자 ; y///대신에 1자를 사용하여 tr///; 마지막을 제거하여 1 개의 문자 ;.
manatwork

@manatwork 감사합니다! 나는 전에도 들어 본 적이 없다 y///. 가서 찾아 봐
squeamish ossifrage

20

파이썬 : 157 개 140 138 133 122 107 문자

107

( manatwork 덕분에 )

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

샘플 출력 :

0001001000000001001000000001001000
0100000010000100000010000100000010
1000000001001000000001001000000001
0100000110000110000110000110000010
0001001000000001001000000001001000
0000000100000010000100000010000000
0000000001001000000001001000000000

157

print'\n'.join(['{0:b}'.format(o).rjust(39,'0') for o in [45099909288,137984246274,275230249985,276241138945,137984246274,45099909288,1078001920,352343040]])

122

(방금 이걸 시작했는데 개선하려고 노력할 것입니다)

h=lambda x:bin(int("15bb511iun9aqulod22j8d4 ho8skh  "[x::8],36))[2:].rjust(20)
for x in range(8):print h(x)+h(x)[::-1][1:]

더 나은 출력 : 120 자

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

샘플 출력 :

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

1
베이스 36은 어떻습니까? 140 자입니다 : print'\n'.join(['{0:b}'.format(int(o,36)).rjust(39,'0')for o in"kpvbkq0 1re099tu 3ifszg1t 3iwiuayp 1re099tu kpvbkq0 httbls 5trxmo".split()]). "더 나은 출력"버전과 관련하여 rjust()두 번째 매개 변수를 절약 할 수 있습니다 . (그리고이 글의 제목에“t”를 삽입하십시오.)
manatwork

나는 더 나은 해결책을 찾고 있었다.
evuez 2018 년

1
와 함께 좋은 개선 bin(). 근데 왜 그 str()주변 을 사용 합니까? bin()의 반환 값은 이미 str있습니다.
manatwork

3
다섯 번째 줄이 아니어야합니까 010000010100000101000101000001010000010? 아래쪽 두 개의 고리가 약간 부서져 보입니다.
squeamish ossifrage

@manatwork는 실제로 그것에 대해 생각하지 않았습니다!
evuez

17

펄, 177 (163)

Dom Hastings 덕분에 개선 된 버전 :

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

산출:

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

2
펄을위한 만세! 몇 가지 추가 절약 : "\n"as 를 사용 하는 대신 기본값을 사용 하면 리터럴 개행 문자 를 $r사용 하여 두 곳에서 더 많은 비용을 절약 할 수 있습니다. 대신을 사용하여 문자를 1 개 더 저장할 수도 있습니다 . 희망이 도움이됩니다! $/"\n"$s=$"x3$s=" "
Dom Hastings

15

C, 257 바이트

#include <stdio.h>
d(i,j){int r=35;float x=r,y=0;while(--r>0){char s[8]={29,(((int)y+j)/32)+32,(((int)y+j)%32)+96,(((int)x+i)/32)+32,(((int)x+i)%32)+64,31,'.',0};puts(s);x-=0.2*y;y+=0.2*x;}}main(){d(140,200);d(185,170);d(230,200);d(275,170);d(320,200);}

이것은 조금 더 골프되었을 수 있습니다.

이것은 Tektronix 4010 (또는 xterm -t와 같은 에뮬레이터)에서 실행해야합니다. 산출:

출력

이것은 모두 '.'이기 때문에 실제로 ASCII 예술입니다. 문자. 그리고 요청대로 콘솔에 출력합니다. 일부 Tektronix 에뮬레이터는 색상을 지원합니다. 광산은 그렇게 할 수 없었습니다.


12

자바 181 179 161 156 바이트

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

(jdk 1.7에서 컴파일하지 않음, 1.6 이하 필요)

출력 :

11100011111110001111111000111
10111110111011111011101111101
01111111000111111100011111110
10111100111001110011100111101
11100011111110001111111000111
11111101111101110111110111111
11111111000111111100011111111

확실히 승자는 아니지만 Java 입니다.


2
replaceAll()정규 표현식을 캡처하지 않고 일치하는 전체 부분을 다시 배치 하여 2자를 절약 하십시오 replaceAll(".{29}","$0\n"). (게시 된 코드에서 181자를
세면

1
한 가지 더 : import패키지 이름을 제거 하고 생성자 호출에 패키지 이름을 직접 입력하십시오. 크기가 161 자로 줄어 듭니다.
manatwork

로 변경 class M{static{...하여 다른 5 바이트를 절약 했습니다 enum M{M;{.... 다음 큰 단계는 BigInteger를 제거하는 것입니다. 가능합니까? String.format을 사용하여 마술을 시도했지만 아직 결과가 없습니다.
Yurii Shylov

12

하스켈, 200

main=mapM(putStrLn.map(\b->if b then '#' else ' '))$(map.map)(\(x,y)->or$map(\(n,m)->(<2).abs.(18-)$sqrt$(n-x)^2+(m-y*2)^2)$[(20,20),(60,20),(100,20),(40,40),(80,40)])$map(zip[0..120].repeat)[0..30]

산출:

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

골프 중 :

{-# LANGUAGE NoMonomorphismRestriction #-}

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

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

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

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

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

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

main = printOlymp

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

2
나는 map.map그것이 재미있게 들리기 때문에 여전히 웃고 있습니다. : D
Vektorweg

그것은 부풀어 오른 것 같습니다 ...
SamB

반지 또는 코드?
Vektorweg

나는 반지를 의미 :-)
SamB

11

루비, 9

p"\044"*5

#풍자

이 규칙은 예와 똑같이 보이지 않는 예술을 허용하지만 "인식 할 수있을 정도로 올림픽 반지를 충분히 표현 해야합니다 " .

이 올림픽 게임 로고 표현을 인식 할 수 있습니다.


웃긴 :) 시카고 사람으로서, 나는 그가 시장을 구애 할 때 시장이 본 것과 정확히 일치한다고 말할 수 있습니다!
Dean Radcliffe

밴쿠버 인 (2010 게임)으로서도 관련이 있습니다. :-)
대런 스톤

8
나는 내부 농담을 놓치고있는 것처럼 느낀다 :-P
Doorknob

2
@DoorknobofSnow 죄송합니다. 문자 코드에 대해 혼란 스러웠지만. 올림픽과 달러 기호를 연결하지 못하면 도와 드릴 수 없습니다.
AmeliaBR

8
출력은 다음과 같습니다
$
Roger

11

자바 스크립트-170 185 189 문자

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

산출:

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

두 번째 자바 스크립트-25 자

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

산출:

O O O 
 O O 

두 번째는 게으르다


1
당신은 절약 할 수 있습니다; “.”대신“4”를 구분 기호로 사용하고 숫자 4를 따옴표없이 split()매개 변수 로 사용하여 2 자 ; 마지막 2 ;초 를 제거하여 2 자 .
manatwork

위의 (현재) Firefox 전용 버전은 172 자로 더 줄일 수 있습니다 'kpvbkq041re099tu43ifszg1t43iwiuayp41sdk52824kpvbkq04httbls45trxmo'.split(4).map(x=>{a=parseInt(x,36).toString(2);console.log(' '.repeat(39-a.length)+a.replace(/0/g,' '))}).
manatwork

감사합니다, 당신의 제안을 추가, 나는 지금 브라우저 독립적으로 두겠습니다.
Eduard Florinescu

◯은 ascii ...
njzk2

@ njzk2 Yup, 해결 סּ_סּ
Eduard Florinescu

11

이진! (265 문자)

0001111100000000111110000000011111000
0100000001000010000000100001000000010
1000000001111100000000011111000000001
0100000011000011000001100001100000010
0001111100000000111110000000011111000
0000000010000001000001000000100000000
0000000001111100000000011111000000000

승리하기에는 너무 크지 만 최소한 멋져 보입니다!


매트릭스의 올림픽 로고.
user13107

뭐?
Dozer789

10

PHP-99 (-20?)

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

확실히 알아볼 수 있습니다. 내 "색상"이 중요하다고 말합니다. 밀접한 표현입니다.

마음에 들지 않으면 여기 있습니다

GolfScript-101 (-20?)

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

16
코드는 어디에 있습니까?
Undo

14
@Undo 즉 입니다 코드는 ;-)
손잡이

사실, 나는 PHP를 모른다. 그것이 내가 쓰는 방법을 알고있는 유일한 PHP 프로그램 / 스타일입니다. (물론 튜토리얼을 봤지만 잊어 버렸습니다).
Justin

2
PHP가 화면에 bbbb #### rrrr bb # #rrb ybyy g # gg r bbyb ## g # rrrr y yg g yyyy gggg로 나오지 않습니까?
Mr Lister

4
를 추가해야합니다. header("Content-Type: text/plain")웹 서버의 기본값은 text / html
Kroltan

10

배쉬 + ImageMagick : 163 자

e=ellipse
c=,10,5,0,360
convert -size 70x20 xc:black +antialias -stroke white -fill none -draw "$e 10,5$c$e 34,5$c$e 58,5$c$e 22,10$c$e 46,10$c" xpm:-|tr -dc ' .
'

샘플 출력 :

.

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

10

Perl 6 : 112 77 56 자, 75 바이트

say flip .ord.base(2).trans("01"=>" @")for"𜜜𢢢񃣡𦶲𜜜䔐㣠".comb
  • Unicde 현! (위의 문자열은 "\ x1C71C \ x228A2 \ x438E1 \ x26DB2 \ x1C71C \ x4510 \ x38E0"입니다)
  • .comb 문자열에 별도의 문자 목록을 제공합니다 (어쨌든 인수 없음)
  • .ord 문자에서 문자 코드 번호를 제공합니다
  • .base(2) 해당 Int의 base-2 인코딩으로 문자열을 반환합니다.
  • .trans 더 나은 가시성을 위해 숫자를 공백과 @로 바꿉니다.
  • flip 선행 0이 누락되면 도면이 엉망이되지 않도록 문자열의 문자를 반대로 바꿉니다.
  @@@ @@@ @@@
 @ @ @ @ @ @
@ @@@ @@ @
 @ @@ @ @ @ @@ @
  @@@ @@@ @@@
    @ @ @ @
     @@@ @@@

edit2 : qwote 단어 및 base-36로 인코딩 된 최신 솔루션

say flip :36($_).base(2).trans("01"=>" @")for<2HWC 315U 5XI9 3ESY 2HWC DN4 B8G>
  • <ABC DEF GHI> perl6의 인용 단어 구문이므로 문자열 목록을 얻습니다.
  • :36($_)base-36로 인코딩 된 문자열에서 Int를 만듭니다 $_( for루프 기본 변수)

편집 : 이전 솔루션에는 더 좋은 (복사 된) 그림이 있지만 더 길습니다.

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

10

매쓰 185 175

mathe가 10 바이트를 절약했습니다.

아래의 고리는 ASCII 'O'입니다.

Century Gothic에서 약간 반투명 한 문자 "O"는 글꼴 크기 = 145 프린터 포인트에서 5 번 인쇄되었습니다.

이것은 터미널 아트가 아닙니다. 그러나 그것은 완전히 아스키 아트의 위키 백과의 정의를 만족 http://en.wikipedia.org/wiki/ASCII_art을 .

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

올림픽 반지


2
이것은 콘솔 출력이 아니기 때문에 프리 스타일 올림픽 대회에 더 좋습니다 : codegolf.stackexchange.com/q/19050/15168
CousinCocaine

FontSize -> 제거 할 수 있습니다.
mathe

@mathe, True. 글꼴 크기를 사용하여 출력을 합리적인 크기로 만들었습니다.
DavidC

@DavidC 나는 당신이 대체 할 수있는 의미 FontSize -> 145145.
mathe

@mathe. 예! 감사.
DavidC

8

자바 스크립트 : 153 자

대수를 사용하여 실제로 원을 실제로 그릴 수 있는지 더 빨리보고 싶었습니다.

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

( c5 자 (x, y) 쌍의 배열이며, 원의 중심은 10 개의 문자를 저장하도록 평면화됩니다.)

산출:

1110000000111111111000000011111111100000001111
1000111110001111100011111000111110001111100011
0011111111100111001111111110011100111111111001
0011111111100000001111111110000000111111111001
0011111110000111000011111000011100001111111001
1000111100001111100001110000111110000111100011
1110000000111111111000000011111111100000001111
1111111100111111111001110011111111100111111111
1111111110001111100011111000111110001111111111
1111111111100000001111111110000000111111111111

159 문자 는 조금 더 읽기 쉽습니다.

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

산출:

   0000000         0000000         0000000    
 000     000     000     000     000     000  
00         00   00         00   00         00 
00         0000000         0000000         00 
00       0000   0000     0000   0000       00 
 000    0000     0000   0000     0000    000  
   0000000         0000000         0000000    
        00         00   00         00         
         000     000     000     000          
           0000000         0000000            

에서 167 개 문자 우리는 "색상"있다 :

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

산출:

   8888888         0000000         2222222    
 888     888     000     000     222     222  
88         88   00         00   22         22 
88         8844400         0066622         22 
88       4444   0044     6600   2266       22 
 888    4444     0004   6000     2226    222  
   8888888         0000000         2222222    
        44         44   66         66         
         444     444     666     666          
           4444444         6666666            

그리고 189 문자로 반지름을 r조정할 수 있습니다.

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

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


7

APL, 8 자 / 바이트 *

가장 적은 문자 수를 요구하는 답변이 있습니다 (결국 코드 골프입니다)

2 5⍴'○ '

산출:

○ ○ ○
 ○ ○ 

기호는 ○, APL 원 연산자입니다. ASCII 출력을 엄격하게 원할 경우 대신 'O'를 넣을 수 있습니다. 방금 APL 기호를 사용하는 것이 적합하다고 생각했습니다.


차기만을 위해 여기에 컬러 버전이 있습니다 (37 자-20 = 17 점).

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

출력 : 컬러 링 터미널 출력 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ * : APL 기호를 상위 128 바이트 값에 매핑하는 자체 (레거시) 단일 바이트 문자 집합으로
APL을 쓸 수 있습니다. 따라서 스코어링을 위해 ASCII 문자와 APL 기호 만 사용하는 N 문자 프로그램은 N 바이트 길이로 간주 될 수 있습니다.


7

CSS, 1176 922 855 771 바이트, -20 색상 보너스 = 751

html,head,title,body{display:block; color:transparent; font:bold 1em/1 monospace; height:0}
link,meta,style{display:none}
:before,:after{float:left; color:#000; white-space:pre;
content:'   @@@@@@@\A  @@@     @@@\A@@         @@ \A            @@\A@@         @@\A@@         @@\A  @@@     @@@\A    @@@@  @'}
html:before{color:blue}
title:before,title:after{color:blue; position:absolute; left:0; top:3em; content:'@@'}
title:after{color:red; top:7em; content:'                                   @@'}
head:after{color:red}
body:before{clear:left; content:'     '}
body:after,html:after{position:relative; top:-5em; color:#EC0;
content:'    @  @@@@\A   @@@     @@@\A  @@         @@\A  @@         @@\A  @@\A  @@         @@\A   @@@     @@@\A     @@@@@@@'}
html:after{color:#090}

CSS 만, 마크 업이 필요하지 않습니다. 여기서 마크 업없는 바이올린을 참조하십시오 : http://jsfiddle.net/XcBMV/12/

반지

컬러와 올바른 겹침.


6

펄-12 자

say"OOO\nOO"

좋아, 특히 예술적인 렌더링이 아닙니다. ;-)

약간 귀여움 :

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

6

GAS 어셈블리 16 비트 BIOS OL 로더 – 617-20 = 597

여기 길이에 미쳐가는 것만으로도 재미 있습니다.


많이로드되지 않지만 올림픽 게임 로고를 색상이 ASCII 인 ASCII로로드합니다.)

암호:

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

(Linux) MBR 이미지 빌드 및 추출

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

에뮬레이터에서 실행

(아직 가정용 컴퓨터에서 테스트하지 않았습니다 ...)

qemu-system-i386 olymp.img

결과

여기에 이미지 설명을 입력하십시오


4
외부 리소스를 극도로 사용하지 않는다는 생각이 들지 않습니까? +1
Adam Maras

@AdamMaras : 그렇습니다.;), 시도해야했습니다. 다음은 OS의 실제 부하를 통합하는 것입니다. 로더 II.
Runium

디스크에 이미 부트 섹터가 있다고 가정하고 (패딩과 함께) 55h AAh를 건너 뛸 수 있다고 가정하면 바이너리를 측정하면 어떻게 점수가 매겨 집니까?
SamB

@ SamB : 275 바이트, 255 pt이며 코드 부분은 약 91 바이트이고 변수 + 플롯 데이터는 184 바이트입니다.
Runium

5

TI 기본 (16 바이트)

참고 : TI-Basic은 토큰 화되어 있습니다. 내가 정확하게 기억 ClrHome하고 Disp1 바이트 토큰 이라면 .

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

터보 C ++ 3.0 컴파일러로 제작되었습니다.  시도한 코드를 가능한 짧게 만드십시오.


7
1) 마크 다운을 사용하여 코드 블록 을 표시 하고 게시 된 코드를 읽을 수 있도록 유지하십시오. 2) 이것은 코드 골프 도전이므로 코드 크기를 반드시 필요한 것으로 줄이십시오. 3) 사용 된 언어, 코드 길이 및 획득 한 점수를 지정 하여 답변에 제목을 추가하십시오 (보통 선호도에 따라 일부 마크 업으로 강조 표시됨 (일반적으로 헤더 1 또는 굵게 표시 )).
manatwork
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.