원형 경로에서 움직이는 단일 픽셀


45

이는 작업이 언어 별로 가장 짧은 코드를 제공하는 그래픽 출력 문제 입니다.

태스크

코드는 단일 자주색 픽셀 (16 진수 값 # 800080 또는 rgb (128, 0, 128))을 시계 방향으로 원을 그리며 그려야합니다. 서클을 완전히 돌아 다니려면 정확히 60 초가 걸리며 무한정 계속됩니다. 픽셀 이외의 다른 화면은 화면이나 창에 표시되지 않아야합니다. 원의 너비는 화면 또는 창 너비의 0.75 (적절하게 반올림) 여야하며 배경은 흰색이어야합니다. 바보 같은 솔루션을 방지하려면 화면이나 창의 너비가 100 픽셀 이상이어야합니다.

코드는 완전한 프로그램 이어야합니다 .

언어와 라이브러리

원하는 언어 나 라이브러리를 사용할 수 있습니다. 그러나 가능한 경우 코드를 테스트하여 우분투에서 코드를 실행하는 방법에 대한 명확한 지침을 제공 할 수 있다면 대단히 감사하겠습니다.

20 개 언어가 없습니다. 도움이 필요하다.

다음 20 가지 프로그래밍 언어에는 현재 솔루션이 전혀 없습니다.

  • C , C ++, C # , Python , PHP , Visual Basic .NET , Perl, Delphi / Object Pascal, Assembly , Objective-C , Swift, Pascal, Matlab / Octave , PL / SQL, OpenEdge ABL, R

목록

이 게시물의 맨 아래에있는 스택 스 니펫은 답변 a) 언어별로 가장 짧은 솔루션 목록으로, b) 전체 리더 보드로 카탈로그를 생성합니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

## Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

## Ruby, <s>104</s> <s>101</s> 96 bytes

헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .

## Perl, 43 + 2 (-p flag) = 45 bytes

언어 이름을 링크로 만들면 스 니펫에 표시됩니다.

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


1
원의 반경은 얼마입니까?
Timothy Groote

19
왜 픽셀이 자주색이어야합니까? TI-Basic과 같은 일부 언어에는 색상 기능이 없다고 가정합니다. 이는 꽤 임의의 이유로 도전에 사용할 수 없음을 의미합니다
Fatalize

1
@Fatalize는 바이트를 절약하기 위해 영리하고 창의적인 방법으로 프로그램에 색상을 넣을 수 없음을 의미하지는 않습니다.
Timothy Groote

3
@TimothyGroote TI-BASIC은 주로 검은 색 만 있습니다. 다른 모든 것은 오프 픽셀입니다. 색상이있는 C (SE) 계산기가 있지만 모두가있는 것은 아닙니다.
Conor O'Brien

10
화면에 자주색 셀로판을 배치해도 코드 크기가 바이트로 추가되지는 않습니다. 나는 그것이 vectrex를 위해 일했다는 것을 의미한다;)
Timothy Groote

답변:


23

처리 , 101 97 96 바이트

Flambino 덕분에 4 바이트 .

Kritixi Lithos 덕분에 1 바이트

float d;void draw(){background(-1);stroke(#800080);d+=PI/1800;point(50+cos(d)*38,50+sin(d)*38);}

필요한 애니메이션으로 기본 100 x 100 픽셀 창을 만듭니다.

출력 창

면책 조항 : 해당 이미지는 GIF가 아닙니다. 1 분 동안 쳐다 보지 마십시오.


2
60 초 규칙을 구현합니까?

2
@Lembik 예. 기본 프레임 속도는 60fps 이며 π/1800한 번에 각도 라디안을 증가시킵니다 . ( π/3600내 뇌 방귀 때문에 10 초 전)
PurkkaKoodari

5
@ Pietu1998 그 brainfart는 파이가 잘못
Cruncher

2
@Cruncher는 vi hart를 좋아해야합니다!
Tim

17
안녕하세요, GIF가 작동하지 않습니다. 잠시 동안 응시했지만 아무 일도 일어나지 않았습니다
Beta Decay

16

QB64, 79 바이트

QB64는 멋진 기능을 추가 한 QBasic 에뮬레이터입니다. 이 프로그램은 CLS,15바닐라 QBasic에서 지원하지 않는 하나 ( )를 사용합니다 .

SCREEN 7
DO
T=TIMER/9.55
PSET(COS(T)*75+99,SIN(T)*75+99),5
PLAY"c8"
CLS,15
LOOP

이것은 매우 시끄 럽습니다. PLAY화면을 지우기 전에 잠시 동안 실행을 중지 하는 명령을 사용합니다 . 그렇지 않으면 픽셀이 깜박이고 보이지 않게됩니다.

다운로드 QB64을 클릭,이 파일을로드 Run한 후와 Start.

여기 실제로 작동합니다.

프로그램

@DLosc의 답변에서 몇 가지 트릭 ( SCREEN 7대신 대신 SCREEN 13PSET대신 POKE)을 사용했기 때문에 크레딧이 필요합니다. 그의 답변에서와 같이 내 마젠타는 실제로 #8B008BOP에 의해 허용 된 것으로 간주됩니다.

(상수 9.55는의 근사치입니다 30/π = 9.54929658551. 충분히 가까워 졌습니까?)


하아! PLAY지연에 대한 사용 을 생각하지 마십시오 . 휴식을 취할 수있는 코드가 있다고 맹세 할 수는 있지만 지금은 도움말 파일에서 볼 수 없습니다. TIMER매개 변수로 (함수) 를 사용하는 것을 고려 했지만 더 짧은 지 확인하려고 시도하지 않았습니다. 명성!
DLosc

4
감사! 나는 너를 뻔뻔스럽게 들었다 PSET. 그래서 kudos back :) 그것은 휴식 n0보다 긴 것 같다 c. 또한, 나는 그것을 규칙 밴딩의 약간으로 좋아한다. OP는 창에 아무것도 보여줄 수 없다고 말했지만 내 프로그램이 크게 BEEP BEEP BEEP BEEP가 될 수 있다고 말한 적이 없다 .
Lynn

1
나는 경고음에 대해 아무것도 없지만 리눅스에서 시도 할 때 실제로 원 주위에서 움직이는 픽셀을 볼 수 없습니다.

1
여기 내 컴퓨터에서 작동하며 충분한 증거가되어야합니다.
Lynn

12
"여기에서 작동 중 " 이라고 말했기 때문에 이미지를 잠시 쳐다 봤습니다 .
mbomb007

14

자바, 449 443 439 바이트

항상 바보 같은 생각을했기 때문입니다. 자바의 골프처럼;).

