Kalp grafiği çizme / çizme


45

Buradaki zorluk, aşağıdaki kalplerden birini çizmek / çizmek. Boyut en az 50x50 piksel olmalıdır (vektör grafikleri tamam). Hangi kalplerden hangisini çizmek / çizmek istediğinizi seçebilirsiniz. Eksenler, ızgara çizgileri vb. Kabul edilir. Grafikte en az 100 farklı koordinat / nokta bulunmalıdır . İsterseniz kalp renkle doldurulabilir.

görüntü tanımını buraya girin

Denklemler ya:

görüntü tanımını buraya girin

veya

görüntü tanımını buraya girin

görüntü tanımını buraya girin

tmenzilde [-1, 1].

veya

görüntü tanımını buraya girin

veya

görüntü tanımını buraya girin

Bu yani bayt cinsinden en kısa kod (her dilde) kazanır. Lütfen çıktıyı verin (veya çevrimiçi bir tercümana bağlantı verin).

Yanıtlar:


66

TI-80 BASIC, 45 43 41 39 bayt

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

görüntü tanımını buraya girin

Bu biraz zaman aldı ve pilim zayıf, devam etmek istemedim.

İkinci denklemi kullanmaya çalıştım, ancak işe yaramadı , aslında daha uzun olduğu ortaya çıktı, bu yüzden aldığım diğer cevabı ben uyarladım.

EDIT: Ben sadece 50x50 piksel gereksinimi fark ettim, ne yazık ki ekran sadece 47 piksel yüksek, bu yüzden bu mümkün değil.


1
gerçekten yaratıcı!
dalearn

8
Bir süre oldu, ama yerine IF (X²+ANS²-1)³-X²ANS³<0sahip IF (X²+ANS²-1)³<X²ANS³?
wchargin

Oh, bunu düşünmediğime inanamıyorum! teşekkürler
12Me21

45

Perl, 86 bayt

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

İle koş perl -E.

İlk denklemi kullanarak doldurulmuş bir ASCII kalbini çizer. X ekseninin ~ 1.265 faktörü ile gerildiğine dikkat edin: bu terminal yazı tiplerinin genellikle yatay olarak dikey olarak çok daha büyük olduğu gerçeğini engellemektir.

Çıktı:

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

Açıklama (OP bunu istediğinden beri):

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

Bu, basitçe kısaltmak için yeniden düzenlenmiş ilk denklemdir. $ y doğrudan formülde y'yi temsil eder. $ _ başlangıçta x ile orantılıdır, ancak $_*=$_/1e3x² ile orantılı olmasını sağlayarak kendisi ile ( ) çarpılır . X², formülde iki kez kullanıldığından, birkaç bayttan tasarruf sağlar.

1e31000 demektir ve kısa seçildi ve sonuç iyi görünüyordu. ** Perl'in güç operatörü. Kullandığım >0yerine ==0bir dolu kalbini istiyorum çünkü.

flip_flop := $|--?v60:3

v60, ASCII kod 60: '<' ile karakteri göstermek için eski sürüm dizgisi sözdiziminin kötüye kullanılmasıdır.

$ | sadece 0 veya 1 olabilen büyülü bir değişkendir. Zaten 0'a ayarlandığında azalarak 1 olarak ayarlanır. 1 olarak azaldığında doğal olarak 0'a ayarlanır. Böylece, $ | - genellikle flip-flop olarak kullanılır: değerlendirildi, doğru ve yanlış arasında değişiyor.

Genel olarak, bu ifade alternatif olarak '<' ve 3 değerini döndürür.

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

İç içe üçlüler. Koşul yanlışsa (→ kalbin dışındayız), "" olarak varsayılan olan sihirli bir değişken olan $ "olarak değerlendirilir (tek boşluk). Koşul doğruysa (→ kalbin içindeyiz) flip_flop'u değerlendirir.

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

$ _ (Perl'in “varsayılan” değişkeni) -40'dan 40'a kadar olan $ 1 (perl'in “varsayılan” değişkeni) 1 artışlarla tekrar tekrar inner_loop'u değerlendirir. .

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

Bu, outer_loop öğesini art arda çalıştırır ve $ y, 0,04 azalışlarla 1,24 (1 - (-6 / 25)) ile -1 (1 - 50/25) arasındadır.

Y'nin 25'e, x²'nin 1000'e bölündüğünü ve bunun x'in sqrt'e (1000) bölünmesiyle aynı olduğuna dikkat edin. Bahsettiğim ~ 1.265 faktörü sqrt (1000) / 25'dir.


5
Huh, sanırım herhangi bir kuralı ihlal etmiyor ... Şimdiye kadarki favorim :) Ama bir açıklama yapmak isterim :)
Stewie Griffin

