심장 그래프 그리기 / 플롯


45

당신의 도전은 아래 마음 중 하나를 그리거나 그리는 것입니다. 크기는 50x50 픽셀 이상이어야합니다 (벡터 그래픽은 정상입니다). 어떤 하트를 그리거나 플롯 할 것인지 선택할 수 있습니다. 축, 격자 선 등이 허용됩니다. 이 있어야합니다 적어도 그래프 (100) 별개의 좌표 / 포인트. 원한다면 마음에 색을 채울 수 있습니다.

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

방정식은 다음 중 하나입니다.

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

또는

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

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

t범위 안에 있습니다 [-1, 1].

또는

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

또는

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

이것은 이므로 바이트 단위의 가장 짧은 코드 (각 언어)가 이깁니다. 출력물을 제공하십시오 (또는 온라인 통역사 링크).

답변:


66

TI-80 기본, 45 43 41 39 바이트

LBL 1
RAND4-2->X
RAND4-2
IF (X²+ANS²-1)³<X²ANS³
PT-ON(X,ANS
GOTO 1

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

시간이 오래 걸리고 배터리가 부족하여 계속 가고 싶지 않습니다.

나는 두 번째 방정식을 사용하려고 시도했지만 실제로 작동하도록수 없었 으므로 실제로는 더 긴 것으로 나타났습니다.

편집 : 방금 50x50 픽셀 요구 사항을 알았습니다. 불행히도 화면의 높이는 47 픽셀이므로 불가능합니다.


1
실제로 창조적!
dalearn

8
그것은 오랜만이야,하지만 당신은 대체 할 수 IF (X²+ANS²-1)³-X²ANS³<0와 함께 IF (X²+ANS²-1)³<X²ANS³?
wchargin

아, 나는 그것을 생각하지 않았다 믿을 수 없어! 감사합니다
12Me21

45

펄, 86 바이트

$y=1-$_/25,say+map$y**3*($_*=$_/1e3)-($_+$y**2-1)**3>0?$|--?v60:3:$",-40..40for-6..50

로 실행하십시오 perl -E.

첫 번째 방정식을 사용하여 채워진 ASCII 하트를 플로팅합니다. x 축은 ~ 1.265의 계수로 확장됩니다. 이는 터미널 글꼴이 일반적으로 수평보다 수직으로 훨씬 크다는 사실을 방지하기위한 것입니다.

산출:

                3<3<3<3<3<3<3<                   3<3<3<3<3<3<3<                 
              3<3<3<3<3<3<3<3<3<3<           3<3<3<3<3<3<3<3<3<3<               
            3<3<3<3<3<3<3<3<3<3<3<3<       3<3<3<3<3<3<3<3<3<3<3<3<             
          3<3<3<3<3<3<3<3<3<3<3<3<3<3<   3<3<3<3<3<3<3<3<3<3<3<3<3<3<           
         3<3<3<3<3<3<3<3<3<3<3<3<3<3<3< 3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<          
        3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3 <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<         
       3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3        
      <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<       
      3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3       
     <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<      
     3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3      
    <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<     
    3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3     
    <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<     
    3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3     
    <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<     
   3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3    
   <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<    
    3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3     
    <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<     
    3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3     
    <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<     
    3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3     
     <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<      
     3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3      
     <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<      
      3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3       
      <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<       
       3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3        
       <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<        
        3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3         
         <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<          
         3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3          
          <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<           
           3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3            
            <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<             
             3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3              
              <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<               
               3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3                
                <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<                 
                 3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3                  
                  <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<                   
                   3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3                    
                     <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<                      
                      3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3                       
                       <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<                        
                         3<3<3<3<3<3<3<3<3<3<3<3<3<3<3                          
                           <3<3<3<3<3<3<3<3<3<3<3<3<                            
                            3<3<3<3<3<3<3<3<3<3<3<3                             
                              <3<3<3<3<3<3<3<3<3<                               
                                3<3<3<3<3<3<3<3                                 
                                  <3<3<3<3<3<                                   
                                    3<3<3<3                                     
                                     <3<3<                                      
                                       3                                        

설명 (OP가 요청한 이후) :

condition := $y**3*($_*=$_/1e3)-($_+$y**2-1)**3>0

이것은 단순히 첫 번째 방정식으로, 짧게하기 위해 약간 재정렬되었습니다. $ y는 수식에서 y를 직접 나타냅니다. $ _는 처음에 x에 비례하지만 x (x)에 곱하여 $_*=$_/1e3x²에 비례합니다. x²은 수식에서 두 번 사용되므로 몇 바이트가 절약됩니다.

1e31000을 의미하며 짧고 결과가 좋아 보이기 때문에 선택되었습니다. ** Perl의 전력 운영자입니다. 나는 채워진 마음을 원 하기 >0보다는 오히려 사용 ==0합니다.

flip_flop := $|--?v60:3

v60은 ASCII 코드 60 : '<'으로 문자를 표시하기 위해 구식 버전 문자열 구문을 남용합니다.

$ | 0 또는 1 만 가능한 마법 변수입니다. 이미 0 인 경우 감소하면 1로 설정됩니다. 1 인 경우 감소하면 자연적으로 0으로 설정됩니다. 따라서 $ |-는 종종 플립 플롭으로 사용됩니다. 평가되고 true와 false가 교대로 나타납니다.

전체적으로이 표현식은 대안 적으로 '<'와 3을 반환합니다.

inner_loop := <condition> ? <flip_flop> :$"

중첩 된 삼항. 조건이 거짓이면 (→ 우리는 마음 밖에 있습니다) $ "로 평가합니다. 기본 변수는" "(단일 공간)으로 기본 설정되는 마법 변수입니다. 조건이 참이면 (→ 우리는 마음 안에 있습니다) flip_flop를 평가합니다.

outer_loop := say+map <inner_loop> ,-40..40

$ _ (Perl의 "default"변수)가 -40에서 40으로 1 씩 증가하면서 inner_loop를 반복적으로 평가합니다. 평가 결과를 임시 목록으로 수집 한 다음 연결하여 모두 새 줄로 끝나도록 인쇄합니다. .

$y=1-$_/25, <outer_loop> for-6..50

이것은 $ 4가 1.24 (1-(-6/25))에서 -1 (1-50 / 25)로 0.04 씩 감소하면서 outer_loop를 반복적으로 실행합니다.

y를 25로 나누고 x²을 1000으로 나누면 x를 sqrt (1000)로 나누는 것과 같습니다. 내가 언급 한 ~ 1.265 요소는 sqrt (1000) / 25입니다.


5
허, 나는 그것이 어떤 규칙을 위반하지 않는 것 같아요 ... 내가 가장 좋아하는 것 :) 나는 비록 설명을 좋아합니다 :)
Stewie Griffin

