Vẽ / vẽ đồ thị trái tim


45

Thử thách của bạn là vẽ / vẽ một trong những trái tim dưới đây. Kích thước phải tối thiểu 50x50 pixel (đồ họa vector là OK). Bạn có thể chọn trái tim nào bạn muốn vẽ / vẽ. Trục, đường lưới vv được chấp nhận. Phải có ít nhất 100 tọa độ / điểm riêng biệt trên biểu đồ. Trái tim có thể được lấp đầy với màu sắc nếu bạn muốn.

nhập mô tả hình ảnh ở đây

Các phương trình là:

nhập mô tả hình ảnh ở đây

hoặc là

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

tlà trong phạm vi [-1, 1].

hoặc là

nhập mô tả hình ảnh ở đây

hoặc là

nhập mô tả hình ảnh ở đây

Đây là vì vậy mã ngắn nhất (trong mỗi ngôn ngữ) tính bằng byte sẽ thắng. Vui lòng cung cấp đầu ra (hoặc liên kết đến một thông dịch viên trực tuyến).

Câu trả lời:


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

nhập mô tả hình ảnh ở đây

Điều này mất một lúc và pin của tôi yếu nên tôi không muốn tiếp tục.

Tôi đã cố gắng sử dụng phương trình thứ hai, nhưng không thể làm cho nó hoạt động được, nó thực sự dài hơn, vì vậy tôi chỉ điều chỉnh câu trả lời khác mà tôi có.

EDIT: Tôi chỉ nhận thấy yêu cầu 50x50 pixel, tiếc là màn hình chỉ cao 47 pixel nên điều này là không thể.


1
thực sự sáng tạo!
dalearn

8
Đã được một lúc, nhưng bạn có thể thay thế IF (X²+ANS²-1)³-X²ANS³<0bằng IF (X²+ANS²-1)³<X²ANS³?
wchargein

Ồ, tôi không thể tin rằng tôi đã không nghĩ về điều đó! cảm ơn
12Me21

45

Perl, 86 byte

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

Chạy với perl -E.

Vẽ một trái tim ASCII đầy, sử dụng phương trình đầu tiên. Lưu ý rằng trục x được kéo dài theo hệ số ~ 1.265: điều này là để chống lại thực tế là phông chữ đầu cuối thường lớn hơn nhiều theo chiều dọc so với chiều ngang.

Đầu ra:

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

Giải thích (vì OP yêu cầu):

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

Đây chỉ đơn giản là phương trình đầu tiên, được sắp xếp lại một chút để làm cho nó ngắn hơn. $ y trực tiếp đại diện cho y trong công thức. $ _ ban đầu tỷ lệ với x, nhưng được gán nhiều lần với chính nó ( $_*=$_/1e3), làm cho nó tỷ lệ với x². Vì x² được sử dụng hai lần trong công thức, điều này giúp tiết kiệm một vài byte.

1e3có nghĩa là 1000, và đã được chọn vì nó ngắn và kết quả có vẻ tốt. ** là nhà điều hành điện của Perl. Tôi sử dụng >0hơn là ==0vì tôi muốn một trái tim đầy.

flip_flop := $|--?v60:3

v60 là lạm dụng cú pháp chuỗi phiên bản cổ xưa để biểu thị ký tự có mã ASCII 60: '<'.

$ | là một biến số kỳ diệu chỉ có thể là 0 hoặc 1. Giảm khi 0 đã đặt nó thành 1. Giảm khi 1 tự nhiên đặt nó thành 0. Do đó, $ | - thường được sử dụng như một lần lật: mỗi lần nó được đánh giá, nó xen kẽ giữa đúng và sai.

Nhìn chung, biểu thức này trả về xen kẽ '<' và 3.

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

Chim nhạn lồng nhau. Nếu điều kiện là sai (→ chúng ta nằm ngoài trái tim), hãy ước lượng thành $ ", đó là một biến số ma thuật mặc định là" "(một khoảng trắng). Nếu điều kiện là đúng (→ chúng ta ở trong tim), thì đó là đánh giá flip_flop.

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

Đánh giá Internal_loop nhiều lần, với $ _ (biến mặc định của Perl của Perl) từ -40 đến 40, tăng theo 1. Nó thu thập kết quả của những đánh giá đó trong một danh sách tạm thời, sau đó in tất cả, kết hợp với một dòng mới .

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

Điều này chạy bên ngoài nhiều lần, với $ y đi từ 1,24 (1 - (-6 / 25)) đến -1 (1 - 50/25), với mức giảm 0,04.

Lưu ý rằng y được chia cho 25, trong khi x² được chia cho 1000, tương đương với chia x cho sqrt (1000). Hệ số ~ 1.265 tôi đã đề cập là sqrt (1000) / 25.


