Gambarlah / plot grafik hati

45

Tantangan Anda adalah menggambar / merencanakan salah satu hati di bawah ini. Ukurannya harus minimal 50x50 piksel (grafik vektor OK). Anda dapat memilih hati mana yang ingin Anda gambar / plot. Sumbu, garis kisi, dll. Diterima. Paling tidak harus ada 100 koordinat / titik berbeda pada grafik. Jantung bisa diisi dengan warna jika Anda mau.

masukkan deskripsi gambar di sini

Persamaannya adalah:

masukkan deskripsi gambar di sini

atau

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

tberada dalam jangkauan [-1, 1].

atau

masukkan deskripsi gambar di sini

atau

masukkan deskripsi gambar di sini

Ini adalah sehingga kode terpendek (dalam setiap bahasa) dalam byte menang. Harap berikan output (atau tautan ke juru bahasa online).

Stewie Griffin
sumber

Jawaban:

66

TI-80 BASIC, 45 43 41 39 byte

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

masukkan deskripsi gambar di sini

Ini memakan waktu cukup lama, dan baterai saya rendah sehingga saya tidak ingin melanjutkan.

Saya mencoba menggunakan persamaan kedua, tetapi tidak berhasil , ternyata ternyata lebih lama, jadi saya hanya mengadaptasi jawaban lain yang saya miliki.

EDIT: Saya baru memperhatikan persyaratan 50x50 piksel, sayangnya layarnya hanya 47 piksel tinggi jadi ini tidak mungkin.

12Me21
sumber
1
memang kreatif!
dalearn
8
Sudah lama, tapi dapat Anda ganti IF (X²+ANS²-1)³-X²ANS³<0dengan IF (X²+ANS²-1)³<X²ANS³?
wchargin
Oh, aku tidak percaya aku tidak memikirkan itu! terima kasih
12Me21
45

Perl, 86 byte

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

Jalankan dengan perl -E.

Plot hati ASCII yang terisi, menggunakan persamaan pertama. Perhatikan bahwa sumbu x direntangkan oleh faktor ~ 1.265: ini untuk menangkal fakta bahwa font terminal biasanya jauh lebih besar secara vertikal daripada horizontal.

Keluaran:

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

Penjelasan (karena OP memintanya):

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

Ini hanyalah persamaan pertama, sedikit disusun ulang untuk membuatnya lebih pendek. $ y secara langsung mewakili y dalam rumus. $ _ pada awalnya proporsional dengan x, tetapi dikalikan dengan itu sendiri ( $_*=$_/1e3), membuatnya proporsional dengan x². Karena x² digunakan dua kali dalam rumus, ini menghemat beberapa byte.

1e3berarti 1000, dan dipilih karena pendek dan hasilnya terlihat bagus. ** adalah operator listrik Perl. Saya menggunakan >0daripada ==0karena saya ingin hati yang penuh.

flip_flop := $|--?v60:3

v60 adalah penyalahgunaan sintaks string-versi kuno untuk menunjukkan karakter dengan kode ASCII 60: '<'.

$ | adalah variabel ajaib yang hanya bisa 0 atau 1. Mengurangi ketika sudah 0 set ke 1. Mengurangi saat 1 secara alami menetapkan ke 0. Dengan demikian, $ | - sering digunakan sebagai flip-flop: setiap kali itu dievaluasi, berganti-ganti antara benar dan salah.

Secara keseluruhan, ungkapan ini kembali sebagai alternatif '<' dan 3.

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

Terner bersarang. Jika kondisi salah (→ kita berada di luar hati), evaluasikan ke $ ", yang merupakan variabel ajaib yang default ke" "(satu spasi). Jika kondisinya benar (→ kita berada di dalam hati), itu mengevaluasi flip_flop.

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

Mengevaluasi inner_loop berulang kali, dengan $ _ (variabel "default" Perl) naik dari -40 menjadi 40, dengan peningkatan 1. Mengumpulkan hasil evaluasi tersebut dalam daftar sementara, lalu mencetak semuanya, disatukan, diakhiri dengan baris baru .

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

Ini menjalankan outer_loop berulang kali, dengan $ y mulai dari 1,24 (1 - (-6 / 25)) hingga -1 (1 - 50/25), dalam penurunan 0,04.

Perhatikan bahwa y dibagi 25, sedangkan x² dibagi 1000, yang sama dengan membagi x dengan sqrt (1000). Faktor ~ 1.265 yang saya sebutkan adalah sqrt (1000) / 25.

Grimmy
sumber
5
Huh, saya rasa itu tidak melanggar aturan apa pun ... Favorit saya sejauh ini :) Saya suka penjelasannya :)
Stewie Griffin
1
Saya bingung tentang sesuatu. Mengapa menggunakan? V60 lebih, katakan, "<"?
Nic Hartley
Panjangnya sama, tetapi lebih mudah diketik.
Grimmy
Hati yang terbuat dari hati.
TheWanderer
34

Mathematica WolframAlpha, 17 15 13 11 byte

Dicukur 2 byte berkat Martin Ender (kurva hati pertama -> kurva hati 1)