1
Bir şey hakkında kafam karıştı. Neden? V60 'ı kullanıp, "<" dedin?
Nic Hartley,

Aynı uzunluk, ancak yazması daha kolay.
Grimmy

Kalplerden yapılmış bir kalp.
Wanderer

34

Mathematica WolframAlpha, 17 15 13 11 bayt

Martin Ender (2 kalp eğrisi -> kalp eğrisi 1) sayesinde 2 bayt tıraşlandı

Martin Ender (2) - kalp eğrisi1)

Bu muhtemelen hile (açık çözüm), ama işte gidiyor.

heartcurve1

Burada dene!

Wolfram'ın hala kabul edeceği şekilde 1. kalbi veya eğriyi kısaltmanın bir yolu olduğuna eminim. Şimdi boşluksuz, belki de kalp için bir çeşit kısaltma var?

Bunlardan 2 tanesini çizmek için bonus puanları alabilir miyim?

heartcurves

Bunu burada dene!


5
heart curve 1
Martin Ender

6
Aslında heartcurve1işe yarıyor.
Martin Ender

23
@MartinEnder Dünyada ne var
Thunda

1
ilk kalp kalplerinden biri popo gibi gözüküyor
Mikhail V

@MikhailV 0th heartcurve (cardoid) bir popo gibi görünüyor.
Thunda

29

Mathematica, 52 bayt

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

görüntü tanımını buraya girin

Bir bayt daha kaydedebiliriz, ContourPlotancak arka plan biraz trippy olur:

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

görüntü tanımını buraya girin

Bir ek bayt için dördüncü formülü kullanabiliriz ve PolarPlotbunun yerine:

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

görüntü tanımını buraya girin


23
"Biraz trippy" biraz yetersiz
kalıyor

ContourPlot, OKB'yi çok fazla tetikler. Aaaaaah! : D
KeyWeeUsr

25

Casio fx-7700GH, 21 bayt

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

Kutupsal koordinat grafikleme fonksiyon alanlarından birine girilen isimsiz grafik fonksiyonu, sonra teneke ne diyorsa onu yapar.

Grafik aralığı manuel olarak ayarlanmalıdır (geçerli ayar aralığına sığmadıkça), ben ayarladım Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1.

Diğer Casio Power Graphic Serisi hesap makinelerinde de ve muhtemelen daha sonra Casio grafik hesap makinelerinde çalışılmalıdır.

Casio fx-7700GH hesap makinesi tarafından çizilen bir kalp (evet , oldukça yaşlı ve tozluyum)


18

MATLAB / Octave, 31 bayt

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

görüntü tanımını buraya girin


9

SmileBASIC, 85 81 bayt

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.

görüntü tanımını buraya girin


9

Desmos , 20 16 15 bayt

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

xxyerine kullanabilirsinizx^2
12Me21

@ 12Me21, oh bu mükemmel, teşekkürler!
Daniel

Bayt sayınız yanlış, fazladan bir yeni hattınız var.
Rɪᴋᴇʀ

@Riker, nasıl yanlış olduğunu anlamıyorum. Newline nerede?
Daniel,

imgur.com/a/4eTyt V2 14 bayttır
47


7

Python, 119 116 bayt

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

Çevrimiçi deneyin

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

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


6

SageMath, 66 bayt

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

Çevrimiçi deneyin

Ne yazık ki, uzun isimleri implicit_plotve parametric_plot(artı xbirincisi için açıkça tanımlanmış olan bir değişkeni tanımlamanın gerekliliği ) ilk üç seçeneği dikkate alınmayacak kadar uzun yapar.

Bir bayt için busukxuan ve Andrea Lazzarotto'ya teşekkürler


1
Does ^.5yerine çalışmalarını **.5?
busukxuan

1
@ busukxuan Hayır. Sage Python üzerine inşa edilmiştir ve ^XOR'dur.
Mego

1
Ama adaçayı yerine ^sahip **. Bunu merak ediyordum, çünkü doğru bir şekilde değiştirilemedi, ardından a.
busukxuan

@ busukxuan Sage, Python'un güç göstergesini ( **) kullanır . Kullanmaya çalıştıysanız ^, bir uyarı ve yanlış sonuç ile sonuçlanır.
Mego

1
@AndreaLazzarotto O zaman görünüşe göre hafızam hatalı. Teşekkürler.
Mego

6

C, 137 133 bayt

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

Thanks @AlbertRenshaw, ayrıca 100'leri 2 bayt için 99'lara değiştirdim


1
+ 1; vİşlev için kullanımını seviyorum , iyi bir yetenek. Sen değiştirerek iki bayt tıraş edebilirsiniz 4000ile 4e3ve değiştirilmesi 0.001ile1e-3
Albert Renshaw