5
Huh, tôi đoán nó không vi phạm bất kỳ quy tắc nào ... Yêu thích của tôi cho đến nay :) Tôi thích một lời giải thích mặc dù :)
Stewie Griffin

1
Tôi bối rối về một cái gì đó. Tại sao sử dụng? V60 hơn, nói, "<"?
Nic Hartley

Cùng chiều dài, nhưng dễ gõ hơn.
Grimmy

Một trái tim làm từ trái tim.
TheWanderer

34

Mathematica WolframAlpha, 17 15 13 11 byte

Cạo sạch 2 byte nhờ Martin Ender (đường cong trái tim thứ nhất -> đường cong trái tim 1)

Đã tắt 2 byte khác nhờ Martin Ender (đường cong trái tim 1 -> heartcurve1)

Đây có lẽ là gian lận (giải pháp rõ ràng), nhưng ở đây đi.

heartcurve1

Hãy thử nó ở đây!

Tôi chắc chắn có một cách để rút ngắn 1st, heart hoặc đường cong để Wolfram vẫn chấp nhận nó. Bây giờ nó không còn chỗ trống, có thể là một loại viết tắt cho trái tim?

Tôi có nhận được điểm thưởng cho âm mưu 2 trong số đó không?

heartcurves

Hãy thử nó ở đây!


5
heart curve 1
Martin Ender

6
Trên thực tế, heartcurve1công trình.
Martin Ender

23
@MartinEnder Điều gì trên thế giới
Thunda

1
Mặc dù vậy, một trong những trái tim đầu tiên trông giống như một cái mông
Mikhail V

@MikhailV 0th heartcurve (cardoid) trông giống như một cái mông.
Thunda

29

Toán học, 52 byte

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

nhập mô tả hình ảnh ở đây

Chúng ta có thể lưu thêm một byte với ContourPlotnhưng sau đó nền sẽ có một chút trippy:

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

nhập mô tả hình ảnh ở đây

Đối với một byte bổ sung, chúng ta có thể sử dụng công thức thứ tư và PolarPlotthay vào đó:

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

nhập mô tả hình ảnh ở đây


23
"Một chút trippy" là một chút thiếu hiểu biết ...
Mego

ContourPlot kích hoạt OCD rất nhiều. Aaaaaah! : D
KeyWeeUsr

25

Casio fx-7700GH, 21 byte

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

Hàm đồ thị không tên được nhập vào một trong các khe chức năng đồ thị tọa độ cực, sau đó thực hiện những gì nó nói trên hộp thiếc.

Phạm vi đồ thị phải được đặt thủ công (trừ khi nó phù hợp với phạm vi thiết lập hiện tại), tôi đặt nó thành Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1.

Cũng nên hoạt động trên các máy tính Casio Power Graphics Series khác, và hoàn toàn có thể là máy tính đồ họa Casio sau này.

Một trái tim được vẽ bởi máy tính Casio fx-7700GH (vâng tôi khá già và bụi bặm)


18

MATLAB / Octave, 31 byte

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

nhập mô tả hình ảnh ở đây


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.

nhập mô tả hình ảnh ở đây


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

bạn có thể sử dụng xxthay vìx^2
12Me21

@ 12Me21, oh thật tuyệt vời, cảm ơn!
Daniel

Số byte của bạn sai, bạn có thêm một dòng mới.
Rɪᴋᴇʀ

@Riker, tôi không thấy nó sai như thế nào. Trường hợp có một dòng mới?
Daniel




6

SageMath, 66 byte

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

Dùng thử trực tuyến

Thật không may, tên dài implicit_plotparametric_plot(cộng với nhu cầu xác định một biến khác với định nghĩa ngầm định xcho cái trước) làm cho ba tùy chọn đầu tiên quá dài để xem xét.

Cảm ơn busukxuan và Andrea Lazzarotto cho một byte


1
^.5làm việc thay **.5thế?
busukxuan

1
@busukxuan Không. Sage được xây dựng trên Python và ^là XOR.
Mego

1
Nhưng hiền thay thế ^bằng **. Tôi đã tự hỏi liệu đó có phải là vì nó không thể thay thế chính xác nếu được theo sau bởi.
busukxuan

@busukxuan Sage sử dụng ký hiệu sức mạnh của Python ( **). Nếu bạn đã cố gắng sử dụng ^, bạn sẽ nhận được một cảnh báo và kết quả không chính xác.
Mego

1
@AndreaLazzarotto Sau đó, rõ ràng bộ nhớ của tôi bị lỗi. Cảm ơn.
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

Cảm ơn @AlbertRenshaw, tôi cũng đã thay đổi 100 giây thành 99 giây để có thêm 2 byte


1
+1; Tôi thích việc sử dụng vcho các chức năng, sự tinh tế tốt. Bạn có thể cạo hai byte bằng cách thay thế 4000với 4e3và thay thế 0.001với1e-3
Albert Renshaw

6

Thạch , 31 byte

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