1
뭔가 혼란 스러워요. 왜 "v"위에? v60을 사용합니까?
Nic Hartley

길이는 같지만 입력하기 쉽습니다.
Grimmy

마음으로 만든 마음.
TheWanderer

34

Mathematica WolframAlpha, 17 15 13 11 바이트

Martin Ender 덕분에 2 바이트를 줄였습니다 (첫 번째 하트 커브-> 하트 커브 1)

Martin Ender (심장 곡선 1-> heartcurve1) 덕분에 2 바이트 더 줄였습니다.

이것은 아마도 부정 행위 일 것입니다 (명확한 해결책).

heartcurve1

여기 사용해보십시오!

Wolfram이 여전히 받아 들일 수 있도록 1, 심장 또는 곡선을 줄이는 방법이 있다고 확신합니다. 글쎄요, 지금은 공간이 없습니다. 어쩌면 마음의 약자입니까?

그중 2 개를 꾸미면 보너스 포인트가 있습니까?

heartcurves

여기서 시도하십시오!


5
heart curve 1
Martin Ender 2012

6
실제로 heartcurve1작동합니다.
Martin Ender 2012

23
@MartinEnder 세계에서 무엇
Thunda

1
heartcurves의 첫 번째는 엉덩이처럼 보이지만
Mikhail V