6

Jöle , 31 bayt

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

Çevrimiçi deneyin!

veya dolum yerine a ile 35 bayt : orta çizgiyi olarak değiştir .*²+’*3<ç×9829Ọ»⁶

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

Nasıl?

Gerçekleştirir: denklem51 x 51 satırdan fazla besleme ayrılmış karakter ızgarası.

*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 bayt

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)

Düzenleme: @ user2428118 sayesinde 4 bayt kaydedildi. 143 bayt için ES7 sürümü:

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**3yerine nasıl y*y*y?
svarog

1
@svarog Böylece notum "ES7'de biraz daha kısa olur" ...
Neil

peki, 55 kromda çalışıyor, peki neden bir es7 sürümü eklemiyorsunuz?
svarog

1
@svarog Çünkü 55 kullanışlı chromium yok ...
Neil

1
@ BuSuitIsBlackNot Denedim zaman bildirilmemiş değişkenler hakkında şikayet etti.
Neil

4

BBC TEMEL, 80

Yarın golf oynamak bitecek.

Tercümanı http://www.bbcbasic.co.uk/bbcwin/bbcwin.html adresinden indirin.

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.

Yeniden düzenleyip küp kökünü aldığımız ilk denklemi kullanarak doldurulmuş bir kalp çizer (gerçek sayının 3 küp kökü vardır, bir gerçek ve 2 karmaşık ikinci dereceye girmek y

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

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

Tipik ifadeler için standart ikinci dereceli formülü kullanarak ve elde ettiğimiz = 1 ay^2+by+c=0değerinden yararlanaraka

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

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

nerede -b/2 = (x^0.66)/2( bprogram tarafından temsil edilir .)

Sadece xsoldan sağa doğru olan değerleri tarıyor, ysağlam bir şekil oluşturmak için her geçerli değer çifti arasında dikey bir çizgi çiziyoruz.

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

4

Ruby, 80 bayt

Ruby'ye biraz sevgi göster.

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

Çıktı:

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

bazı boş satırların üstünde ve altında


2

Processing.js: 123 119 bayt

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

golfed:

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

bu, iki abs'den (t) tasarruf etmek için resimde gösterildiği gibi # 2'yi 0'dan sonsuza dek -1'den 1'e kadar sonsuzluğa çizdiği için oldukça aldatıcıdır. Ancak 100'den fazla puan olduğu için teknik olarak doğru.


130 bayt "düzeltici" bir

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

çevrimiçi dene

not: Muhtemelen varsayılan 100x100 tuvalde 100 puan kazanmanın ve kurulumu tıraş etmenin bir yolu var.


Snippet'leriniz hiçbiri benim yerel
işlemimde bir

eskiz defteri denedin mi? ("çevrimiçi deneyin") "kroki çizimi" ni tıklamanız gerekiyor
satibel

Ancak bunun yerine "Processing.JS" olarak adlandırılacağını düşünüyorum. floatint
Metin

ayy, .js'yi unuttum ve bu sayede gereksiz int'yi kaldırarak 4 bayt kurtardım.
satibel

2

TI-84 Basic, 40 38 bayt

@ 12Me21'in cevap ve çıktısına benzer, fakat bunun yerine TI-83/84 serisi için.

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

Ans'ı kullanmak gerçekten burada daha mı küçük? Ans'ın 2 bayt olduğunu sanıyordum.
12Me21

@ 12Me21 Hayır, aynı boyutta ve daha hızlı. (En azından TI-83/84 için, TI-80'i bilmiyorum).
Timtech

1

BBC TEMEL (BBC Mikro) (126 bayt)

Bu, Level River Street'in cevabının bir çeşididir , ancak orijinal BBC Micro'nun BBC BASIC yinelemesi için.

Aşağıdakilerden birini kopyalayıp JSBeeb'in https://bbc.godbolt.org/ (JavaScript destekli bir BBC Micro emülatörü) adresindeki yapıştırma işlevine kopyalayıp yapıştırabilirsiniz, yapıştırdıktan sonra, yeni bir ekran göstermek için 'ekranın içinde Enter'a basın istemde bulunun ve ardından RUN yazıp her iki sürümü de çalıştırmak için Enter tuşuna basın.

golfed. (126 bayt)

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 bayt)

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

Satır 7, X döngü boyunca yarı yarıya 0 olduğunda “Günlük Aralığı” hatasını önlemek için X kontrolünü gerektirir. Bundan başka, hemen hemen aynı. JSBeeb'in oldukça iyi öykündüğü gerçek bir makinede çizim yapmak çok daha yavaştır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.