Mencukur 2 byte lagi berkat Martin Ender (kurva hati 1 -> heartcurve1)

Ini mungkin curang (solusi yang jelas), tapi begini saja.

heartcurve1

Coba di sini!

Saya yakin ada cara untuk mempersingkat 1st, heart atau curve sehingga Wolfram masih menerimanya. Nah sekarang sudah bebas dari ruang, mungkin semacam singkatan untuk jantung?

Apakah saya mendapatkan poin bonus karena memplot 2 dari mereka?

heartcurves

Coba itu di sini!

Thunda
sumber
5
heart curve 1
Martin Ender
6
Sebenarnya heartcurve1berhasil.
Martin Ender
23
@ MartinEnder Apa di dunia
Thunda
1
Yang pertama dari heartcurves terlihat lebih seperti pantat
Mikhail V
@MikhailV 0 heartcurve (cardoid) terlihat seperti pantat.
Thunda
29

Mathematica, 52 byte

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

masukkan deskripsi gambar di sini

Kita bisa menyimpan satu byte lagi dengan ContourPlottetapi kemudian latar belakangnya menjadi sedikit trippy:

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

masukkan deskripsi gambar di sini

Untuk satu byte tambahan kita bisa menggunakan rumus keempat dan PolarPlotsebagai gantinya:

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

masukkan deskripsi gambar di sini

Martin Ender
sumber
23
"Agak trippy" sedikit meremehkan ...
Mego
ContourPlot memicu OCD begitu banyak. Aaaaaah! : D
KeyWeeUsr
25

Casio fx-7700GH, 21 byte

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

Fungsi grafik yang tidak disebutkan namanya akan dimasukkan ke dalam salah satu slot fungsi grafik koordinat kutub, kemudian melakukan apa yang tertulis di kaleng.

Rentang grafik harus diatur secara manual (kecuali jika cocok dengan rentang set saat ini), saya atur ke Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1.

Harus bekerja pada kalkulator Casio Power Graphic Series lainnya juga, dan sangat mungkin nanti kalkulator grafis Casio.

Hati yang ditarik oleh kalkulator Casio fx-7700GH (Ya saya cukup tua dan berdebu)

Jonathan Allan
sumber
18

MATLAB / Oktaf, 31 byte

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

masukkan deskripsi gambar di sini

Suever
sumber
9

SmileBASIC, 85 81 byte

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.

masukkan deskripsi gambar di sini

12Me21
sumber
9

Desmos , 20 16 15 byte

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
Daniel
sumber
Anda bisa menggunakan xxbukannyax^2
12Me21
@ 12Me21, oh itu luar biasa, terima kasih!
Daniel
Hitungan byte Anda salah, Anda memiliki baris baru ekstra.
Rɪᴋᴇʀ
@Riker, saya tidak melihat bagaimana itu salah. Di mana ada baris baru?
Daniel
imgur.com/a/4eTyt V2 adalah 14 byte
Rɪᴋᴇʀ
7

MATL, 36 byte

1e4t:w/EqXJX,JY,J|Yl**JX,X^J|.3^*&XG

Cobalah di MATL Online

masukkan deskripsi gambar di sini

Suever
sumber
9
Solusi Tfw MATL lebih panjang dari MATLAB :)
brainkz
7

Python, 119 116 byte

from turtle import*
from math import*
t=1
while-t<1:a=abs(t);c=cos(t);goto(sin(t)*c*log(a)*99,c**.5*a**.3*99);t-=.01

Cobalah online

x = sin (t) * cos (t) * log (abs (t))

y = cos (t) **. 5 * abs (t) **. 3

mbomb007
sumber
6

SageMath, 66 byte

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

Cobalah online

Sayangnya, nama panjang implicit_plotdan parametric_plot(ditambah kebutuhan untuk mendefinisikan variabel selain yang didefinisikan secara implisit xuntuk yang pertama) membuat tiga opsi pertama terlalu lama untuk dipertimbangkan.

Terima kasih kepada busukxuan dan Andrea Lazzarotto untuk satu byte

Mego
sumber
1
Apakah ^.5bekerja di tempat **.5?
busukxuan
1
@busukxuan Tidak. Sage dibangun di atas Python, dan ^XOR.
Mego
1
Tapi pengganti bijak ^dengan **. Saya bertanya-tanya apakah itu karena tidak dapat menggantikan dengan benar jika diikuti oleh.
busukxuan
@busukxuan Sage menggunakan notasi daya Python ( **). Jika Anda mencoba menggunakan ^, Anda akan berakhir dengan peringatan dan hasil yang salah.
Mego
1
@AndreaLazzarotto Kemudian ternyata ingatan saya salah. Terima kasih.
Mego
6

C, 137 133 byte

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

Terima kasih @AlbertRenshaw, saya juga mengubah 100-an menjadi 99-an untuk 2 byte lebih

Ahemone
sumber
1
+1; Saya suka penggunaan vuntuk fungsi, bakat yang bagus. Anda dapat mencukur dua byte dengan mengganti 4000dengan 4e3dan mengganti 0.001dengan1e-3
Albert Renshaw
6

