Намалюйте / побудуйте графік серця


45

Ваше завдання - намалювати / намалювати одне із сердець нижче. Розмір повинен бути не менше 50х50 пікселів (векторна графіка в порядку). Ви можете вибрати, яке з сердець ви хочете намалювати / побудувати. Осі, лінії сітки тощо приймаються. На графіку повинно бути не менше 100 чітких координат / точок. Серце при бажанні може бути наповнене кольором.

введіть тут опис зображення

Рівняння є або:

введіть тут опис зображення

або

введіть тут опис зображення

введіть тут опис зображення

tзнаходиться в асортименті [-1, 1].

або

введіть тут опис зображення

або

введіть тут опис зображення

Це тому найкоротший код (кожною мовою) у байтах виграє. Укажіть, будь ласка, вихід (або посилання на онлайн-перекладача).

Відповіді:


66

TI-80 BASIC, 45 43 41 39 байт

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

введіть тут опис зображення

Це зайняло деякий час, і акумулятор розрядився, тому я не хотів продовжувати рух.

Я спробував використати друге рівняння, але не зміг змусити його працювати, але насправді виявилося довшим, тому я просто адаптував іншу відповідь, яку мав.

EDIT: Я щойно помітив вимогу 50x50 пікселів, на жаль, екран має висоту лише 47 пікселів, тому це неможливо.


1
креативно!
далеарн

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                                        

Пояснення (оскільки ОП попросив це):

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

Це просто перше рівняння, трохи переставлене, щоб зробити його коротшим. $ y безпосередньо представляє y у формулі. $ _ спочатку пропорційний x, але множинно присвоюється собі ( $_*=$_/1e3), що робить його пропорційним x². Оскільки х2 використовується у формулі двічі, це економить кілька байт.

1e3означає 1000, і його вибрали, тому що він короткий, а результат виглядає добре. ** є енергооператором Перла. Я >0скоріше використовую , ніж ==0тому, що хочу заповнити серце.

flip_flop := $|--?v60:3

v60 - це зловживання архаїчним синтаксисом версії-рядка для позначення символу з кодом ASCII 60: '<'.

$ | є магічною змінною, яка може коли-небудь бути 0 або 1. Декрементація, коли вона вже 0, встановлює її до 1. Зменшення, коли це 1, природно встановлює її 0. Таким чином, $ | - часто використовується як тригер: щоразу він оцінюється, він чергує істинне і хибне.

В цілому цей вираз повертається альтернативно '<' та 3.

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

Вкладені тернеари. Якщо умова хибна (→ ми поза серцем), оцінюється до $ ", що є магічною змінною, яка за замовчуванням" "(єдиний пробіл). Якщо умова істинна (→ ми всередині серця), вона оцінює flip_flop.

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

Оцінює inner_loop кілька разів, при цьому $ _ ("за замовчуванням" Perl) переходить від -40 до 40 з кроком 1. Він збирає результати оцінювання у тимчасовий список, після чого друкує їх усі, об'єднані, закінчуючи новим рядком .

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

Цей параметр виконує зовнішній_луп неодноразово, з $ y переходить від 1,24 (1 - (-6 / 25)) до -1 (1 - 50/25), у зменшенні 0,04.

Зауважимо, що y ділиться на 25, тоді як x² ділиться на 1000, що це те саме, що ділити x на sqrt (1000). Коефіцієнт ~ 1,265, про який я згадував, - sqrt (1000) / 25.


5
Ага, я думаю, це не порушує жодних правил ... Моя улюблена поки що :) Я хотів би пояснення, хоча :)
Стюі Гріффін

1
Мене щось бентежить. Навіщо використовувати? V60 над, скажімо, "<"?
Нік Хартлі

Однакової довжини, але простіше набрати.
Grimmy

Серце з серця.
TheWanderer

34

Mathematica WolframAlpha, 17 15 13 11 байт

Поголений 2 байти завдяки Мартину Ендеру (перша крива серця -> крива серця 1)

Поголив ще 2 байти завдяки Мартіну Ендеру (крива серця 1 -> серцевий викид1)

Це, мабуть, обман (очевидне рішення), але тут ідеться.

heartcurve1

Спробуйте тут!

Я впевнений, що існує спосіб скоротити перше, серце чи криву таким чином, що Вольфрам все-таки це сприймає. Ну, зараз немає місця, можливо, якесь абревіатура для серця?

Чи отримую я бонусні бали за створення 2 з них?

heartcurves

Спробуйте це тут!


5
heart curve 1
Мартін Ендер

6
Власне, heartcurve1працює.
Мартін Ендер

23
@MartinEnder Що на світі
Thunda

1
Перший з серцевих хвиль схоже на сідницю
Михайло V

@MikhailV 0-й серцевий хід (кардоїд) схожий на зад.
Thunda

29

Математика, 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
"Трохи потроху" - це трохи заниження ...
Мего

ContourPlot настільки запускає OCD. Аааааа! : 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

SmileBASIC, 85 81 байт

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.

введіть тут опис зображення


9

Десмос , 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, я не бачу, як це неправильно. Де є нова лінія?
Даніель




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 та Андреа Лацаротто за байт


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
Альберт Реншоу

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?
сварог

1
@svarog Отже, моя примітка "Буде трохи коротше в ES7" ...
Ніл

добре, він працює на Chrome 55, так чому б не додати версію es7?
сварог

1
@svarog Оскільки у мене немає хрому 55 під рукою ...
Ніл

1
@ThisSuitIsBlackNot Коли я намагався скаржитися на недекларовані змінні.
Ніл

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.

неозорий

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

Рубін, 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

Processing.js: 123 119 байт

неозорений:

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

ця є досить хитрою, оскільки планує №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 за замовчуванням і вимкнути налаштування.


Жоден із ваших фрагментів нічого не робить для мене на моїй локальній версії Processing (крім другої, яка лише 1 бал)
Kritixi Lithos

ви пробували на ескізі? ("спробуйте в Інтернеті") потрібно натиснути "візуалізувати ескіз"
satibel

Але я думаю, що це буде називатися "Processing.JS". Щоб фрагмент працював на мене, ви повинні використовувати floatзамість ньогоint
Kritixi Lithos

oops, забув .js, і завдяки цьому я врятував 4 байти, видаливши непотрібний int.
сатибель

2

TI-84 Basic, 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 байт)

Ця зміна рівня води в річці стріт відповіді , але для ітерації оригінальної BBC Micro, Бі -бі- BASIC.

Ви можете скопіювати та вставити будь-яке з наведеного нижче у нову функціональність JSBeeb на веб-сторінці https://bbc.godbolt.org/ (електронний емулятор BBC, що працює на JavaScript), після його вставки натисніть клавішу 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.

неозорий. (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 імітує досить добре.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.