Twoim zadaniem jest napisanie programu, który narysuje czarno-biały obraz o wymiarach 800 x 600 z czymś przypominającym las.
W ten sposób (zdjęcie jest porzucone):
Zasady
- Nie możesz używać żadnych istniejących obrazów - powinieneś generować obraz wyłącznie algorytmicznie
- Używaj tylko 2 kolorów - czarno-biały (bez skali szarości)
- Przy każdym uruchomieniu programu obraz powinien być nowy - za każdym razem losowy
- Jedno drzewo nie jest lasem (powiedzmy 5 drzew minumum)
- Specjalne biblioteki do rysowania drzew / lasów są niedozwolone
- Odpowiedź z większością głosów wygrywa
Odpowiedzi:
C:
386311441023999942927Oryginalne rozwiązanie zapisuje 2 pliki PNM na uruchomienie (jeden z dołączonym g, przed ditheringiem). Ponieważ dithering nie był piękny dla pierwszych kilku wierszy, wprowadzono hack, aby renderować więcej wierszy niż to konieczne i przycinać podczas drukowania.
Rozgrywane w golfie rozwiązanie ma prostsze dithering i zapisuje tylko zrujnowany obraz. (brak ostrzeżeń z gcc -std = c11 -pedantic -Wall -Wextra)
Przykładowe obrazy z 3 uruchomień oryginalnego programu i jednego uruchomienia wersji golfowej (ostatni obraz):
Wersja golfowa
Orginalna wersja
źródło
Jungle Java
(954 grał w golfa)
Pełen głębokiego, kręcącego się zarośli las jest trudny do pokonania.
Jest to w zasadzie fraktalny, przypadkowy spacer z wolno kurczącymi się, krętymi pnączami. Rysuję 75 z nich, stopniowo zmieniając kolor z białego na czarny z przodu. Potem rozmyślam nad tym wszystkim, bezwstydnie dostosowując tutaj kod Averroesa .
Gra w golfa: (Tylko dlatego, że inni postanowili)
Oryginalny kod Sane:
Jeszcze jeden? W porządku! Ten ma nieco obniżone dithering, więc czernie z przodu są znacznie bardziej płaskie.
Niestety dither nie pokazuje drobnych szczegółów warstw winorośli. Oto wersja w skali szarości, tylko dla porównania:
źródło
JavaScript + HTML - nie grał w golfa
Przenoszenie javascript algorytmu @Manuel Kansten - to niesamowite, jak dobrze wyglądają te drzewa.
Żeby zrobić coś innego, rysuję obraz w kolorze, a następnie w ostatnim kroku dithering do czarno-białego.
Nie wiem dlaczego, ale mój las jest mniej mroczny i mniej przerażający w stosunku do Manuela.
Przetestuj za pomocą JSfiddle lub uruchom nowy Snippet poniżej. To NIE jest szybkie. Bądź cierpliwy i patrz, jak las rośnie.
źródło
Kontekst Darmowa sztuka 3 (1133)
CF to język renderowania grafiki wektorowej, więc nie mogę uniknąć wygładzania. Pracowałem nad tym, rysując kwadrat w tym samym miejscu kilka (zmiennych
N
) razy. Mgła odbywa się poprzez rysowanie małych kwadratów w przypadkowych miejscach.Więcej renderów używa różnych liczb
źródło
C: 301
Ten program tworzy prosty, abstrakcyjny obraz w formacie PGM . Możesz go otworzyć za pomocą GIMP.
Oto przykładowy przebieg:
źródło
IFS z JAVA
To rozwiązanie wykorzystuje Iterated Function System (IFS) do opisu jednego (proto) drzewa. IFS jest stosowany 100 razy (= las). Przed pomalowaniem każdego drzewa (posadzeniem w lesie) IFS zostaje nieco zmieniony na miejscu (losowy styl chodzenia). Każde drzewo wygląda więc nieco inaczej.
Zdjęcia pochodzą z losowych nasion:
Dithering nie jest potrzebny.
źródło
Zauważyłem tutaj wyraźny brak roślin iglastych, więc zhakowałem coś razem w Pythonie.
To był mój pierwszy Code Golf, to była świetna zabawa!
źródło
Ta odpowiedź nie jest tak ładna, jak się spodziewałem, ale jest krokiem naprzód w kierunku bardziej trójwymiarowego pomysłu, nad którym pracuję, i bardzo podoba mi się pomysł symulowania, które drzewa otrzymują zasoby
źródło