Spójrz na ten kwiat rumianku:
Ładne, prawda? A co, jeśli powiem ci, że to nie był właściwie jeden kwiat?
Wiele kwiatów (w tym słoneczniki, rumianki, stokrotki i inne) faktycznie składa się z wielu bardzo małych kwiatów (czarne kropki na słonecznikach) na główce kwiatu. Te miniaturowe kwiaty nazywane są różyczkami i są ułożone w bardzo szczególny sposób.
Zasadniczo pozycja n-tego floret na główce kwiatu to (we współrzędnych biegunowych):
gdzie c = 1 (Zauważ, że 137,508 stopni = złoty kąt. Nie musisz używać tej dokładnej precyzji.)
To powoduje, że różyczki formują się w spiralę zwaną spiralą Fermata. Rozmieszczenie kwiatów jest również związane z liczbami Fibonnaci, ale to opowieść na inny czas.
Oto wyzwanie. Biorąc pod uwagę liczbę całkowitą n jako dane wejściowe, obliczyć pozycje pierwszych n kwiatów i wykreślić je . Jest to wyjście graficzne , więc tak naprawdę chcę, abyś wyświetlał punkty w jakimś oknie lub wyświetlał jako dane w jakimś popularnym formacie obrazu do STDOUT lub pliku. Poza tym wyzwanie to powinno być dość proste. To gra w golfa , więc wygrywa najkrótszy kod. GLHF!
Oto przykładowy obraz tego, jak mogłoby wyglądać wyjście:
źródło
Odpowiedzi:
TI-BASIC, 34 bajty
Dla serii kalkulatorów TI-83 + / 84 +.
Uważa to, że kropka na początku jest zerową kropką.
Dzięki jednobajtowemu
sinh⁻¹(
żetonowi2πe^(-2sinh⁻¹(.5
jest to krótki sposób na uzyskanie złotego kąta w radianach. Wynika to z faktu, żee^(sinh⁻¹(.5
jest to złoty podział.Oto zrzuty ekranu dla N = 50.
(Tak, to monochromatyczny wyświetlacz 96x64 na TI-84 +. Nowsze kalkulatory kolorów mają wyższą rozdzielczość, ale nadal mają tylko 3,7% pikseli iPhone'a.)
Naciśnij, TRACEaby przejść przez każdy punkt.
źródło
sinh⁻¹
wydaje (jeśli zrozumiałem twoje wyjaśnienie), liczyłby się jako więcej niż jeden bajt.Python 2,
858281 bajtówSkrócone o jeden bajt przez marinus.
Używanie złotego kąta w radianach. Długość bajtu jest taka sama, jeśli zamiast tego użyłem 137.508, ale jakoś nie wygląda tak dobrze. Generuje wykres polarny przy użyciu pylab. Poniżej podano, kiedy 300 (dla starszej wersji) jest wejściem, a 7000 (dla nowszej wersji) jest wejściem. Można zaokrąglić kąt do 2,4, aby obniżyć liczbę bajtów do 77.
Oto dłuższa wersja, która zapewnia czystszy wygląd poprzez usunięcie siatki i osi:
Przyczyną różnych kolorów jest to, że każdy punkt jest drukowany osobno i traktowany jako własny zestaw danych. Gdyby kąty i promienie były przekazywane jako listy, wówczas byłyby traktowane jako jeden zestaw i miałyby jeden kolor.
źródło
for
pętli zamiast zrozumienia listy. Musiałby być na swojej linii, ale;
i mieć\n
taką samą długość, więc to nie ma znaczenia. To znaczy:from pylab import*
-for i in arange(0,input(),2.39996):polar(i,sqrt(i),'o')
-show()
Blitz 2D / 3D , 102 bajty
(Bardzo PIERWSZA EVER Blitz odpowiedź 2D / 3D na tej stronie!)
Wpisanie
50
wypełnia okno. (Tak, mógłbym zrobić dwa bajtyGraphics 99,99
, ale nie jest to tak interesujące wizualnie ani przydatne).Ładniejsza wersja (i ładniej wychodzi):
źródło
Mathematica,
4342 bajtyJest to nienazwana funkcja przyjmująca argument liczby całkowitej, np
Zrzut ekranu używa starszej wersji, ale wynik wygląda tak samo.
Mathematica ma wbudowane
GoldenAngle
jeszcze dokładniejsze wyniki, ale to dłużej niż2.39996
.źródło
GoldenAngle
! Czy to nowa funkcja w Mathematica 10.2?MATLAB, 42 bajty
Pobiera liczbę wejściową, tworzy zakres od 1 do tej liczby.
Mnoży zakres przez złoty kąt w radianach (zastosowana wartość jest bliższa rzeczywistej wartości niż 137,508 stopni do 6 sf).
Następnie po prostu wykreśl theta vs. r na mapie współrzędnych biegunowych za pomocą kropek. Tutaj pokazano 2000 punktów
Nieco ładniej wyglądającym wykresem (bez linii siatki) byłby ten kod:
Jest to kosztem 31 bajtów. Ponownie tutaj pokazano 2000 punktów
źródło
polar
rozwiązanie, nigdy wcześniej go nie używałem. Myślę, że możesz zapisać dwa bajty za pomocąt.^.5
instadsqrt(t)
!R,
585554 bajtówWymaga
plotrix
to zainstalowania pakietu, ale pakiet nie musi zostać zaimportowany, ponieważ wyraźnie odwołujemy się do przestrzeni nazw.Nie golfowany:
Przykładowe dane wyjściowe dla n = 1500:
Zaoszczędź 3 bajty dzięki plannapusowi!
źródło
R
5555 bajtówOto wynik dla n = 1000:
Edycja: Zapisano 1 bajt dzięki częściowemu dopasowaniu argumentów (
as
zamiastasp
) dzięki @AlexA.!źródło
R,
4847 bajtówMyślę, że to wystarczająco różni się od innych dotychczasowych rozwiązań R. Ten wykorzystuje złożone wektory do budowy współrzędnych. sqrt t i t są wstawiane do modułu i parametrów argumentu, a x, y pobierają z rzeczywistego i urojonego. Dzięki @AlexA. dla bajtu.
źródło
as
można go użyć zamiastasp
.HTML + JavaScript 179
źródło
Jolf, 25 bajtów
(wyjście dla n = 5000)
Wypróbuj online. (zauważ, że wynikowa spirala jest mała)
Nie konkuruje, ponieważ Jolf powstał po tym wyzwaniu. Jest to 25 bajtów, gdy jest zakodowany zgodnie z ISO-8859-7 i zawiera jeden niedrukowalny (tutaj zrzut heksowy):
Wyjaśnienie
źródło
Python 2, 74 bajty
źródło
MATL , 20 bajtów (nie konkuruje)
Oznaczony jako niekonkurencyjny, ponieważ język jest późniejszy od wyzwania
Wypróbuj w MATL Online!
Złoty kąt,
137.708
deg =pi*(3-sqrt(5))
rad =2.39996...
rad jest aproksymowany jako2.4
rad.Następująca wersja ( 25 bajtów ) używa dokładnej wartości, aż do
double
precyzji zmiennoprzecinkowej:Wypróbuj w MATL Online!
źródło
Tcl / Tk, 114
Przykład użycia:
i wyświetla okno
źródło