Hãy thử trực tuyến!

hoặc 35 byte với a , thay vì *điền: thay đổi dòng giữa thành ²+’*3<ç×9829Ọ»⁶.

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

Làm sao?

Triển khai: phương trìnhtrên một lưới các ký tự được phân tách bằng 51 đến 51 dòng.

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

Chỉnh sửa: Đã lưu 4 byte nhờ @ user2428118. Phiên bản ES7 cho 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)


làm thế nào về y**3thay vì y*y*y?
svarog

1
@svarog Do đó, ghi chú của tôi "Sẽ ngắn hơn một chút trong ES7" ...
Neil

tốt, nó hoạt động trên crom 55, vậy tại sao không thêm phiên bản es7?
svarog

1
@svarog Vì tôi không có crom 55 tiện dụng ...
Neil

1
@ ThisSuitIsBlackNot Nó phàn nàn về các biến không được khai báo khi tôi thử.
Neil

4

BBC BASIC, 80

Sẽ kết thúc golf vào ngày mai.

Tải xuống thông dịch viên tại 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.

Vẽ một trái tim đầy bằng cách sử dụng phương trình đầu tiên, chúng ta sắp xếp lại và lấy căn bậc ba của (có 3 căn bậc ba của một số thực, một số thực và 2 số phức nhưng chúng ta chỉ quan tâm đến gốc thực ở đây.) Sau đó chúng ta sắp xếp lại có được một bậc hai trong y

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

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

Sử dụng công thức bậc hai tiêu chuẩn cho các biểu thức của loại ay^2+by+c=0và lợi dụng thực tế là a= 1 chúng ta nhận được

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

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

trong đó -b/2 = (x^0.66)/2(đại diện bởi btrong chương trình.)

Chúng tôi chỉ cần quét qua các giá trị xtừ trái sang phải, vẽ một đường thẳng đứng giữa mỗi cặp giá trị hợp lệ yđể xây dựng một hình dạng rắn.

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.

vô dụng

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 byte

Hiển thị cho Ruby một số tình yêu.

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

Đầu ra:

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

với một số dòng trống ở trên và dưới


2

Xử lý.js: 123 119 byte

vô dụng:

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

đánh gôn

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

cái này khá gian lận vì nó âm mưu # 2 từ 0 đến vô cùng thay vì từ -1 đến 1 như trong hình để lưu vào hai abs (t). Nhưng nó đúng về mặt kỹ thuật vì có hơn 100 điểm.


130 byte "chính xác"

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

thử trực tuyến

lưu ý: có thể có một cách để có được 100 điểm trên khung vẽ 100x100 mặc định và tắt thiết lập.


Không có đoạn trích nào của bạn làm bất cứ điều gì cho tôi trên phiên bản Xử lý cục bộ của tôi (ngoại trừ đoạn thứ hai chỉ rút được 1 điểm)
Kritixi Lithos

bạn đã thử trên sketchpad chưa? ("thử trực tuyến") bạn cần nhấp vào "vẽ phác thảo"
satibel

Nhưng tôi nghĩ rằng nó sẽ được gọi là "Chế biến.JS". Để đoạn trích hoạt động với tôi, bạn phải sử dụng floatthay vìint
Kritixi Lithos

Rất tiếc, đã quên .js và nhờ đó tôi đã lưu được 4 byte bằng cách xóa int vô dụng.
satibel

2

TI-84 Cơ bản, 40 38 byte

Tương tự như câu trả lời & đầu ra của @ 12Me21, nhưng đối với dòng TI-83/84 thay thế.

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

Là sử dụng Ans thực sự nhỏ hơn ở đây? Tôi nghĩ rằng Ans là 2 byte.
12Me21

@ 12Me21 Không, nó có cùng kích thước và cũng nhanh hơn. (Ít nhất là đối với TI-83/84, tôi không biết về TI-80).
Timtech

1

BBC BASIC (BBC Micro) (126 byte)

Đây là một biến thể của câu trả lời của Level River Street , nhưng đối với lần lặp ban đầu của BBC MicroIC của BBC BASIC.

Bạn có thể sao chép và dán một trong những điều sau vào chức năng dán mới của JSBeeb tại https://bbc.godbolt.org/ (Trình giả lập BBC Micro được hỗ trợ bằng JavaScript), khi đã dán, hãy nhấn Enter bên trong 'màn hình' để hiển thị mới nhắc nhở, sau đó nhập RUN, sau đó nhấn Enter để chạy một trong hai phiên bản.

chơi gôn (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.

vô đạo đức. (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

Dòng 7 yêu cầu kiểm tra X, để ngăn lỗi "Phạm vi nhật ký" khi X trở thành 0 nửa vòng lặp. Khác với điều này, nó khá giống nhau. Nó chậm hơn rất nhiều khi vẽ trên một máy thật, mà JSBeeb mô phỏng khá tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.