ハートグラフの描画/プロット


45

あなたの課題は、以下のハートの1つを描画/プロットすることです。サイズは少なくとも50x50ピクセルである必要があります(ベクターグラフィックは問題ありません)。どのハートを描画/プロットするかを選択できます。軸、グリッド線などが受け入れられます。グラフには少なくとも 100個の異なる座標/ポイントが必要です。必要に応じて、心を色で満たすことができます。

ここに画像の説明を入力してください

方程式は次のいずれかです。

ここに画像の説明を入力してください

または

ここに画像の説明を入力してください

ここに画像の説明を入力してください

t範囲内[-1, 1]です。

または

ここに画像の説明を入力してください

または

ここに画像の説明を入力してください

これはので、バイト単位の最短のコード(各言語)が優先されます。出力(またはオンライン通訳へのリンク)を提供してください。

回答:


66

TI-80 BASIC、45 43 41 39バイト

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

ここに画像の説明を入力してください

これにはしばらく時間がかかり、バッテリーが少なくなったので、続けたくありませんでした。

私は2番目の方程式を使用しようとしましたが、実際にはそれを機能させることできなかったので、実際にはもっと長くなったので、私は他の答えを適応させました。

編集:私はちょうど50x50ピクセルの要件に気付いたが、残念ながら画面の高さはわずか47ピクセルなので、これは不可能です。


1
本当に創造的です!
dalearn

8
しばらく経ちIF (X²+ANS²-1)³-X²ANS³<0ましたが、交換できますIF (X²+ANS²-1)³<X²ANS³か?
wchargin

ああ、私はそれを考えなかったとは信じられない!感謝
12Me21

45

Perl、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に比例しますが、それ自体に多重に割り当てられ($_*=$_/1e3)、x²に比例します。式でx²が2回使用されるため、これにより数バイトが節約されます。

1e3は1000を意味し、短くて結果が良いように選択された。** Perlのパワーオペレータです。私は満たされた心が欲しいからと>0いうよりは、使う==0

flip_flop := $|--?v60:3

v60は、ASCIIコード60: '<'の文字を示すための、旧式のバージョン文字列構文の不正使用です。

$ | は、0または1にしかならない魔法の変数です。すでに0になっているときにデクリメントすると1に設定されます。1にするとデクリメントすると自然に0に設定されます。したがって、$ |-はよくフリップフロップとして使用されます。評価され、trueとfalseが交互に使用されます。

全体として、この式は '<'と3を交互に返します。

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

入れ子になった三元。条件がfalse(→心臓の外側にある)の場合、$ "に評価されます。これは、デフォルトで" "(単一のスペース)になる魔法の変数です。条件がtrue(→心臓の内側にある)の場合、 flip_flopを評価します。

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

inner_loopを繰り返し評価し、$ _(Perlの「デフォルト」変数)を-40から40に1ずつ増やします。これらの評価の結果を一時リストに収集し、それらをすべて連結して連結し、改行で終了します。 。

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

これは、outer_loopを繰り返し実行し、$ yを1.24(1-(-6 / 25))から-1(1-50/25)に0.04ずつ減少させます。

yは25で除算され、x²は1000で除算されます。これは、xをsqrt(1000)で除算するのと同じです。私が言及した〜1.265の係数はsqrt(1000)/ 25です。


5
ええ、それはルールに違反していないと思います...これまでの私のお気に入り:)でも説明が
欲しい

1
私は何かについて混乱しています。「<」などのように?v60を使用する理由
ニックハートリー

長さは同じですが、入力は簡単です。
グリムミー

心から作られた心。
TheWanderer

34

Mathematica WolframAlpha、17 15 13 11バイト

Martin Enderのおかげで2バイト削られました(最初のハートカーブ->ハートカーブ1)

Martin Enderのおかげで、さらに2バイト削られました(ハートカーブ1-> heartcurve1)

これはおそらく不正行為(明らかな解決策)ですが、ここに行きます。

heartcurve1

ここで試してみてください!

Wolframがまだ受け入れられるように、1つ目、ハート、またはカーブを短くする方法があると確信しています。さて、今はスペースがありません。心の略語のようなものでしょうか?

そのうち2つをプロットするとボーナスポイントがもらえますか?

heartcurves

ここで試してみてください!