@ MikhailV 0th heartcurve (cardoid)는 엉덩이처럼 보입니다.
Thunda

29

매스 매 티카, 52 바이트

RegionPlot[(x^2+y^2-1)^3-x^2y^3<0,{x,-2,2},{y,-2,2}]

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

우리는 하나의 바이트를 더 절약 할 수 ContourPlot있지만 배경은 약간 비뚤어집니다.

ContourPlot[(x^2+y^2-1)^3-x^2y^3,{x,-2,2},{y,-2,2}]

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

하나의 추가 바이트에 대해서는 네 번째 공식을 PolarPlot대신 사용할 수 있습니다 .

PolarPlot[(x=Sin@t)Abs@Cos@t^.5/(x+7/5)-2x+2,{t,0,7}]

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


23
"A 비트 trippy는"... 삼가의 비트 인
Mego

ContourPlot은 OCD를 너무 많이 트리거합니다. 아 아아아! : D
KeyWeeUsr

25

카시오 FX-7700GH, 21 바이트

sin θ √ Abs cos θ ÷ ( sin θ + 7 ÷ 5 ) - 2 sin θ + 2

이름이없는 그래프 함수는 극좌표 그래프 함수 슬롯 중 하나에 입력 된 다음 주석에서 말하는 것을 수행합니다.

그래프 범위는 수동으로 설정해야합니다 (현재 설정 범위에 맞지 않는 한),로 설정했습니다 Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1.

다른 Casio Power Graphic Series 계산기 및 나중에 Casio 그래픽 계산기에서도 작동해야합니다.

Casio fx-7700GH 계산기로 그린 하트 (그래 나는 꽤 늙고 먼지가 많다)


18

MATLAB / 옥타브, 31 바이트

ezplot('(x^2+y^2-1)^3-x^2*y^3')

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


9

SmileBASIC, 85 81 바이트

X=RNDF()*4-2Y=RNDF()*4-2GPSET X*50+99,Y*50+99,-(-X*X*Y*Y*Y>POW(X*X+Y*Y-1,3))EXEC.

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


9

데스 모 , 20 16 15 바이트

V 2 :

xx) .3 y = xx + yy-1

(= xx)^.3y=xx+yy-1)

V 1 :

xx + yy-1) 3 = xxy 3

V 0 :

(x2+y2-1)3=x2y3

xxx^2
12Me21

@ 12Me21, 오 훌륭합니다, 고마워요!
다니엘

바이트 수가 잘못되었습니다. 추가 줄 바꿈이 있습니다.
Rɪᴋᴇʀ

@Riker, 나는 그것이 어떻게 잘못되었는지 보지 못한다. 줄 바꿈이 어디에 있습니까?
다니엘

imgur.com/a/4eTyt V2는 14 바이트입니다.
Rɪᴋᴇʀ



6

SageMath, 66 바이트

polar_plot(sin(x)*abs(cos(x))^.5/(sin(x)+7/5)-2*sin(x)+2,(0,2*pi))

온라인으로 사용해보십시오

불행하게도, 긴 이름 implicit_plot과 전자에 대해 parametric_plot암시 적으로 정의 된 것 이외의 변수를 정의 할 필요가 x있기 때문에 처음 세 가지 옵션을 고려하기에는 너무 길다.

busukxuan과 Andrea Lazzarotto에게 감사합니다.


1
^.5대신에 작동 합니까 **.5?
busukxuan

1
@busukxuan Nope. Sage는 Python을 기반으로하며 ^XOR입니다.
Mego

1
그러나 세이지는로 대체 ^됩니다 **. 그것이.
busukxuan