import java.awt.*;import javax.swing.*;class F extends JFrame{F()throws Exception{setContentPane(new P());setSize(400,400);setVisible(0<1);for(;;Thread.sleep(100))repaint();}class P extends JPanel{double c;public void paintComponent(Graphics g){g.setColor(new Color(8388736));c=(c-0.1)%60;double t=0.104*c;g.fillRect((int)(180+Math.sin(t)*120),(int)(180+Math.cos(t)*120),1,1);}}public static void main(String[]x)throws Exception{new F();}}

편집 : 7 바이트 골프를위한 @ Ypnypn에 감사드립니다!

편집 2 : 3 바이트를 절약 한 @Franz D.에게 감사드립니다!


7
자바는 지금까지 가장 짧은 코드 경쟁

1
-멤버 변수를 0으로 초기화 할 필요가 없으므로 "c = 0"을 "c"로 변환하여 2 바이트 (~ 0.45 %)를 절약 할 수 있습니다.
Franz D.

1
그리고 16 진수로 색상을 초기화하여 1 바이트를 더 절약 할 수 있습니다 (예 : new Color (0x800080)).
Franz D.

1
@FranzD. 더 좋은 방법은 십진수를 사용하는 것 8388736입니다.
Ypnypn

1
을 제거 JFrame하고 use Frame를 사용하면 javax import를 제거 할 수 있습니다.
매직 문어 Urn

14

매쓰, 102 (101) 94 바이트

Animate[Graphics[{White,Disk[],{Purple,Point[{0,1}]}}~Rotate~-t],{t,0,2π},DefaultDuration->60]

숨겨진 흰색 원을 만들고 0에서 2π까지의 가장자리를 따르는 점을 배치합니다. Mathematica의 DefaultDuration옵션은 60 초마다 루프를 완료하도록 설정하겠습니다.

다음은 출력의 속도 향상 버전입니다.

편집 : 2 문자 저장으로 변경 Circle하고 시계 방향으로 이동하도록 Disk음수 부호를 추가했습니다 t.

편집 : ~연산자 를 사용하여 7 바이트 를 절약했습니다 (Mauris 덕분에).


14
Mathematica는 원하는 언어를 의미하는 모호한 영어 단어를 작성한 다음 문장 부호를 추가하는 프로그래밍 언어 일뿐입니다. (당신이 a~f~b대신 사용할 수 있다고 들었는데 f[a,b], Rotate짧아지지 않을까요?)
Lynn

1
접두사 표기법을 사용할 수도 있으며 Point@{0,1}주위에 목록이 필요하다고 생각하지 않습니다 Purple,Point....
Martin Ender

1
@ 마우리스. 훈련받지 않은 눈에 Mathematica는 실제로 막연한 영어 단어와 문장 부호처럼 보일 수 있습니다. 실제로, 이들은 구체적이고 잘 정의 된 기능, 설정 및 연산자의 이름입니다. 프로그래머가 아닌 사람이 실행 가능한 코드를 생성 할 수있는 가능성은 미지근하다.
DavidC

3
@David : Haha, 물론 알고 있습니다 – 나는 단지 농담을하고있었습니다 :)
Lynn

@Mauris, 당신은 나를 속였다!
DavidC

14

HTML 235 290 295 354 347 바이트

<a><style>*{position:absolute;margin:0;box-sizing:border-box}body{height:100vh;width:100vh}a{left:12.5%;top:50%;width:75%;height:1px;border-left:1px solid purple;animation:r 60s infinite linear}@keyframes r{100%{transform:rotate(360deg

.html파일 로 저장하고 Chrome 또는 Firefox와 같은 공급 업체 접두사가 필요없는 브라우저에서 엽니 다. 또는 이 바이올린을 사용해보십시오 .


이것은 회의 5 분 전에 쓴 첫 번째 시도보다 짧은 새 버전입니다. 캔버스의 새로운 크기는 뷰포트 높이를 기준으로 한 정사각형입니다. 그것은 꽤 잘 작동하며 정의 된 특정 높이로 제한되지 않습니다. 나는 도전의 설정 (부모의 75 % 크기, 자주색 및 1px)에 대해 매우 정확합니다. 따라서 다음 규칙을 삭제하거나 단순화 할 수 없습니다.

* { margin: 0; box-sizing:border-box; }
a { left: 12.5%; }

언 골프

이것은 깨끗한 마크 업 이 포함 된 ungolfed 버전입니다.

<!DOCTYPE html>
<html>

<head>
    <style>
        * {
            position: absolute;
        }

        body {
            margin: 0;
            height: 100vh;
            width: 100vh;
        }

        a {
            left: 12.5%;
            top: 50%;
            width: 75%;
            height: 1px;
            border-left: 1px solid purple;
            box-sizing: border-box;
            animation: r 60s infinite linear;
        }

        @keyframes r {
            100%{
                transform: rotate(360deg)
            }
        }
    </style>    
</head>
<body>
    <a></a>
</body>

편집

  • 7 바이트가 추가되었습니다 . 애니메이션에 기본 여유가 있음을 아무도 알지 못할 것이라고 생각했습니다. ;) linear지금 설정했습니다 .
  • 브라우저가 자동으로 처리하는 모든 중단을 던져서 59 바이트절약했습니다 .
  • 후행을 제거하여 3 바이트절약했습니다)}} . 칫솔 덕분 입니다.
  • 저장된 2 바이트를 사용 12%하는 대신 12px어느 부모 요소의 크기에 대응하는 동일한 값이다.
  • 대규모 리팩토링으로 55 바이트를 절약 하고 많은 주석을 고려했습니다. 모든 기여에 감사드립니다.

1
난 그냥 게시물에 댓글을 원했다, 나는 (하나의 제출을 위해 타이를) 순수한 HTML / CSS의 솔루션을보고 싶다
dwana

1
바이올린을 사용하면 움직이는 픽셀의 속도가 매우 고르지 않습니다. 픽셀이 맨 왼쪽에있을 때 거의 정지합니다. 어떤 아이디어가 있습니까?

1
@insertusernamehere :) ungolfed 버전을 지금 업데이트해야한다고 생각합니다.

5
유효성에 관계없이 가장 작은 작업 코드를 사용해야합니다. 글로벌 네임 스페이스를 오염시키는 것과 같은 것은 골프를 치는 동안 코스에 필적합니다.
John Dvorak

2
)}}끝에서 떨어질 수 있습니다 (CSS 파서가 자동으로 블록을 종료합니다)
칫솔

