Twoim wyzwaniem jest narysowanie / nakreślenie jednego z poniższych serc. Rozmiar musi wynosić co najmniej 50 x 50 pikseli (grafika wektorowa jest w porządku). Możesz wybrać, które z serc chcesz narysować / spiskować. Osie, linie siatki itp. Są akceptowane. Na wykresie musi znajdować się co najmniej 100 różnych współrzędnych / punktów. Serce może być wypełnione kolorem, jeśli chcesz.
Równania są albo:
lub
t
jest w zasięgu [-1, 1]
.
lub
lub
To jest golf golfowy, więc wygrywa najkrótszy kod (w każdym języku) w bajtach. Proszę podać dane wyjściowe (lub link do tłumacza online).
źródło
IF (X²+ANS²-1)³-X²ANS³<0
zIF (X²+ANS²-1)³<X²ANS³
?Perl, 86 bajtów
Uruchom z
perl -E
.Wykreśla wypełnione serce ASCII, korzystając z pierwszego równania. Zauważ, że oś x jest rozciągnięta o współczynnik ~ 1,265: ma to na celu przeciwdziałanie faktowi, że czcionki końcowe są zwykle znacznie większe w pionie niż w poziomie.
Wynik:
Objaśnienie (ponieważ OP poprosił o to):
To jest po prostu pierwsze równanie, nieco zmienione, aby było krótsze. $ y bezpośrednio reprezentuje y we wzorze. $ _ jest początkowo proporcjonalny do x, ale jest wielokrotnie przypisywany do siebie (
$_*=$_/1e3
), co czyni go proporcjonalnym do x². Ponieważ x 2 jest użyte we wzorze dwukrotnie, oszczędza to kilka bajtów.1e3
oznacza 1000 i został wybrany, ponieważ jest krótki, a wynik wygląda dobrze.**
jest operatorem mocy Perla. Używam>0
raczej niż==0
dlatego, że chcę pełne serca.v60 jest nadużyciem archaicznej składni ciągów wersji do oznaczenia znaku kodem ASCII 60: „<”.
$ | jest magiczną zmienną, która może być zawsze równa 0 lub 1. Zmniejszanie, gdy już wynosi 0, ustawia ją na 1. Zmniejszanie, gdy wynosi 1, naturalnie ustawia ją na 0. Zatem $ | - jest często używane jako przerzutnik: za każdym razem jest oceniany, zmienia się na prawdę i fałsz.
Jako całość, to wyrażenie zwraca na przemian „<” i 3.
Zagnieżdżone trójskładniki. Jeśli warunek jest fałszywy (→ znajdujemy się poza sercem), zwraca wartość $ „, która jest magiczną zmienną, która domyślnie przyjmuje wartość„ ”(pojedyncza spacja). Jeśli warunek jest prawdziwy (→ jesteśmy w sercu), to ocenia flip_flop.
Ocenia wewnętrznie pętlę wielokrotnie, z $ _ („domyślną” zmienną Perla) w zakresie od -40 do 40, w przyrostach co 1. Zbiera wyniki tych ocen na liście tymczasowej, a następnie drukuje je wszystkie, konkatenuje, kończąc na nowej linii .
Powoduje to wielokrotne uruchamianie pętli zewnętrznej, przy czym $ y zmienia się z 1,24 (1 - (-6 / 25)) do -1 (1 - 50/25), w odstępach 0,04.
Zauważ, że y jest dzielone przez 25, podczas gdy x² jest dzielone przez 1000, co jest równoznaczne z dzieleniem x przez sqrt (1000). Wspomniany współczynnik ~ 1,265 to sqrt (1000) / 25.
źródło
MathematicaWolframAlpha,17151311 bajtówOgolono 2 bajty dzięki Martinowi Enderowi (1. krzywa serca -> krzywa serca 1)
Ogolono kolejne 2 bajty dzięki Martinowi Enderowi (krzywa serca 1 -> krzywa serca 1)
Jest to prawdopodobnie oszustwo (oczywiste rozwiązanie), ale proszę bardzo.
Wypróbuj tutaj!
Jestem pewien, że istnieje sposób na skrócenie pierwszego, serca lub zakrętu, tak aby Wolfram nadal to akceptował.Cóż, teraz jest wolne od przestrzeni, może jakiś skrót od serca?Czy otrzymam punkty bonusowe za wykreślenie 2 z nich?
Wypróbuj tutaj!
źródło
heart curve 1
heartcurve1
działa.Mathematica, 52 bajty
Możemy zaoszczędzić jeszcze jeden bajt,
ContourPlot
ale wtedy tło staje się nieco trippy:Dla jednego dodatkowego bajtu moglibyśmy użyć czwartej formuły i
PolarPlot
zamiast tego:źródło
Casio FX-7700GH, 21 bajtów
Nienazwana funkcja wykresu, którą należy wprowadzić do jednego ze szczelin funkcji wykresu współrzędnych biegunowych, a następnie robi to, co mówi na puszce.
Zakres wykresu należy ustawić ręcznie (chyba że pasuje do bieżącego zakresu), ustawiłem go na
Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1
.Powinien działać również na innych kalkulatorach Casio Power z serii graficznej, a być może później również na kalkulatorach graficznych Casio.
(tak
, jestemdość stary i zakurzony)źródło
MATLAB / Octave, 31 bajtów
źródło
SmileBASIC,
8581 bajtówźródło
Desmos ,
20 1615 bajtówV 2:
(=
xx)^.3y=xx+yy-1
)V 1:
V 0:
źródło
xx
zamiastx^2
MATL, 36 bajtów
Wypróbuj w MATL Online
źródło
Python,
119116 bajtówWypróbuj online
źródło
SageMath, 66 bajtów
Wypróbuj online
Niestety, długie nazwy
implicit_plot
iparametric_plot
(oraz potrzeba zdefiniowania zmiennej innej niż domyślnie zdefiniowanax
dla pierwszej) sprawiają, że pierwsze trzy opcje są o wiele za długie, aby je rozważyć.Dzięki busukxuan i Andrei Lazzarotto za bajt
źródło
^.5
działa zamiast**.5
?^
jest XOR.^
z**
. Zastanawiałem się, czy to dlatego, że nie można go właściwie zastąpić, jeśli następuje.
**
). Jeśli spróbujesz użyć^
, otrzymasz ostrzeżenie i niepoprawny wynik.C,
137133 bajtówhttp://codepad.org/zqqYUui8
Dzięki @AlbertRenshaw, zmieniłem również 100s na 99s dla 2 dodatkowych bajtów
źródło
v
do tej funkcji, dobry talent. Można golić dwa bajty zastępując4000
ze4e3
i zastępowanie0.001
z1e-3
Galaretka , 31 bajtów
Wypróbuj online!
lub 35 bajtów z
♥
zamiast*
wypełnienia: Zmiana do środkowej linii²+’*3<ç×9829Ọ»⁶
.W jaki sposób?
Implementuje: ponad 51 na 51 linii oddzielonych linii znaków.
źródło
JavaScript (ES6),
151147 bajtówEdycja: Zapisano 4 bajty dzięki @ user2428118. Wersja ES7 dla 143 bajtów:
źródło
y**3
zamiasty*y*y
?BBC BASIC, 80
Jutro zakończę grę w golfa.
Pobierz tłumacza na http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Rysuje wypełnione serce za pomocą pierwszego równania, które przestawiamy i pobieramy pierwiastek sześcianowy (istnieją 3 pierwiastki sześcianowe liczby rzeczywistej, jeden rzeczywisty i 2 zespolone, ale interesuje nas tylko prawdziwy pierwiastek.) Następnie przestawiamy ponownie, aby wpaść w kwadrat
y
Używając standardowej formuły kwadratowej do wyrażeń typu
ay^2+by+c=0
i wykorzystując fakt, żea
= 1 otrzymujemygdzie
-b/2 = (x^0.66)/2
(reprezentowane przezb
w programie.)Po prostu skanujemy wartości
x
od lewej do prawej, rysując pionową linię między każdą parą prawidłowych wartości,y
aby uzyskać solidny kształt.bez golfa
źródło
Rubinowy, 80 bajtów
Pokaż Ruby trochę miłości.
Wynik:
z pewnymi pustymi liniami powyżej i poniżej
źródło
Processing.js:
123119 bajtówbez golfa:
grał w golfa:
ten jest dość oszukiwany, ponieważ wykreśla # 2 od 0 do nieskończoności zamiast od -1 do 1, jak pokazano na rysunku, aby zaoszczędzić na dwóch abs (t). Ale jest to technicznie poprawne, ponieważ jest więcej niż 100 punktów.
130 bajtów „poprawiających” jeden
spróbuj online
Uwaga: prawdopodobnie istnieje sposób na zdobycie 100 punktów na domyślnym płótnie 100 x 100 i ogolenie konfiguracji.
źródło
float
zamiastint
TI-84 Basic,
4038 bajtówPodobne do odpowiedzi i wyników @ 12Me21, ale zamiast tego dla serii TI-83/84.
źródło
BBC BASIC (BBC Micro) (126 bajtów)
Jest to odmiana poziom rzeki Street odpowiedzi , ale dla iteracji oryginalnego BBC Micro BBC podstawowego.
Możesz skopiować i wkleić dowolny z poniższych elementów do nowej funkcji JSBeeb wklejania na https://bbc.godbolt.org/ (emulator BBC Micro oparty na JavaScript), po wklejeniu naciśnij Enter na ekranie, aby wyświetlić nowy monit, a następnie wpisz RUN, a następnie naciśnij klawisz Enter, aby uruchomić dowolną wersję.
grał w golfa. (126 bajtów)
bez golfa. (176 bajtów)
Linia 7 wymaga sprawdzenia X, aby zapobiec błędowi „Log range”, gdy X osiągnie wartość 0 w połowie pętli. Poza tym jest prawie tak samo. Rysowanie na prawdziwej maszynie jest dużo wolniejsze, co JSBeeb dobrze naśladuje.
źródło