@busukxuan Sage는 Python의 전원 표기법 ( **)을 사용합니다. 를 사용하려고 ^하면 경고와 잘못된 결과가 나타납니다.
Mego

1
@AndreaLazzarotto 그럼 분명히 내 기억에 결함이 있습니다. 감사.
Mego

6

C, 137133 바이트

p;float x,y,f;v(){for(p=4e3;p;x=(float)(p%99-50)/35,y=(float)(p/40-45)/40,f=x*x+y*y-1)putchar(p--%99?f*f*f-x*x*y*y*y<1e-3?35:32:10);}

http://codepad.org/zqqYUui8

@AlbertRenshaw 덕분에 2 바이트를 더하기 위해 100을 99로 바꿨습니다.


1
+1; 나는 v기능, 좋은 감각을 사용하는 것을 좋아합니다 . 당신은 대체하여 2 바이트를 면도 수 40004e3및 교체 0.001와 함께1e-3
알버트 렌쇼

6

젤리 , 31 바이트

*3×
²+’*3<çị⁾* 
25µNr÷21µ²ç@þUY

온라인으로 사용해보십시오!

또는 fill 대신 35 바이트를 사용하여 중간 바이트 를로 변경하십시오 .*²+’*3<ç×9829Ọ»⁶

          ♥♥♥♥♥♥♥♥♥♥           ♥♥♥♥♥♥♥♥♥♥          
        ♥♥♥♥♥♥♥♥♥♥♥♥♥♥       ♥♥♥♥♥♥♥♥♥♥♥♥♥♥        
      ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥      
     ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥     
     ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥     
    ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥    
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
    ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥    
    ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥    
     ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥     
     ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥     
      ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥      
      ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥      
       ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥       
        ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥        
        ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥        
         ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥         
          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥          
           ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥           
            ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥            
             ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥             
              ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥              
               ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥               
                 ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥                 
                  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥                  
                   ♥♥♥♥♥♥♥♥♥♥♥♥♥                   
                     ♥♥♥♥♥♥♥♥♥                     
                      ♥♥♥♥♥♥♥                      
                        ♥♥♥                        
                         ♥                         

어떻게?

구현 : 방정식51 x 51 개 이상의 줄 바꿈으로 구분 된 문자 그리드.

*3× - Link 1: y, xSquared
*3  - cube y
  × - multiply the result by xSquared

²+’*3<çị⁾*  - Link 2: y, xSquared
²           - square y
 +          - add xSquared to the result
  ’         - subtract one
   *3       - cube the result
     <      - less than? (1 if True, 0 if False)
      ç     -     the result of the last link (1) as a dyad: f(y, xSquared)
       ị    - index into (1-based):
        ⁾*  - the string "* " (there is a trailing space on this line)

       ×9829Ọ»⁶ - alternative ending of link 2
       ×9829    - multiply (vectorises) by 9829
            Ọ   - cast to character (vectorises) (9829 is the ♥, 0 is the null-byte)
             »  - maximum (vectorises) of that and:
              ⁶ -     space character (ordinal of space is 32, greater than the null-byte, less than ♥)

25µNr÷21µ²ç@þUY - Main link: no arguments
25              - 25
  µ             - monadic chain separation call that i
   N            - negate i
    r           - inclusive range(negated i, i) -> [-25, -24, ..., 24, 25]
     ÷21        - divide by 21 (vectorises) -> [-1.1904761904761905, -1.1428571428571428, ..., 1.1428571428571428, 1.1904761904761905]
        µ       - monadic chain separation call that r
         ²      - square r (vectorises) (make the xSquared values, left to right)
             U  - upend r (make the y values, top to bottom)
            þ   - outer product using:
          ç@    -     last link (2) as a dyad with reversed arguments: f(y, xSquared)
              Y - join with line feeds
                - implicit print

5

자바 스크립트 (ES6), (151) 147 바이트