14

TI-BASIC, 44 바이트

제한된 기본 컬러 그래픽을 지원하는 TI-84 + CSE / CE 계산기 용.

AxesOff
ZSquare
While rand
Pt-Off(imag(Ans),real(Ans
7.5e^(-i6startTmr°
Pt-On(imag(Ans),real(Ans),13
End

여기의 색상은 자홍색 또는 색상 13입니다 ( MAGENTA토큰을 사용할 수도 있음 ).

내가 사용하는 rand대신 1픽셀이 표시 될 때 그것은 다시 꺼져있을 때 사이의 지연 (~ 15 밀리 초)의 작은 비트를 제공하기 위해 무한 루프 조건.

이 프로그램을 실행하기 전에 계산기를 라디안 모드로 설정하십시오. 기본 상태이기 때문에 크기로 계산하지 않습니다. Ans프로그램 앞에 0을 입력하여 0으로 설정 하십시오. 이것은 또한 기본값입니다.

이 프로그램을 테스트 해 주신 @quartata에게 감사드립니다 (컬러 계산기는 없습니다).


순진한 아이디어 : while 루프를 사용하는 대신 프로그램 호출 자체를 만들 수 있습니까?
Lynn

@Mauris while 루프는 3 개의 토큰이며, 프로그램 이름은 일반적으로 길다
TheDoctor

1
@Mauris While 루프는 실제로 4 바이트이며 3 회 재귀가 가능하지만 300 번 미만의 호출 후에 스택이 매우 빨리 소모됩니다.
lirtosiast

@Lembik [ codegolf.stackexchange.com/a/62203/39328] 사용하면 좋기 때문에 더 부드럽게 변경하지는 않습니다.
lirtosiast

13

자바 339 308 289 287 바이트

import java.awt.*;class F extends Frame{{setSize(200,200);show();}int c;public void paint(Graphics g){g.setColor(new Color(8388736));g.fillRect((int)(99+Math.sin(--c*.01)*75),(int)(99+Math.cos(c*.01)*75),1,1);for(int i=0;++i<62864;)paint();}public static void main(String[] x){new F();}}

@Peter Lenkefi 덕분에 훌륭한 솔루션으로 저를 시작했으며 for-loop를 뻔뻔스럽게 복사했습니다!

주요 절감 효과는 순수한 AWT로 전환하고 JPanel (또는 Canvas)이 필요하지 않은 Frame에서 직접 렌더링했기 때문입니다. 또한 카운터를 정수 변수로 만들고 간단한 증분으로 업데이트하고 여기 저기 숫자를 제거 할 수 있도록 상수를 조정하는 몇 바이트를 저장했습니다.

편집 : 의견에 대한 제안에 @Peter Lenkefi와 @tobii에게 감사드립니다. HTML을 능가하는 것은 좋을 것입니다-누구나 sleep ()을 사용하지 않고 예외를 잡을 필요없이 Java에서 실행을 안정적으로 일시 중지하는 방법을 알고 있습니까?

편집 2 : 자바 비트 HTML (현재 290 바이트!) : D 타이밍은 이제 기계에 따라 다르지만 내 기계의 전체 원에 대해 ~ 60 초입니다. @ Lembik에 따르면 괜찮습니다. 그의 제안에 대해 @PeterLenkefi에게 다시 감사드립니다-내 대답은 그의 절반 이상입니다 :)

편집 3 : @Ajay는 "repaint"에서 "re"를 제거하는 것이 좋습니다. 2 바이트가 적습니다. 우리는 거기에 도착하고 있습니다 :)


1
우리는 그것을 HTML 아래로
가져와야합니다

1
@ PeterLenkefi : 불행히도, 나는 캐스팅의 중괄호를 저장할 수 없습니다. sin / cos 결과를 캐스팅하면 계산이 직접 중단됩니다. paint () 안의 당신의 페인트 칠은 엄청나게 더럽습니다 :)
Franz D.

1
@Troyseph 나는 골프를 의미했다;) 나는 아무것도 자바를 사용하지 않는다.
Peter Lenkefi

