วาด / ลงจุดกราฟหัวใจ


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
ความคิดสร้างสรรค์แน่นอน!
2560

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²สองครั้งในสูตรนี้จึงช่วยประหยัดสองสามไบต์

1e3หมายถึง 1,000 และถูกเลือกเพราะสั้นและให้ผลลัพธ์ที่ดี ** เป็นผู้ดำเนินการพลังงานของ Perl ฉันใช้>0มากกว่า==0เพราะฉันต้องการหัวใจที่เต็มไปด้วย

flip_flop := $|--?v60:3

v60 เป็นการละเมิดไวยากรณ์รุ่นสตริงโบราณเพื่อแสดงถึงอักขระที่มีรหัส ASCII 60: '<'

$ | เป็นตัวแปรเวทย์มนตร์ที่สามารถเป็น 0 หรือ 1 ได้เท่านั้นการลดลงเมื่อมีอยู่แล้ว 0 ตั้งค่าเป็น 1 การลดลงเมื่อมันเป็น 1 กำหนดเป็น 0 ดังนั้นธรรมชาติ $ | - มักใช้เป็นฟลิปฟล็อป: ในแต่ละครั้ง มันถูกประเมินมันสลับระหว่างจริงและเท็จ

โดยรวมแล้วนิพจน์นี้คืนค่าอีกทางหนึ่ง '<' และ 3

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

Ternaries ที่ซ้อนกัน หาก condition เป็นเท็จ (→เราอยู่นอกหัวใจ) ให้ประเมินเป็น $ "ซึ่งเป็นตัวแปรเวทมนต์ที่มีค่าเริ่มต้นเป็น" "(เว้นวรรคเดียว) หากเงื่อนไขเป็นจริง (→เราอยู่ในใจ) ประเมิน flip_flop

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

หาค่า Inner_loop ซ้ำ ๆ โดยมี $ _ (ตัวแปร“ default” ของ 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²ถูกหารด้วย 1,000 ซึ่งเหมือนกับการหาร x ด้วย sqrt (1000) ปัจจัยที่ 1.265 ที่ฉันพูดถึงคือ sqrt (1,000) / 25


5
อืมฉันคิดว่ามันไม่ได้ละเมิดกฎใด ๆ ... ที่ฉันชอบจนถึงตอนนี้ :) ฉันชอบคำอธิบาย :) :)
Stewie Griffin

1
ฉันสับสนเกี่ยวกับบางสิ่ง ทำไมต้องใช้? v60 พูดว่า "<"
Nic Hartley

ความยาวเท่ากัน แต่พิมพ์ง่ายกว่า
Grimmy

หัวใจที่ทำจากหัวใจ
TheWanderer

34

Mathematica WolframAlpha, 17 15 13 11 ไบต์

โกนออกได้ 2 ไบต์ด้วย Martin Ender (เส้นโค้งหัวใจที่ 1 -> เส้นโค้งหัวใจ 1)

โกนออกไปอีก 2 ไบต์ด้วย Martin Ender (เส้นโค้งของหัวใจ 1 -> heartcurve1)

นี่อาจเป็นการโกง (วิธีแก้ปัญหาที่ชัดเจน) แต่นี่จะไป

heartcurve1

ลองที่นี่!

ฉันแน่ใจว่ามีวิธีที่จะทำให้สั้นลงวันที่ 1 หัวใจหรือเส้นโค้งเช่นนี้ Wolfram ยังคงยอมรับมัน ตอนนี้ไม่มีที่ว่างเลยบางทีตัวย่อสำหรับหัวใจ

ฉันจะได้รับคะแนนโบนัสสำหรับการลงจุด 2 จุดหรือไม่?

heartcurves

ลองที่นี่!


5
heart curve 1
Martin Ender

6
อันที่จริงheartcurve1การทำงาน
Martin Ender

23
@MartinEnder มีอะไรในโลก
Thunda

1
คนแรกของหัวใจมีลักษณะเหมือนก้น แต่
มิคาอิล V

@MailailV 0 heartcurve (cardoid) ดูเหมือนว่าก้น
พฤหัสบดีที่

29

Mathematica, 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
"Trippy นิดหน่อย" เป็นการพูดน้อย ...
Mego

ContourPlot ทริกเกอร์ OCD มาก Aaaaaah! : D
KeyWeeUsr

25

Casio 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 (ใช่ฉันค่อนข้างเก่าและเต็มไปด้วยฝุ่น)




9

Desmos , 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ɪᴋᴇʀ

