Joe mieszka na Bahamach. To jest zima. Jego dzieci są rozczarowane, że nie ma śniegu. Joe musi zrobić śnieg dla swoich dzieci. Na szczęście ma drukarkę 3D. Planuje zrobić z niego płatki śniegu. Niestety nie ma pojęcia, jak wyglądałby płatek śniegu. W rzeczywistości nigdy nie widział płatka śniegu! Pomóżmy mu, tworząc program, który automatycznie generuje dla niego obraz 2D płatka śniegu.
Wejście
Średnica obrazu (w pikselach), procent obrazu, który w rzeczywistości jest płatkiem śniegu.
Wynik
Obraz płatka śniegu o wymaganej średnicy. Można go zapisać do pliku lub wyświetlić użytkownikowi.
Dane techniczne
Utwórz klin o kącie 30 stopni. Utwórz Drzewo Browna z początkowym nasieniem w punkcie klina. 12 razy odbij klin wokół środka obrazu, aby wygenerować resztę obrazu. Płatek śniegu ma kolor Biały. Tło ma kolor Czarny.
Punktacja
Ze względu na to, że istnieją różne sposoby generowania drzewa Browna, wynik to 10 * liczba głosów pozytywnych - wynik golfowy.
Wynik golfa jest definiowany jako liczba bajtów w programie z następującymi bonusami:
-20% Można dowolnie określić symetrię płatka śniegu.
-50% Można określić kształt płatka śniegu. (Dzięki możliwości określenia stosunku długości boków klina.)
Najwyższy wynik wygrywa.
Oto zdjęcie, jaki byłby kształt klina ze współczynnikiem około 2:
Tablica wyników:
Martin Buttner: 10 * 14 - 409 = -269
Nimi: 10 * 1-733 * .5 = -356,5
Optymalizator: 10 * 5 - 648 = -598
Zwycięzcą jest Martin z wynikiem -269!
źródło
Odpowiedzi:
Mathematica, 409 bajtów
Nie golfowany:
Ta forma przewiduje wprowadzanie
{n,p}
gdzien
rozdzielczość jest w pikselach, ap
udział procentowy obrazu do objęte śniegu.Wygenerowanie płatka śniegu o podanych parametrach zajmuje około pół minuty. Możesz to przyspieszyć, zmieniając wartość
m
z999
na99
, ale wtedy wynik wygląda na nieco rzadszy. Podobnie, możesz zwiększyć jakość, używając większych liczb, ale wtedy zajmie to bardzo długo.Tworzę drzewo Browna na siatce liczb całkowitych, umieszczam nowe cząstki
{999, 0}
i przesuwam losowo w lewo i w górę lub w dół (nie w prawo), dopóki nie uderzą w istniejące cząstki. Ograniczam również ruch do klina między 0 a 30 stopni. Na koniec odbijam ten klin na osi X i wyświetlam go z 5 obrotami.Oto kilka wyników (kliknij, aby powiększyć):
A oto dwie animacje wzrostu drzewa Browna (10 cząstek na klin na ramkę):
źródło
JavaScript, ES6,
799 740 695 658648Liczę tylko dwa znaczniki canvas i funkcję
f
z fragmentu poniżej jako część liczby bajtów. Reszta jest przeznaczona na demo na żywoAby obejrzeć go w akcji, po prostu uruchom poniższy fragment w najnowszym Firefoksie, podając rozmiar i stosunek za pomocą pól wprowadzania
Pamiętaj, że będziesz musiał ukryć wynik, a następnie pokazać go ponownie przed kolejnym płatkiem śniegu
Oto kilka przykładowych renderów o różnych rozmiarach i wartościach procentowych. Najlepszy nazywa się SkullFlake (pierwszy na liście). Kliknij obrazy, aby zobaczyć je w pełnej rozdzielczości.
Dużo pomocy i wkładu ze strony Martina i githubphagocyte.
źródło
Haskell,
781733 bajtówProgram zawiera opcję „określ stosunek długości boków klina”, więc musisz wywołać go za pomocą trzech argumentów wiersza poleceń:
Argument nr 1 to rozmiar obrazu, nr 2% pikseli w klinie, a # 3 długość (w%) krótszego boku klina. Obraz jest zapisywany w pliku o nazwie „o.png”.
150–50–40:
Mój program produkuje płatki śniegu z odciętymi skokami, ponieważ nowe piksele zaczynają się na środkowej osi klina (zielona kropka, patrz poniżej) i mają tendencję do pozostania tam, ponieważ poruszają się one losowo w lewo, w górę lub w dół. Gdy piksele poza klinem są odrzucane, na granicy klina pojawiają się proste linie (zielona strzałka). Byłem zbyt leniwy, by wypróbować inne ścieżki dla pikseli.
150–50–40:
Gdy klin jest wystarczająco duży (trzeci argument 100), kolce na środkowej osi mogą rosnąć, a następnie jest ich 12.
150–40–100:
Kilka pikseli tworzy okrągłe kształty (po lewej: 150-5-20; po prawej 150-20-90).
Program:
źródło
*-*-100
obrazie obie jego strony sięgają do lewej krawędzi obrazu (patrz położenie drugiego klina). Po około połowie boków znajdują się piksele - pozostałe połówki są puste.code style
. Zredagowałem swój post i ustawiłem tabulatory, ale nadal pojawiają się jako spacje. Czy ktoś wie jak to naprawić?#
link z hashem, który można kliknąć. Możesz wkleić tam swój kod z kartami i połączyć go.code style
wcięcie każdego wiersza o 4 spacje.Przetwarzanie 2 - 575 znaków
Pobiera plik f, którego pierwsza linia to rozmiar obrazu, a druga to promień płatków. Za każdym razem, gdy umieszczany jest nowy punkt, jest on 12 razy obracany wokół środka. Daje to bardzo podobny efekt jak obrócony klin, ale nie dokładnie taki sam.
możesz uzyskać przetwarzanie tutaj
źródło
color(255)
możnacolor(-1)
zapisać jeden bajt