1
in을 사용 int c,i하고 생략하면 더 많은 비용을 절약 할 수 있습니다. intfor(int i=..
Marco13

1
F에 대한 클래스 선언이 필요하지 않습니다 new Frame(){...}. Frame 클래스를 인라인으로 확장하면 됩니다.
Magic Octopus Urn

9

하스켈, 143136 바이트

광택 패키지를 사용합니다 .

import Graphics.Gloss
main=animate(InWindow""(100,100)(0,0))white$ \t->color(makeColor 0.5 0 0.5 1).rotate(t*6).translate 38 0$circle 1

더 예쁜 버전은

import Graphics.Gloss

purple :: Color
purple = makeColor 0.5 0.0 0.5 1.0

main :: IO ()
main = animate (InWindow "" (100,100) (0,0)) white $ \t ->
    color purple . rotate (t * 6) . translate 38 0 $ circle 1

공백을 제거 할 수 있습니다.
rightfold

@Elyse 참으로 감사합니다. 또한 불필요한 두 가지를 제거했습니다 .0.
Frerich Raabe

8

HTML (CSS?), 167 바이트

insertusernamehere의 답변에서 영감을 얻었습니다.

<style>body{position:fixed;left:50%;top:12%;width:1px;height:75vmin;border-top:1px solid #800080;animation:r 60s infinite linear}@keyframes r{to{transform:rotate(1turn

언 골프 드 :

body {
    position: fixed;
    left: 50%;
    top: 12%;
    width: 1px;
    height: 75vmin;
    border-top: 1px solid #800080;
    animation: r 60s infinite linear;
}
@keyframes r {
    to {
        transform: rotate(1turn);
    }
}


참고로 단지 HTML + CSS프로그래밍 언어로 간주되지는 않지만 OP에 달려 있습니다.
GamrCorps

1
Firefox 41.0.2에서는 아무것도하지 않습니다.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

1
Firefox 41.0.2, Win 10에서 방금 테스트했습니다.
Lachlan Arthur

1
우분투의 41.0.2에서 작동합니다.

1
+1 좋은 생각으로 body스스로 애니메이션을 만들 수 있습니다. :)
insertusernamehere

7

Q 기본, 106

SCREEN 7
COLOR 5,15
DO
t=TIMER
CLS
PSET(99+99*COS(i),99+99*SIN(i))
i=i+ATN(1)/75
1IF TIMER<t+.1THEN 1
LOOP

QB64 에서 테스트되었으며 Linux 버전이 있다고 말합니다 (Windows에서만 시도했지만).

  • SCREEN 7 그래픽 모드를 설정합니다.
  • COLOR 5,15 어두운 자홍색을 전경색으로 설정하고 밝은 흰색을 배경색으로 설정합니다.
  • DO ... LOOP무한 루프입니다. 일반적으로 그것을 DO WHILE ... LOOP(또는 LOOP WHILE대신 넣거나 UNTIL부정 조건에 사용할 수 있음) 볼 수 있지만 조건을 그대로두면 영원히 반복됩니다.
  • TIMER 부동 소수점 값으로 자정 이후의 시간 (초)입니다.
  • CLS = 클리어 화면.
  • PSET 기본적으로 색상, 전경색을 가리 킵니다.
  • i는 0에서 시작하여 루프를 통해 매번 pi / 300 씩 카운트하므로 600 회 반복 한 후 전체 원을 완성합니다. pi를 4 * arctan (1)로 계산합니다.
  • 마지막 줄은 0.1 초가 경과 할 때까지 기다립니다. QBasic 저서에서 배운 관용구는 t# = TIMER: WHILE TIMER < t# + 0.1: WEND입니다. 그러나 #0.1 초 차이 로 배정 밀도 숫자 (로 표시 ) 가 필요하지 않으며 IF cond THEN [GOTO] line구문이 WHILE ... WEND루프 보다 1 문자 짧습니다 .

루프는 60 초 동안 600 번 반복되어 완전한 원을 완성합니다.

경고

  • 진한 자홍색 인 색 5 #8B008B가 요청 된 대신 #800080(OP로 지워짐).
  • 화면 모드 7은 320x200이므로 원의 직경은 198이므로 너비의 0.75 이상은 아니지만 높이의 0.75 이상입니다 (OP로도 지워짐).
  • 이것을 DOS QBasic에서 실행하면 전체 화면이므로 "픽셀"은 실제로 모니터에서 단일 픽셀이 아닙니다 (320x200 모니터가없는 경우 제외). 그러나 충분히 가까워 야합니다. QB64는 정확한 치수를 사용하는 창에서 실행되므로 픽셀은 리터럴 픽셀입니다.
  • QB64에서는 최소한 완전히 회전하는 데 65 초 정도 걸립니다. 왜 그런지 모르겠습니다. 성공하지 않고 두 가지 모두 완화하려고 시도했지만 반올림 오류 또는 루프 오버 헤드 여야합니다. 이론적으로 코드는 그대로 작동해야합니다. 실제로, i회전이 60 초에 가까워 질 때까지 증가 하는 양을 조정할 수 있습니다 . (69 또는 68의 분모를 시도하십시오.)
  • 여기 예쁜 그림이 없습니다. :( LICEcap의 품질은 단일 픽셀을 정확하게 캡처하기에 충분하지 않았습니다.

이 코드는 Linux에서 완벽하게 작동합니다. 감사합니다.

이것은 실제로 QBasic 4.5에서 실행되지만 배경은 실제로 흰색 이 아닙니다 :). 컴파일 및 실행중인 GIF는 다음과 같습니다. codegolf.square7.ch/altqb.gif
mınxomaτ

@ mınxomaτ 홀수, 색상 15는 내가 생각한 모든 것에 따라 흰색 또는 밝은 회색을 나타내야합니다. SCREEN 8대신 무엇 을 7합니까?
DLosc

같은 녹색 배경. 그러나 사양에 따르면 흰색이어야합니다. 나는 또한 색상 7 (회색)을 시도하고 회색으로 나왔습니다. 따라서 귀하의 솔루션은 절대적으로 정상이지만 내 DOS에 문제가 있습니다.
mınxomaτ

7

mIRC 스크립트, 184 바이트

alias g {
window -p @m -1 -1 100 128
f
}
alias f {
inc %s 1
set %o $calc(%s *38/360)
clear @m
drawdot -r @m $rgb(128,0,128) 1 $calc($cos(%o)*38+50) $calc($sin(%o)*38+52)
.timer 1 1 f
}

이것은 와인의 mIRC에 최적화되어 있습니다. mIRC를 시작하고, 누른 Alt + R다음 붙여 넣기를하고 편집기를 닫고/g

시사

gif의 타이밍이 꺼져있을 수 있습니다.


이것은 나에게 새로운 것입니다! 애니메이션 GIF를 실행할 수 있다면 좋을 것입니다.

코딩에 관심을 갖거나 사용한 첫 번째 언어 중 하나였습니다!
Varis

6

R, 170 바이트

library(animation);for(i in 1:60){par(mar=rep(0,4));plot.new();t=2*pi*(1-i)/60;points(3*cos(t)/8+.5,3*sin(t)/8+.5,pch=19,col="#800080");ani.record()};repeat{ani.replay()}

package에 의존합니다 animation. 그리고 여기에 그것이 작동하는 것을 보여주는 gif가 있습니다 :

창에서

gif (139 바이트)로 잘못된 솔루션 저장 :

animation::saveGIF({for(i in 1:60){par(mar=rep(0,4));plot.new();t=2*pi*(1-i)/60;points(3*cos(t)/8+.5,3*sin(t)/8+.5,pch=19,col="#800080")}})

ImageMagick을 설치해야합니다. 결과는 gif로 저장됩니다.

! [둥근 둥글다


그러나 이것은 대단합니다. 도전 과제는 화면 / 창에 쓸 코드가 필요합니다.

아 이해가 안 돼
plannapus

2
여기는 창에 있습니다.
plannapus

6

신발이 든 루비, 159 바이트

Shoes.app{animate{background stroke white
fill purple
r=0.75*c=self.width/2
t=Time.now
m=Math
rect c+r*m.sin(a=(t.sec+t.usec*1e-6)*m::PI/30),c-r*m.cos(a),2,2}}

픽셀은 실제로 아날로그 시계의 초침의 끝입니다. 그래서 이것은 절대적으로 정확합니다.

신발이 담긴 루비, 134 바이트

m=Math
Shoes.app{animate{|f|r=0.75*c=self.width/2
background stroke white
fill purple
rect c+r*m.sin(a=f*m::PI/360),c-r*m.cos(a),2,2}}

이것은 다른 답변에서 영감을 얻은 초당 프레임 기반 대안입니다. 문서에 기본 fps가 10이라고 나와 있지만 실제 테스트에 따르면 실제로는 12입니다.

두 솔루션 모두 문자 그대로“원의 너비는 화면이나 창의 너비 인 0.75 (적절하게 반올림) 여야합니다”(창 너비를 기준으로 계산)로 픽셀이 사각형이 아닌 창의 아래쪽을 떠날 수도 있습니다. 그러한 사건이 어떻게 처리 될지 잘 모르겠습니다. (최소 너비 및 높이 사용? 타원 경로에서 걷기?) 창은 기본 600 x 500 크기로 시작하고 크기를 조정할 수 있습니다.


루비 솔루션을 보게되어 매우 기쁩니다! 이제 우리는 Python, Perl, ....이 필요합니다.

5

D, 286280 바이트

(정상적으로 기록 된 경우 339)

import simpledisplay,std.math;void main(){auto w=new SimpleWindow(100,100);auto c=50;auto r=c*2/3;int t;auto y=600/PI;w.eventLoop(50,{auto p=w.draw();p.clear;p.outlineColor=Color(128,0,128);p.drawPixel(Point(c+cast(int)(r*cos(t/y)),c+cast(int)(r*sin(t/y))));if(++t==1200)t=0;});}

또는 내가 골프를 쓰지 않고 처음으로 쓴 방식 :

import simpledisplay, std.math;

void main() {
        auto window = new SimpleWindow(100, 100);
        auto c = window.width/2;
        auto r = c*2/3;
        int t;
        float cycle = 20*60/(PI*2);
        window.eventLoop(50, {
                auto p = window.draw();
                p.clear;
                p.outlineColor = Color(128, 0, 128);
                p.drawPixel(Point(c + cast(int) (r*cos(t/cycle)), c + cast(int) (r*sin(t/cycle))));
                if(++t == 20*60)
                        t = 0;
        });
}

https://github.com/adamdruppe/arsd 에있는 simpledisplay.d 및 color.d에 따라 다릅니다.

이 두 개의 개별 파일을 다운로드하여 위 코드와 동일한 디렉토리에 넣은 다음 dmd yourfile.d simpledisplay.d color.d컴파일하고 실행하십시오.

내 작은 라이브러리는 이와 같은 빠른 애니메이션을 만들기 위해 작성되었으므로 이것이 강점을 잘 발휘합니다! 아아, 나는 긴 식별자 이름과 비슷하고 18 바이트 캐스팅을 추가 하는 Point생성자를 제공하지 않았다 float.


1
eventLoop btw의 첫 번째 인수는 밀리 초 타이머입니다. 0이 아닌 경우 자동으로 타이머를 만들고 해당 간격으로 제공된 인수가 0 인 함수를 호출합니다. eventLoop은 MouseEvent 또는 KeyEvent args를 사용하여 사용자 입력을 처리 할 수도 있습니다. 따라서 50 밀리 초 간격 = 초당 20 프레임이므로 20 * 60 = 60 초주기입니다.
Adam D. Ruppe

나는 당신이 리더 보드 코드가 280 대신 392를 선택하는 답변을 작성했다고 생각합니다.

5

C #, 379365 바이트

using System.Windows.Forms;using static System.Math;class P:Form{static void Main(){var f=new P();var p=new PictureBox();f.SetBounds(0,0,1000,1000);f.Controls.Add(p);f.Show();for(var i=0d;;i+=PI/3000){p.SetBounds((int)(Cos(i)*375+500),(int)(Sin(i)*375+500),1,1);p.CreateGraphics().Clear(System.Drawing.Color.FromArgb(-8388480));System.Threading.Thread.Sleep(10);}}}

에 따라 달라집니다 System.Windows.FormsSystem.Drawing실행합니다. 출력은 1000x1000 창에 있습니다.


사용하여 일부 바이트를 저장할 수var
pinkfloydx33

시스템 수학에서 정적 가져 오기를 사용하여 다른 바이트 저장
pinkfloydx33

시스템 네임 스페이스에서 코드를 선언하고 시스템에 대한 다른 모든 참조를 제거하고 10 바이트를 절약 할 수 있습니다.
Phaeze

5

SVG, 177 바이트

<svg><g transform=translate(75,75)><circle id=x r=.5 cx=56 fill=#800080><animateTransform xlink:href=#x attributeName=transform type=rotate to=360 dur=60s repeatCount=indefinite

지옥에서 아침 식사까지 유효하지 않은 마크 업이지만 적어도 Chrome에서 실행됩니다. HTML5 캔버스와 마찬가지로 SVG의 기본 크기는 300x150으로 표시되므로 이것이 가정합니다.

편집 : 으악, 내가 실수 있음을 고정 (6) 대신 (60)의 기간에 남아뿐만 아니라 찾았다가 0.5그냥 작품 .5, 바이트 수에 변화가 그래서.


5

X86 머신 코드 - 150 146 149 133 127 바이트

골프 버전 :

        00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
        --------------------------------------------------------------------
0000    B0 13 CD 10 BA C9 03 88 F1 BE 76 01 F3 6E B0 0F - °.Í.ºÉ.ˆñ¾v.ón°.
0010    49 68 00 A0 07 F3 AA 64 66 A1 6C 04 66 A3 80 01 - Ih. .óªdf¡l.f£€.
0020    64 66 A1 6C 04 66 2B 06 80 01 66 50 89 E5 D9 EB - df¡l.f+.€.fP‰åÙë
0030    D8 C0 DA 4E 00 DE 34 D9 FB BB 7D 01 DE 0F DE 47 - ØÀÚN.Þ4Ùû»}.Þ.ÞG
0040    FE DF 5E 02 DE 0F DE 47 FE DF 5E 00 5F 69 FF 40 - þß^.Þ.ÞGþß^._iÿ@
0050    01 58 01 C7 BB 88 01 8B 0F 39 CF 74 C3 30 C0 AA - .X.Ç»ˆ.‹.9ÏtÃ0Àª
0060    4F 89 3F 89 CF B0 0F AA 31 C0 FE C4 CD 16 74 B0 - O‰?‰Ï°.ª1ÀþÄÍ.t°
0070    B8 03 00 CD 10 C3 20 00 20 44 04 64 00 4B 00    - ¸..Í.Ã . D.d.K.

'Ungolfed', 소스 버전 :

; golfCrcl.asm
;
; - 16 bit implementation of an animated pixel that circumscribes a circle.
; - 127 bytes .COM file
;
;   - enhzflep -
;   31 Oct 2015 - initial
;               - set closest colour to desired #800080
;    2/3 Nov 2015 - removed unnecessary instuctions, used BX register to index mem by fpu
;               - removed .data section alignment, better register use in curPixel/lastPixel compares and calcs, reusing value of si after palette setting
[section .text]
[bits 16]
[org 0x100]
EntryPoint:
;   mov     fs, bx          ; bx is 0 on entry. Set fs seg register to this

    ; set graphics mode 320x200
    mov     al, 0x13
    int     0x10

    ; set colour #0 to be as close to the desired one as possible
    ; the vga palette registers are 6 bits by default (some models allow switching to 8 bits)
    ; therefore, we cant represent all of the 16.7m colours that we can in 24bit modes
    ; we're limited to 'just' 64*64*64 = 262,144 (256k) colours. Unfortunately, #800080 is not
    ; a colour we can represent exactly in mode13 or any other mode with 6 bit regs.
    mov     dx, 0x3c9
    mov     cl, dh
    mov     si, desiredCol
    rep     outsb                           ; cx now=0 and si now points to totalTicksNeeded

    ; clear the screen to white
    mov     al, 0x0f                        ; index of a colour thats already FF,FF,FF
;   xor     cx, cx                          ; cx = 0 - its zeroed by the rep outsb instruction above.
    dec     cx                              ; cx = FFFF
    push    word 0xA000                     ; segment of video memory
    pop     es                              ; pop it into es
    rep     stosb                           ; es:[di] = 0F, inc di, dec cx. If cx != 0 then repeat.

    ; setup the timing stuff
    mov     eax, [fs:0x046C]                ; 32 bit value updated at 18.2Hz by bios
    mov     [initialTicks], eax

.drawLoop:
    mov     eax, [fs:0x046C]                ; 32 bit value updated at 18.2Hz by bios
    sub     eax, [initialTicks]             ; eax = curTime-startTime (in increments of 1/18.2 of a second --- 182 = 10 seconds)

    push    eax                             ; number of elapsed clock ticks - ready to be loaded by fpu. Also stack space for calc result
    mov     bp, sp                          ; get pointer to last element pushed onto the stack
    fldpi                                   ; st0 = pi
    fadd    st0                             ; st0 = 2pi
    fimul   long [bp]                       ; (currentTick/requiredTicks) * 2pi
;   fidiv   word [totalTicksNeeded]
    fidiv   word [si]                       ; si still points to totalTicksNeeded after setting the palette earlier
    fsincos                                 ; st0 = cos(old_st0), st1 = sin(old_st0)

    mov     bx, radius
    fimul   word [bx]                       ;   fimul word [radius] -  cos(angle)*radius
    fiadd   word [bx-2]                     ;   fiadd word [origin] -  origin + cos(angle)*radius
    fistp   word [bp+2]                     ; ---- X-coord -------

    fimul   word [bx]                       ;   fimul   word [radius]
    fiadd   word [bx-2]                     ;   fiadd   word [origin]
    fistp   word [bp+0]                     ;  ---- Y-coord -------

    ;---------------
    pop     di                              ; calculated Y-coord
    imul    di, 320                         ; multiply it by the screen width
    pop     ax                              ; calculated X-coord
    add     di, ax                          ; di = x + (pixels_per_row * y_coord)

    mov     bx, lastIndex
    mov     cx, [bx]                        ; get the mem index for the last pixel
    cmp     di, cx                          ; check if we're indexing the same pixel as last time through the loop
    je      .drawLoop                       ; if so, return to start of loop - no need to delete and redraw the pixel in the same spot.

    xor     al, al                          ; col index 0
    stosb                                   ; draw our purple pixel
    dec     di                              ; stosb advanced di to the next pixel, undo this (stosb followed by dec di is still shorter than mov es:[di], al)
    mov     [bx], di                        ; save the pixel's mem address
    mov     di, cx                          ; restore index of pixel drawn last time through the loop
    mov     al, 0x0f                        ; pal index of white
    stosb                                   ; erase the last pixel

    ; check for a keystroke
    xor     ax, ax
    inc     ah
    int     0x16
    jz      .drawLoop                           ; loop if no keys pressed

.drawingDone:
    ; set text mode 80x25
    mov     ax, 0x3
    int     0x10

    ; program exit
    ret                                     ; Dos pushes a 0000 onto the stack and copies CD 20 to offset 0 of our code-seg
                                            ; before it invokes our program. ret jumps back to that CD 20 (int 0x20) instruction

; Since this is a .COM file, all program, data and stack exist in the same segment. 
; Using .text and .data sections only improves program readability - doing so only has minor effects on the binary produced.
;
; In this case, the assembler word aligns anything in the data section. This may have the effect of adding a padding byte,
; which we really dont need/want here. Data is machine-word aligned to improve the speed of access for the hardware. Machine-word
; is used to refer to the size of an int. In the case of 16 bit code, this will generally be 16 bits, 32 bit code has 32 bit words
; and so on. This code is 16 bit, so things should be aligned to word boundaries for maximum execution speed
;
;[section .data]
desiredCol          db  0x80/4, 0x00, 0x80/4        ; palette registers are only 6 bit.
totalTicksNeeded    dw  1092
origin              dw  100
radius              dw  75

; ticks/second = 18.2
; totalTime = 60 seconds
; totalTicks = 1092 (18.2 * 60)
; degreesPerTick = 360 / 1092 = 0.3296703
; timerTicksAddr = 0040:006C (0000:046C) dword
[section .bss]
initialTicks    resd    1
lastTickValue   resd    1
lastIndex       resw    1

다운로드 가능한 base64 인코딩 버전

data:application/octet-stream;base64,sBPNELrJA4jxvnYB826wD0loAKAH86pkZqFsBGajgAFkZqFsBGYrBoABZlCJ5dnr2MDaTgDeNNn7u30B3g/eR/7fXgLeD95H/t9eAF9p/0ABWAHHu4gBiw85z3TDMMCqT4k/ic+wD6oxwP7EzRZ0sLgDAM0QwyAAIEQEZABLAA==

이 주소를 복사하여 브라우저에 붙여 넣으십시오. 결과 파일의 이름을 바꾸고 golfcrcl.comDOS 환경, 즉 DosBox에서 실행하십시오.


대단해! 테스트되고 완벽하게 작동합니다.

1
오 스냅! 사용할 색상을 지정했으며 완전히 무시했습니다. : oops : 나중에 조금 고칠 게요. 색상 인덱스는 0x09 대신 0x5C 여야합니다. dosbox가 팔레트를 올바르게 설정한다고 가정하면 색상 1을 다시 매핑합니다.
enhzflep

4

매쓰 208 185 139 바이트

이미지로 사용 된 배열 주위에서 자주색 픽셀을 이동합니다.

방법 1 139 바이트

n=900;Dynamic@Refresh[t=DateValue@"Second";ReplacePixelValue[Image@Array[1&,{n,n}],
400{Cos[z=Pi/30t],Sin@z}+450->Purple],UpdateInterval->1]

방법 2 154 바이트

60 초 안에 원형 경로를 따라 픽셀을 플로팅합니다.

Dynamic@Refresh[t=DateValue@"Second";Graphics[{AbsolutePointSize@.01,Purple, 
Point[{Cos[z=Pi/30t],Sin@z}]},PlotRange->1,ImageSize->Full],UpdateInterval->1]

방법 3 193 바이트

이렇게하면 눈금과 레이블이 흰색으로 표시되고 초침이 픽셀 인 시계가 그려집니다.

Dynamic@Refresh[ClockGauge[AbsoluteTime[],TicksStyle->White, 
GaugeMarkers->{None,None,Graphics[{White,Disk[],Purple, 
AbsolutePointSize[.01],Point@{3,0}}]},PlotTheme->"Minimal"],UpdateInterval->1]

나는 기본 LTR 혼란을 볼 ...하지만 어쨌든, 당신은 사이의 공간을 제거 할 수 있습니다 30t.
LegionMammal978

4

OBJ-C ++ / 코코아, 777 678 668 657 643 628 바이트

#include <Cocoa/Cocoa.h>
float r;@implementation V:NSView-(void)drawRect:(NSRect)d{CGContext*c=(CGContext*)NSGraphicsContext.currentContext.graphicsPort;CGContextSetRGBFillColor(c,.5,0,.5,1);CGContextFillRect(c,(CGRect){cos(r)*38+50,sin(r-=pi/300)*38+50,1,1});[NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(x)userInfo:0 repeats:0];}-(void)x{self.needsDisplay=1;}@end
int main(){NSRect b={0,0,100,100};NSWindow*w=[[NSWindow alloc]initWithContentRect:b styleMask:1 backing:2 defer:0];[w orderFront:0];w.backgroundColor=[NSColor whiteColor];w.contentView=[[V alloc]initWithFrame:b];[NSApp run];return 0;}

그래서 이것은 아마도 최악의 방법 일 것입니다. 그러나 나는 시도 할 것이라고 생각했습니다.

g++ -framework Cocoa file.mm터미널과 함께 Mac에서 컴파일 (어쨌든 광산) 할 수 있습니다 ( ctrl-C앱이 아니기 때문에 종료하기 위해).

스크린 샷

편집 : 99 바이트 저장 : main()OS X 10.10 (첫 번째 버전은 10.8에서만 실행)에서 실행되도록 수정 하고 일반 삼각 계산을 위해 변환 / 회전을 건너 뛰고 창 배치 및 기타 작은 것들로 귀찮게하지 않았습니다.

편집 : 다른 10 바이트를 저장 : orderFront창을 표시하기 위해 변경되었습니다 . 그러나 실제로 창을 앞 창으로 만들지는 않지만 orderFrontAndMakeKey그렇게 하지 않았습니다 .

편집 : 다른 11 바이트를 저장했습니다. 건너 뛰고 NSMakeRect방금 가야했던 숫자를 찾았습니다.

편집 : 다른 14 바이트를 저장했습니다 : NSTimer인스턴스를 아무것도 할당 할 필요 가 없었으며 초기화 r를 0으로 건너 뛸 수 있습니다 .

편집 : 15 바이트를 더 저장했습니다. 멈출 수 없습니다. 도움을 보내십시오.


감사합니다. Obj-C ++는 현재 가장 짧은 코드 경쟁에서 확실한 승자입니다!

14
가장 애니메이션이없는 애니메이션 이미지 경쟁 에서 이기면 +1입니다 .
Lynn

4

자바 / Processingjs, 175 173 156 153 152 바이트

var s=256,e,h,m;void setup(){size(s,s);h=s/2;}void draw(){background(-1);m=-millis()*(PI/36000);stroke(h,0,h);e=s/2*0.75;point(h+sin(m)*e,h+cos(m)*e);}

실행하려면 http://www.openprocessing.org/sketch/226733 을 방문 하여 processing.js를 사용하여 작동하는지 확인하거나 processing.org에서 processing 2.0을 다운로드 하고 코드를 처리 IDE에 붙여넣고 Javascript 모드를 선택한 후 확인하십시오. 간다.


롤, 당신은 나보다 20 초 전에 프로세싱을 게시했습니다.
PurkkaKoodari

이 답변의 헤더가 잘못 되었습니까? 리더 보드에는 표시되지 않습니다.

1
그것을 놓쳤다, 나는 지금 그것에있다.
Timothy Groote

1
이제 60 초 요구 사항을 충족해야합니다
Timothy Groote

1
background(-1)이상의 바이트 짧은background(255)
Kritixi LITHOS

3

느릅 나무 , 274 바이트

import Color exposing (..)
import Graphics.Collage exposing (..)
import Time exposing (..)
main=Signal.map((\t->collage 200 200 [move(75*cos(-2*pi*t/60),75*sin(-2*pi*t/60))(filled(rgb 128 0 128)(circle 2)),outlined(solid black)(square 200)])<<inSeconds)(every(0.01*second))

브라우저에서 시도하거나 편집하십시오.

가져 오기를 제거하고 캔버스 주위에 윤곽선을 그리면 149 바이트로 줄어 듭니다만, 아마도 부정 행위 일 것입니다!


으악! 테스트하는 동안 참을성이
없었습니다

1
이것은 매우 좋고 기능적인 언어로 무언가를 얻는 것이 좋습니다. 이제 Haskell과 Scala 만 있으면됩니다!

2
@Lembik 난 그냥 하스켈 버전을 추가
Frerich 라베에게

3

C #, 301 바이트

using System.Windows.Forms;using System.Drawing;class P:Form{static void Main(){Application.Run(new P());}P(){Paint+=(o,e)=>{var g=e.Graphics;g.Clear(Color.White);g.TranslateTransform(150,150);g.RotateTransform(System.DateTime.Now.Second*6);g.FillRectangle(Brushes.Purple,105,0,1,1);Invalidate();};}}

기본 크기 메트릭에 따라 다릅니다. 여러 요인에 따라 크기와 위치가 약간 떨어질 수 있습니다. 끔찍하게 깜박일 수 있습니다. 이를 해결하려면 다음을 추가하십시오.

SetStyle(ControlStyles.OptimizedDoubleBuffer|ControlStyles.AllPaintingInWmPaint,true);

3

루아 + 로브, 189 자

t=0
m=math
l=love
g=l.graphics
function l.update(d)t=t+d end
function l.draw()a=t*m.pi/30
g.setBackgroundColor(255,255,255)g.setColor(127,0,127)g.point(400+225*m.cos(a),300+225*m.sin(a))end

love.update()이전 프레임 이후 경과 된 시간을 매개 변수로 수신합니다. 창 크기를 조정할 수 없으므로 고정 된 좌표로 기본 800 x 600 창을 그립니다.


첫 루아 답변! 감사합니다.

3

파이 게임 파이썬 2 +, 221 (198) 193

exec'from %s import*;'*3%('math','pygame','time')
_,p,D=[255],128,display
S=D.set_mode(_*2)
while 1:S.fill(_*3);S.set_at(map(lambda f:int(p+f(pi*(time()%60)/30)*96),(cos,sin)),(p,0,p));D.flip()

1
파이썬 굉장한!

이제 우리는 파이썬 + 거북이 솔루션 만 필요합니다.

3

C (사용 SDL1.2) 237 233

#include <SDL.h>
#define P(f)(int)(128+96.0*f(3.14*((int)(.001*SDL_GetTicks())%60)/30))
main(){SDL_Surface*s=SDL_SetVideoMode(255,255,32,0);while(1){int*p=s->pixels;memset(p,255,260100);p[P(cos)+s->w*P(sin)]=0x800080FF;SDL_Flip(s);}}

컴파일 및 실행 gcc -I/usr/include/SDL snippet.c -lSDL -lm && ./a.out


대단해! 아무도 안 할 줄 알았는데

2

ActionScript 2.0, 151 바이트

불행하게도, 어도비 플래시 그것이 VM 또는 와인 (심지어는 와인과 함께, 그것은 단지없이 리눅스에서 작동하지 않는 프리웨어하지 않고, 구글 정보 용 주로 작동). 그래도이 작업에서 얼마나 잘 수행되는지보고 싶었습니다. 잘, 그것은 밝혀졌다.

createEmptyMovieClip("p",0)
p._x=p._y=r=200
p.beginFill(0x800080)
p.moveTo(r,0)
p.lineTo(r-1,0)
p.lineTo(r,1)
onEnterFrame=function(){p._rotation+=.25}

기본 아이디어 : 새 무비 클립 객체를 만들고 (200, 200)에 배치 한 다음 200 픽셀 더 오른쪽에 점 2 를 그립니다 . 이제 무비 클립의 너비는 200 픽셀이고 높이는 1 픽셀입니다. 피벗 포인트는 시작한 원래 좌표이므로 _rotation속성 을 수정 하면 점 (200, 200) 주위에서 원이 움직입니다. 편리하게도 _rotation각도입니다. 0.25도 / 프레임 * 24 프레임 / 초 * 60 초 / 분 = 360도 / 분.

Flash가있는 경우 처음부터 실행하려면 새 Flash 문서를 만들고 1 액션 패널을 열고 위 코드를 붙여 넣습니다. 기본 흰색 배경, 550x400 캔버스 및 24fps를 가정하면 추가 사용자 정의가 필요하지 않습니다. Ctrl-Enter를 누르고 이동하십시오.

Flash 자체가없는 경우에도 최신 브라우저와 함께 제공되는 무료 Flash Player를 사용하여 결과를 계속 볼 수 있습니다. 여기 에서 SWF 파일을 다운로드 하십시오 . 재생할 수없는 경우 동일한 디렉토리에있는 SWF 파일을 사용 하여이 HTML 페이지 를 다운로드 하여 열어보십시오.

1 어떤 유형의 새 파일을 만들 것인지 물으면 "Flash 파일 (ActionScript 2.0)"을 선택하여 Adobe Flash CS4 Professional에서 테스트했습니다.

2 실제로 확대하면 충분히 작은 삼각형이 나타납니다. 내가 점을 그리는 가장 골프적인 방법이었습니다.


2

jQuery와 자바 스크립트, 205 바이트

y=75;with($('<canvas/>').appendTo(document.body)[0].getContext('2d')){fillStyle='#800080';translate(y,y);(f=function(){clearRect(-y,-y,y*2,y*2);fillRect(0,56,1,1);rotate(Math.PI/300);setTimeout(f,100)})()}

jsfiddle , 아래 스 니펫

이것은 아마도 책이 아닐 수도 있습니다. 캔버스의 기본 크기 (최소한 Chrome에서)는 300x150이므로 원을 75x75에 가운데에 놓았습니다. 150x75를 중심으로하고 반경을 113px (너비의 ~ 75 %)로 만들 수 있지만 때로는 캔버스 외부에있을 것이므로 대신 ~ 75 %의 높이를 선택했습니다.

하지만 어쨌든 짧지 않기 때문에 meh '


2

블리츠 2D / 3D , 126 바이트

Graphics 180,180
ClsColor 255,255,255
Color 128,0,128
While 1
Cls
ang#=ang+3
Plot 90+67*Cos(ang),90+67*Sin(ang)
Delay 500
Wend

불행하게도이 언어는 Windows에서만 지원됩니다 ( 와인에서 실행될 수는 있지만 ).


2

자바 스크립트 ES6, 202 바이트

a=0;with((D=document).body.appendChild(D.createElement`canvas`).getContext`2d`)with(Math)setInterval((f=t=>t(a+=PI/6e3)*60+75)=>fillRect(f(cos,clearRect(0,0,150,150),fillStyle=`#800080`),f(sin),1,1),10)

Firefox 41에서 테스트되었습니다.

다른 (거의) 순수한 자바 스크립트 답변과 마찬가지로 캔버스 요소의 기본 크기는 HTML 사양에 의해 정의 된 300x150이므로 원은 75x75에 중심을 둡니다.


2

MATLAB, 141 136

렘 비크 (Lembik)를 위해이리스트를 제출하여 전체 목록을 작성합니다.

v=-100:100;
[y,x,m]=ndgrid(v,v,0);
n=75;
while 1;
    pause(1);
    c=m;
    c(x+i*y==round(n))=1;
    imshow(c);
    colormap([1,1,1;.5,0,.5]);
    n=n*exp(pi*i/30);
end

구 버전:

v=-100:100;
[x,y,m]=ndgrid(v,v,0);
while 1;
c=m;
c(x+i*y==round(75*(-1)^(s/30)))=1;
imshow(c);
colormap([1,1,1;.5,0,.5]);
s=mod(s-1,60);
pause(1);
end
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.