document.write`<canvas id=c>`;for(i=0;x=2-i/24,i<97;i++)for(j=0;y=2-j/24,z=x*x+y*y-1,j<97;j++)z*z*z-x*x*y*y*y<0&&c.getContext`2d`.fillRect(i,j,1,1)

편집 : @ user2428118 덕분에 4 바이트가 절약되었습니다. 143 바이트 용 ES7 버전 :

document.write`<canvas id=c>`;for(i=0;i<97;i++)for(x=2-i/24,j=0;j<97;j++)x*x*(y=2-j/24)**3-(x*x+y*y-1)**3>0&&c.getContext`2d`.fillRect(i,j,1,1)


방법에 대한 y**3대신 y*y*y?
svarog

1
@ svarog 따라서 내 노트 "ES7에서 약간 짧을 것입니다"...
Neil

글쎄, 그것은 크롬 55에서 작동하므로 es7 버전을 추가하지 않는 이유는 무엇입니까?
svarog

1
@ svarog 크롬 55 편리하지 않기 때문에 ...
Neil

1
@ThisSuitIsBlackNot 내가 시도했을 때 선언되지 않은 변수에 대해 불평했습니다.
Neil

4

BBC 베이직, 80

내일 골프를 끝낼 것입니다.

http://www.bbcbasic.co.uk/bbcwin/bbcwin.html 에서 통역사 다운로드

ORIGIN99,99F.u=-56TO56x=u/50b=x^2^.33/2r=(b^2-x^2+1)^.5*50L.u,b*50-r,u,r+b*50N.

첫 번째 방정식을 사용하여 채워진 하트를 그립니다.이 방정식은 우리가 재 배열하고 입방체 근을 취합니다 (실수의 3 개의 큐브 근, 하나의 실수 및 2 개의 복소가 있지만 여기서는 실제 근에 대해서만 관심이 있습니다). 이차를 얻다 y

x^2+y^2-1=(x^0.66)y

y^2-(x^0.66)y+x^2-1=0

type의 표현식에 표준 2 차 공식을 사용하고 = 1 ay^2+by+c=0이라는 사실을 a활용

y = -b/2 +/- sqrt((b/2)^2-c)

y = -b/2 +/- sqrt((b/2)^2-x^2+1)

where -b/2 = (x^0.66)/2( b프로그램에서 나타냄 )

우리는 단순히 x왼쪽에서 오른쪽으로 값을 스캔하여, 유효한 y모양 의 각 쌍 사이에 수직선을 그려서 견고한 모양을 만듭니다.

ORIGIN99,99F.u=-56TO56x=u/50b=x^2^.33/2r=(b^2-x^2+1)^.5*50L.u,b*50-r,u,r+b*50N.

언 골프

ORIGIN99,99
FORu=-56TO56
  x=u/50
  b=x^2^.33/2
  r=(b^2-x^2+1)^.5*50
  LINEu,b*50+r,u,b*50-r
NEXT

4

루비, 80 바이트

루비에게 사랑을 보여주세요.

-2.step(2,0.2){|y|-2.step(2,0.1){|x|$><<'. O'[(y*y-1+x*=x)**3+x*y**3<=>0]};puts}

산출:

         OOOOO     OOOOO             
      .OOOOOOOOO.OOOOOOOOO.          
     OOOOOOOOOOOOOOOOOOOOOOO         
     OOOOOOOOOOOOOOOOOOOOOOO         
     OOOOOOOOOOOOOOOOOOOOOOO         
      OOOOOOOOOOOOOOOOOOOOO          
      .OOOOOOOOOOOOOOOOOOO.          
        OOOOOOOOOOOOOOOOO            
         OOOOOOOOOOOOOOO             
           OOOOOOOOOOO               
              OOOOO                  
                .                    

위와 아래에 빈 줄이 있습니다.


2

Processing.js : 123 119 바이트

언 골프 :

t = 0; 

void setup() {
    size(99, 300); 
} 