Jelly , 31 byte

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

Cobalah online!

atau 35 byte dengan , daripada *mengisi: ubah baris tengah ke ²+’*3<ç×9829Ọ»⁶.

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

Bagaimana?

Implements: persamaanlebih dari 51 oleh 51 line feed karakter grid terpisah

*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
Jonathan Allan
sumber
5

JavaScript (ES6), 151 147 byte

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)

Sunting: Disimpan 4 byte berkat @ user2428118. Versi ES7 untuk 143 byte:

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)

Neil
sumber
bagaimana kalau y**3bukan y*y*y?
svarog
1
@svarog Jadi catatan saya "Akan sedikit lebih pendek di ES7" ...
Neil
baik, ini bekerja pada chromium 55, jadi mengapa tidak menambahkan versi es7?
svarog
1
@svarog Karena saya tidak punya kromium berguna ...
Neil
1
@ ThisSuitIsBlackNot Mengeluh tentang variabel yang tidak dideklarasikan ketika saya mencoba.
Neil
4

BBC BASIC, 80

Akan selesai bermain golf besok.

Unduh juru bahasa di 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.

Gambar hati yang penuh menggunakan persamaan pertama, yang kami susun ulang dan ambil akar pangkat tiga (ada 3 akar pangkat tiga dari bilangan real, satu real dan 2 kompleks, tetapi kami hanya tertarik pada akar asli di sini.) Kami kemudian mengatur ulang lagi untuk dapatkan kuadrat y

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

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

Menggunakan rumus kuadrat standar untuk ekspresi tipe ay^2+by+c=0, dan mengambil keuntungan dari fakta bahwa a= 1 kita dapatkan

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

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

dimana -b/2 = (x^0.66)/2(diwakili oleh bdalam program.)

Kami hanya memindai melalui nilai xdari kiri ke kanan, menggambar garis vertikal antara setiap pasangan nilai yang valid untuk ymembangun bentuk yang solid.

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.

ungolfed

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
Level River St
sumber
4

Ruby, 80 byte

Tunjukkan pada Ruby beberapa cinta.

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

Keluaran:

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

dengan beberapa baris kosong di atas dan di bawah

GB
sumber
2

Processing.js: 123 119 byte

ungolfed:

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

golf:

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

yang satu ini cukup cheaty karena plot # 2 dari 0 hingga tak terbatas bukan dari -1 ke 1 seperti yang ditunjukkan dalam gambar untuk menghemat dua abs (t). Tetapi secara teknis benar karena ada lebih dari 100 poin.


130 byte "mengoreksi" satu

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

coba online

Catatan: mungkin ada cara untuk mendapatkan 100 poin pada kanvas 100x100 default dan mencukur pengaturan.

satibel
sumber
Tidak ada cuplikan Anda yang melakukan apa pun untuk saya di versi lokal saya dari Pemrosesan (kecuali yang kedua yang hanya mendapatkan 1 poin)
Kritixi Lithos
Sudahkah Anda mencoba sketsa? ("coba online"), Anda perlu mengklik "render sketsa"
satibel
Tapi saya pikir itu akan disebut "Processing.JS". Agar cuplikan berfungsi untuk saya, Anda harus menggunakan floatalih-alihint
Kritixi Lithos
oops, lupakan .js, dan berkat itu saya menyimpan 4 byte dengan menghapus int yang tidak berguna.
satibel
2

TI-84 Basic, 40 38 byte

Mirip dengan jawaban & keluaran @ 12Me21, tetapi untuk seri TI-83/84 sebagai gantinya.

While 1:2rand-1→A:2rand-1:If (A²+Ans²-1)³>A²Ans³:Pt-On(A,Ans:End
Timtech
sumber
Apakah menggunakan Ans sebenarnya lebih kecil di sini? Saya pikir Ans adalah 2 byte.
12Me21
@ 12Me21 Tidak, ukurannya sama, dan lebih cepat juga. (Untuk TI-83/84 setidaknya, saya tidak tahu tentang TI-80).
Timtech
1

BBC BASIC (BBC Micro) (126 byte)

Ini adalah variasi dari jawaban Level River Street , tetapi untuk iterasi BBC Micro asli dari BBC BASIC.

Anda dapat menyalin dan menempelkan salah satu dari yang berikut ke dalam fungsi tempel JSBeeb yang baru di https://bbc.godbolt.org/ (Sebuah emulator BBC Micro yang didukung JavaScript), setelah disisipkan, tekan Enter di dalam 'layar' untuk menampilkan yang baru prompt, lalu ketik RUN, lalu tekan Enter untuk menjalankan versi mana pun.

bermain golf. (126 byte)

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.

ungolfed. (176 byte)

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

Baris 7 memerlukan pemeriksaan untuk X, untuk mencegah kesalahan "Log range" ketika X menjadi 0 setengah jalan melalui loop. Selain itu, ini hampir sama. Jauh lebih lambat untuk menggambar pada mesin nyata, yang ditiru JSBeeb dengan cukup baik.

sassquad
sumber