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