@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, 137 133 ไบต์

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 ฉันเปลี่ยน 100s เป็น 99s อีก 2 ไบต์


1
+1; ฉันชอบการใช้vฟังก์ชั่นที่มีไหวพริบดี คุณสามารถโกนได้สองไบต์โดยแทนที่4000ด้วย4e3และแทนที่0.001ด้วย1e-3
Albert Renshaw

6

เยลลี่ 31 ไบต์

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

ลองออนไลน์!

หรือ35 ไบต์ที่มีมากกว่า*การเติม: ²+’*3<ç×9829Ọ»⁶การเปลี่ยนแปลงสายกลาง

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

อย่างไร?

นำไปปฏิบัติ: สมการเส้นตารางที่แยกจากตัวอักขระจำนวน 51 บรรทัดโดยตัวดึงข้อมูล 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)

แก้ไข: บันทึกแล้ว 4 ไบต์ด้วย @ user2428118 รุ่น ES7 สำหรับ 143 ไบต์:

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 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 คิวบ์รูทของจำนวนจริงหนึ่งจริงและซับซ้อน 2 แต่เราสนใจรากจริงที่นี่เท่านั้น) จากนั้นเราจัดเรียงใหม่อีกครั้งเพื่อ รับกำลังสองมา y

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

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

ใช้สูตรสมการกำลังสองมาตรฐานสำหรับนิพจน์ประเภทay^2+by+c=0และใช้ประโยชน์จากข้อเท็จจริงที่a= 1 ที่เราได้รับ

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

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

โดยที่-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.

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 ไบต์

แสดงความรักด้วยทับทิม

-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

กำลังดำเนินการ.js: 123 119 ไบต์

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

แข็งแรงเล่นกอล์ฟ:

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

อันนี้ค่อนข้าง cheaty เนื่องจากมันแปลง # 2 จาก 0 เป็นอนันต์แทนจาก -1 ถึง 1 ดังที่แสดงในรูปภาพเพื่อประหยัด abs สองตัว (t) แต่มันถูกต้องทางเทคนิคเพราะมีมากกว่า 100 คะแนน


130 ไบต์ "ถูกต้อง" อย่างใดอย่างหนึ่ง

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

ลองออนไลน์

หมายเหตุ: อาจเป็นวิธีที่จะได้รับ 100 คะแนนจาก 100x100 canvas เริ่มต้นและโกนการตั้งค่าออก


ตัวอย่างของคุณไม่มีอะไรทำเพื่อฉันในการประมวลผลเวอร์ชันท้องถิ่นของฉัน (ยกเว้นอันที่สองซึ่งเพิ่งดึง 1 คะแนน)
Kritixi Lithos

คุณได้ลองใช้ Sketchpad แล้วหรือยัง ("ลองออนไลน์") คุณต้องคลิก "เรนเดอร์ร่าง"
satibel

แต่ฉันคิดว่าจะเรียกว่า "กำลังประมวลผล JS" แทน เพื่อให้ข้อมูลตัวอย่างสำหรับฉันทำงานได้คุณต้องใช้floatแทนint
Kritixi Lithos

อ๊ะลืม. js และขอบคุณที่ฉันบันทึก 4 ไบต์โดยการลบ int ไร้ประโยชน์
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

@ 12Me21 ไม่มันมีขนาดเท่ากันและเร็วกว่าด้วย (อย่างน้อยสำหรับ TI-83/84 ฉันไม่รู้เรื่อง TI-80)
Timtech

1

BBC BASIC (BBC Micro) (126 ไบต์)

นี่คือรูปแบบของคำตอบของLevel River Street แต่สำหรับการทำซ้ำ BBC Micro ดั้งเดิมของ BBC BASIC

คุณสามารถคัดลอกและวางสิ่งใดสิ่งหนึ่งต่อไปนี้ลงในฟังก์ชันการวางแบบใหม่ของ JSBeeb ได้ที่https://bbc.godbolt.org/ (ตัวจำลอง JavaScript ของ BBC Micro) จาวาสคริปต์เมื่อวางแล้วกด 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.

ungolfed (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 เพื่อป้องกันข้อผิดพลาด "ช่วงบันทึก" เมื่อ X กลายเป็น 0 ครึ่งทางผ่านลูป นอกเหนือจากนี้มันก็เหมือนกันมาก มันช้ากว่ามากในการวาดบนเครื่องจริงซึ่ง JSBeeb เลียนแบบได้ค่อนข้างดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.