5
heart curve 1
マーティンエンダー

6
実際にheartcurve1動作します。
マーティンエンダー

23
@MartinEnder世界でどのような
Thunda

1
ハートカーブの最初の1つは、お尻のように見えます
ミハイルV

@MikhailV 0番目のハートカーブ(cardoid)はお尻のように見えます。
サンダ

29

Mathematica、52バイト

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

ここに画像の説明を入力してください

あと1バイト節約できますContourPlotが、背景が少しトリッピーになります:

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

ここに画像の説明を入力してください

1 バイト追加するために、4番目の式をPolarPlot代わりに使用できます。

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

ここに画像の説明を入力してください


23
「少しトリッピー」は控えめな表現です...
Mego

ContourPlotはOCDを非常にトリガーします。あああああ!:D
KeyWeeUsr

25

Casio fx-7700GH、21バイト

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

極座標グラフ関数スロットの1つに入力される名前のないグラフ関数は、錫上で言うことを行います。

グラフの範囲は手動で設定する必要があります(現在の設定範囲に収まらない限り)Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1

他のCasio Power Graphic Series計算機でも動作するはずです。おそらく、後のCasioグラフィック計算機でも動作するはずです。

カシオfx-7700GH電卓によって描かれた心 (うん私はかなり古いものとほこりっぽいです)



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

あなたは使用することができますxx代わりにx^2
12Me21

@ 12Me21、それは素晴らしい、ありがとう!
ダニエル

バイト数が間違っています。余分な改行があります。
Rɪᴋᴇʀ

@リッカー、私はそれがどのように間違っているのかわかりません。改行はどこにありますか?
ダニエル

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_plotand の長い名前parametric_plot(およびx前者の暗黙的に定義された変数以外の変数を定義する必要性)により、最初の3つのオプションは考慮するには長すぎます。

busukxuanとAndrea Lazzarottoに感謝します


1
^.5の代わりに仕事を**.5
busukxuan

1
@busukxuanいや。SageはPython上に構築されており、^XORです。
メゴ

1
しかし、セージはに置き換え^られ**ます。続くならば、それは正しく置き換えることができなかったので、それがあった場合、私は思っていた.
busukxuan

@busukxuan SageはPythonの累乗表記(**)を使用します。を使用しようとする^と、警告と誤った結果が表示されます。
メゴ

1
@AndreaLazzarottoそれから、どうやら私の記憶に欠陥があります。ありがとう。
メゴ

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.0011e-3
アルバート・レンショウ

6

ゼリー、31 バイト

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

オンラインでお試しください!

または、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

JavaScript(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
スヴァローグ

1
@svarogこのように私のノート「ES7に若干短くなるだろう」...
ニール

クロム55で動作するので、es7バージョンを追加してみませんか?
スヴァローグ

1
私は、クロム55が手元にありませんので... @svarog
ニール

1
@ThisSuitIsBlackNot私が試みたとき、宣言されていない変数について不平を言いました。
ニール

4

BBC BASIC、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つの立方根、1つは実数、2つは複素数がありますが、ここでは実際の根にのみ興味があります)。二次式を取得する y

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

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

タイプの式に標準の二次式を使用し、= 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)/2bプログラム内でによって表されます。)

単純に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バイト

Rubyに愛を示してください。

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

これは、2つの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ポイントだけを描画する2番目のものを除く)
Kritixi Lithos

スケッチパッドで試しましたか?(「オンラインで試す」)「スケッチをレンダリングする」をクリックする必要があります
サティベル

しかし、代わりに「Processing.JS」と呼ばれると思います。私のために仕事にスニペットのために、あなたが使用する必要がありますfloat代わりにint
KritixiのLithos

おっと、.jsを忘れてしまったので、役に立たないintを削除して4バイト節約しました。
サティベル

2

TI-84 Basic、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

@ 12Me21いいえ、同じサイズで、高速です。(少なくともTI-83 / 84については、TI-80については知りません)。
ティムテック

1

BBC BASIC(BBC Micro)(126バイト)

これはLevel River Streetの 回答のバリエーションですが、元のBBC MicroのBBC BASICの反復です。

以下のいずれかをhttps://bbc.godbolt.org/(JavaScriptを使用したBBC Microエミュレーター)の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.