Ваша задача - нарисовать / построить одно из сердец ниже. Размер должен быть не менее 50x50 пикселей (с векторной графикой все в порядке). Вы можете выбрать, какое из сердец вы хотите нарисовать / построить. Оси, линии сетки и т. Д. Принимаются. На графике должно быть не менее 100 различных координат / точек. Сердце может быть наполнено цветом, если вы хотите.
Уравнения являются либо:
или же
t
находится в диапазоне [-1, 1]
.
или же
или же
Это код-гольф, поэтому выигрывает самый короткий код (на каждом языке) в байтах. Пожалуйста, предоставьте вывод (или ссылку на онлайн-переводчика).
источник
IF (X²+ANS²-1)³-X²ANS³<0
наIF (X²+ANS²-1)³<X²ANS³
?Perl, 86 байт
Беги с
perl -E
.Графики заполненного сердца ASCII, используя первое уравнение. Обратите внимание, что ось x растянута с коэффициентом ~ 1.265: это должно противодействовать тому факту, что терминальные шрифты обычно намного больше по вертикали, чем по горизонтали.
Выход:
Объяснение (так как ОП попросил его):
Это просто первое уравнение, слегка перестроенное, чтобы сделать его короче. $ y непосредственно представляет y в формуле. $ _ изначально пропорционален x, но присваивается самому себе (
$_*=$_/1e3
), что делает его пропорциональным x². Поскольку x² используется в формуле дважды, это экономит несколько байтов.1e3
означает 1000, и был выбран, потому что он короткий, и результат выглядит хорошо.**
является энергетическим оператором Perl. Я использую,>0
а не==0
потому, что я хочу заполненное сердце.v60 является злоупотреблением архаичным синтаксисом строки версии для обозначения символа кодом ASCII 60: «<».
$ | магическая переменная, которая может быть только 0 или 1. Уменьшение, когда оно уже равно 0, устанавливает его в 1. Уменьшение, когда оно 1, естественно устанавливает его в 0. Таким образом, $ | - часто используется как триггер: каждый раз он оценивается, он чередуется между истиной и ложью.
В целом, это выражение возвращает поочередно '<' и 3.
Вложенные троицы. Если условие ложно (→ мы за пределами сердца), значение равно $ ", что является магической переменной со значением по умолчанию" "(один пробел). Если условие истинно (→ мы внутри сердца), оно оценивает flip_flop.
Повторно оценивает inner_loop, причем $ _ (переменная Perl «по умолчанию») изменяется от -40 до 40 с шагом 1. Он собирает результаты этих вычислений во временный список, затем печатает их все, объединяет их, заканчивая новой строкой ,
Он запускает external_loop несколько раз, с $ y, изменяющимся с 0.04 на 1,24 (1 - (-6 / 25)) до -1 (1 - 50/25).
Обратите внимание, что y делится на 25, а x² делится на 1000, что аналогично делению x на sqrt (1000). Коэффициент ~ 1,265, который я упомянул, равен sqrt (1000) / 25.
источник
MathematicaWolframAlpha,17151311 байтСрезано на 2 байта благодаря Мартину Эндеру (1-я кривая сердца -> 1-я кривая сердца)
Срезал еще 2 байта благодаря Мартину Эндеру (кривая сердца 1 -> heartcurve1)
Это, вероятно, обман (очевидное решение), но здесь идет.
Попробуй это здесь!
Я уверен, что есть способ укоротить 1-й, сердечный или изогнутый, чтобы Вольфрам все еще его принимал.Ну, теперь там нет места, может быть, какое-то сокращение для сердца?Получу ли я бонусные баллы за построение 2 из них?
Попробуйте это здесь!
источник
heart curve 1
heartcurve1
работает.Mathematica, 52 байта
Мы могли бы сохранить еще один байт,
ContourPlot
но затем фон стал немного триповым:Для одного дополнительного байта мы могли бы использовать четвертую формулу и
PolarPlot
вместо этого:источник
Casio FX-7700GH, 21 байт
Функция безымянного графа должна быть введена в один из слотов функции отображения полярных координат, а затем выполняет то, что говорит на жестяной коробке.
Диапазон построения графика должен быть установлен вручную (если он не соответствует текущему заданному диапазону), я установил его на
Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1
.Должен работать и на других калькуляторах Casio Power Graphic Series, и, возможно, позже на графических калькуляторах Casio.
(да
ядовольно старый и пыльный)источник
MATLAB / Octave, 31 байт
источник
SmileBASIC,
8581 байтисточник
Desmos ,
20 1615 байтV 2:
(=
xx)^.3y=xx+yy-1
)V 1:
V 0:
источник
xx
вместоx^2
MATL, 36 байт
Попробуйте это на MATL Online
источник
Питон,
119116 байтПопробуйте онлайн
источник
SageMath, 66 байт
Попробуйте онлайн
К сожалению, длинные имена
implicit_plot
иparametric_plot
(плюс необходимость определения переменной, отличной от неявно определеннойx
для первой) делают первые три варианта слишком длинными для рассмотрения.Спасибо Бусуксуану и Андреа Лаззаротто за байт
источник
^.5
вместо**.5
?^
является XOR.^
с**
. Мне было интересно, было ли это потому, что он не мог заменить правильно, если за ним последовал.
**
). Если вы попытаетесь использовать^
, вы получите предупреждение и неверный результат.C,
137133 байтаhttp://codepad.org/zqqYUui8
Спасибо @AlbertRenshaw, я также изменил 100 на 99 для еще 2 байта
источник
v
для функции, хороший талант. Вы можете бриться два байта, заменив4000
с4e3
и заменой0.001
с1e-3
Желе , 31 байт
Попробуйте онлайн!
или 35 байтов с
♥
, а не с*
заполнением: изменить среднюю строку на²+’*3<ç×9829Ọ»⁶
.Как?
Реализует: более 51 на 51 перевод строки разделенной сеткой символов.
источник
JavaScript (ES6),
151147 байтРедактировать: 4 байта сохранены благодаря @ user2428118. Версия ES7 для 143 байтов:
источник
y**3
вместоy*y*y
?BBC BASIC, 80
Завтра закончу играть в гольф.
Скачать переводчик можно по адресу http://www.bbcbasic.co.uk/bbcwin/bbcwin.html.
Рисует заполненное сердце, используя первое уравнение, которое мы переставляем и берем кубический корень (есть 3 кубических корня действительного числа, один действительный и 2 комплексных, но здесь нас интересует только действительный корень.) Затем мы снова переставляем в получить квадратичный в
y
Используя стандартную квадратную формулу для выражений типа
ay^2+by+c=0
, и используя тот факт, чтоa
= 1, мы получаемгде
-b/2 = (x^0.66)/2
(представленb
в программе.)Мы просто сканируем значения
x
слева направо, рисуя вертикальную линию между каждой парой допустимых значений,y
чтобы построить сплошную форму.ungolfed
источник
Рубин, 80 байтов
Покажите Руби немного любви.
Выход:
с некоторыми пустыми строками сверху и снизу
источник
Processing.js:
123119 байтungolfed:
golfed:
этот довольно обманчив, поскольку он строит # 2 от 0 до бесконечности вместо от -1 до 1, как показано на рисунке, чтобы сэкономить на двух абс (т). Но это технически правильно, так как есть более 100 баллов.
130 байт "правильнее" одного
попробуйте это онлайн
примечание: вероятно, есть способ получить 100 точек на холсте 100x100 по умолчанию и сбрить настройки.
источник
float
int
TI-84 Basic,
4038 байтАналогично ответу и выводу @ 12Me21, но вместо этого для серии TI-83/84.
источник
BBC BASIC (BBC Micro) (126 байт)
Это вариант ответа Ривер-стрит , но для оригинальной версии BBC Micro BBC BASIC.
Вы можете скопировать и вставить любое из следующего в новую функцию вставки JSBeeb по адресу https://bbc.godbolt.org/ (эмулятор BBC Micro с поддержкой JavaScript), после его вставки нажмите Enter на «экране», чтобы отобразить новый запрос, затем введите RUN, затем нажмите Enter, чтобы запустить любую версию.
golfed. (126 байт)
ungolfed. (176 байт)
В строке 7 требуется проверка X, чтобы предотвратить ошибку «Log range», когда X становится равным 0 в середине цикла. Кроме этого, это в значительной степени то же самое. Рисовать на реальной машине намного медленнее, что JSBeeb очень хорошо эмулирует.
источник