Chaos Gra jest prosta metoda do generowania fraktali. Biorąc pod uwagę punkt początkowy, stosunek długości r oraz zestaw punktów 2D, wielokrotnie wykonaj następujące czynności:
- Z zestawu punktów wybierz jeden losowo (jednolicie).
- Średnie tego punktu, a ostatni punkt sporządzone (lub punktem wyjścia) za pomocą R i 1 - R jako obciążników (czyli R = 0 oznacza, że otrzymasz punkt wyjścia, r = 1 oznacza, że otrzymasz punkt losowy i R = 0,5 oznacza, że dostać punkt w połowie drogi.)
- Narysuj wynikowy punkt.
Na przykład, jeśli wybrałeś wierzchołki równobocznego trójkąta ir = 0,5 , wykreślone punkty odwzorowałyby trójkąt Sierpińskiego:
Musisz napisać program lub funkcję, która „gra” w grę chaosu i tworzy fraktal.
Wkład
Możesz napisać program lub funkcję i przyjmować następujące dane wejściowe za pomocą ARGV, STDIN lub argumentu funkcji:
- Liczba punktów do wykreślenia.
- Współrzędna początkowa (która również musi zostać narysowana!).
- Średnia waga rw przedziale [0,1] .
- Lista punktów do wyboru.
Wydajność
Możesz renderować na ekranie lub zapisać plik obrazu. Jeśli wynik jest zrasteryzowany, musi on wynosić co najmniej 600 pikseli z każdej strony, wszystkie punkty muszą znajdować się na obszarze roboczym, a co najmniej 75% zakresu obrazu w poziomie i pionie musi być użyte dla punktów (aby tego uniknąć odpowiada pojedynczymi czarnymi pikselami, mówiąc „jest naprawdę bardzo pomniejszony”). X i y Oś musi być w tej samej skali (to jest od linii (0,0) do (1,1), muszą być pod kątem 45 stopni), a każdy punkt na wykresie w grze chaosu przedstawia się jako jeden piksel (jeśli twoja metoda kreślenia antyaliasuje punkt, może on zostać rozłożony na 2x2 piksele).
Kolory są twoim wyborem, ale potrzebujesz co najmniej dwóch rozróżnialnych kolorów: jednego dla tła i jednego dla kropek wykreślonych podczas gry chaosu. Możesz, ale nie musisz kreślić punktów wejściowych.
Proszę obejmują trzy interesującym przykładem wyjścia w swojej odpowiedzi.
Punktacja
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach).
Edycja: Nie musisz już rysować punktów wejściowych, ponieważ i tak nie są one widoczne jako pojedyncze piksele.