void draw() {
    point(59+99*sin(t)*cos(t)*log(t),350-400*sqrt(cos(t))*pow(t,0.3));
    t+=0.01;
}

골프 :

t=0;void setup(){size(99,300);}void draw(){point(59+99*sin(t)*cos(t)*log(t),350-400*sqrt(cos(t))*pow(t,0.3));t+=0.01;}

이것은 두 abs (t)를 절약하기 위해 그림과 같이 -1에서 1 대신 0에서 무한대까지 # 2를 플롯하기 때문에 상당히 유쾌합니다. 그러나 100 점 이상이 있기 때문에 기술적으로 정확합니다.


130 바이트 "수정 자"1 개

t=-1;void setup(){size(99,300);}void draw(){point(59+99*sin(t)*cos(t)*log(abs(t)),350-400*sqrt(cos(t))*pow(abs(t),0.3));t+=0.01;}

온라인으로 사용해보십시오

참고 : 기본 100x100 캔버스에서 100 점을 가져 와서 설정을 제거하는 방법이있을 수 있습니다.


귀하의 스 니펫은 로컬 버전의 Processing에서 나를 위해 아무것도하지 않습니다 (1 점을 그리는 두 번째 제외)
Kritixi Lithos

스케치 패드를 사용해 보셨습니까? ( "온라인으로 시도") "렌더 스케치"
satibel

하지만 그 대신 "Processing.JS"라고합니다. 스 니펫이 나를 위해 작동하려면 float대신 대신 사용해야 합니다.int
Kritixi Lithos

죄송합니다 .js를 잊어 버렸으므로 쓸모없는 int를 제거하여 4 바이트를 절약했습니다.
satibel

2

TI-84 기본, 40 38 바이트

@ 12Me21의 답변 및 출력과 유사하지만 대신 TI-83 / 84 시리즈의 경우.

While 1:2rand-1→A:2rand-1:If (A²+Ans²-1)³>A²Ans³:Pt-On(A,Ans:End

Ans를 사용하는 것이 실제로 더 작습니까? Ans가 2 바이트라고 생각했습니다.
12Me21

아니요, 같은 크기이며 더 빠릅니다. (적어도 TI-83 / 84의 경우 TI-80에 대해 잘 모르겠습니다).
Timtech

1

BBC 기본 (BBC 마이크로) (126 바이트)

이것은 레벨 리버 스트리트의 답변 변형 이지만 BBC BBC의 원래 BBC 마이크로 반복에 대한 변형입니다 .

https://bbc.godbolt.org/ (자바 스크립트 기반 BBC 마이크로 에뮬레이터) 에서 JSBeeb의 새로운 붙여 넣기 기능에 다음 중 하나를 복사하여 붙여 넣을 수 있습니다. 붙여 넣은 후 '화면'내부에서 Enter 키를 눌러 프롬프트에서 RUN을 입력 한 다음 Enter 키를 눌러 두 버전을 실행하십시오.

골프. (126 바이트)

1MO.1:V.29,64;64;:MOVE-57,20:GC.0,1:F.U=-56TO56:X=U/50:IFX<>0TH.B=X^2^.33/2
2R=(B^2-X^2+1)^.5*50:DRAWU,B*50+R:DRAW U,B*50-R:N.

언 골프. (176 바이트)

1 MODE 1
2 VDU 29,64;64;
3 MOVE -57,20
4 GCOL 0,1
5 FOR U = -56 TO 56
6 X = U/50
7 IF X <> 0 THEN B = X^2^.33/2
8 R = (B^2-X^2+1)^.5*50
9 DRAW U,B*50+R
10 DRAW U,B*50-R
11 NEXT

7 행은 X가 루프를 통해 절반으로 0이 될 때 "로그 범위"오류를 방지하기 위해 X를 점검해야합니다. 이것 외에는 거의 동일합니다. JSBeeb이 에뮬레이트하는 실제 머신에서 그리는 속도가 훨씬 느립니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.