Ihre Aufgabe ist es, ein Programm zu schreiben, das ein 800x600-Schwarzweißbild mit etwas ähnlichem wie ein Wald zeichnet.
So (es ist ein Dithering-Foto):
Regeln
- Es ist Ihnen nicht gestattet, vorhandene Bilder zu verwenden. Sie sollten Bilder rein algorithmisch generieren
- Verwenden Sie nur 2 Farben - Schwarz und Weiß (keine Graustufen)
- Jedes Mal, wenn das Programm ausgeführt wird, sollte das Bild neu sein - jedes Mal nach dem Zufallsprinzip
- Ein Baum ist kein Wald (sagen wir mal 5 Bäume)
- Spezielle Bibliotheken zum Zeichnen von Bäumen / Wäldern sind nicht zulässig
- Antwort mit den meisten Stimmen gewinnt
Antworten:
C:
386311441023999942927Die ursprüngliche Lösung speichert 2 PNM-Dateien pro Lauf (eine mit angehängtem g vor dem Dithering). Da das Dithering für die ersten Zeilen nicht besonders gut war, gibt es einen Hack, mit dem mehr Zeilen gerendert werden können, als benötigt werden, und der während der Ausgabe zugeschnitten wird.
Die Golf-Lösung hat ein einfacheres Dithering und speichert nur das Dithering-Bild. (keine Warnungen mit gcc -std = c11 -pedantic -Wall -Wextra)
Beispielbilder von 3 ursprünglichen Programmläufen und einem Lauf der Golfversion (letztes Bild):
Golf Version
Originalfassung
quelle
Java-Dschungel
(954 golfen)
Voller tiefem, verwinkeltem Unterholz ist dies ein Wald, der nicht leicht zu durchqueren ist.
Es ist im Grunde ein fraktaler Zufallsspaziergang mit langsam schrumpfenden, kurvigen Ranken. Ich zeichne 75 von ihnen und wechsle allmählich von Weiß hinten zu Schwarz vorne. Dann zittere ich das Ganze und passe den Code von Averroes hierher schamlos an .
Golfen: (Nur weil andere beschlossen haben)
Vernünftiger Originalcode:
Einer noch? Okay! Bei diesem ist das Dithering etwas heruntergestimmt, sodass die Schwarztöne vorne viel flacher sind.
Leider zeigt der Dither nicht die feinen Details der Rebschichten. Hier ist eine Graustufenversion zum Vergleich:
quelle
Javascript + HTML - nicht golfen
Eine Javascript-Portierung des Algorithmus von @Manuel Kansten - es ist erstaunlich, wie gut diese Bäume aussehen.
Um etwas anderes zu machen, zeichne ich das Bild in Farbe und schwanke dann im letzten Schritt auf s / w.
Ich weiß nicht warum, aber mein Wald ist weniger dunkel und weniger beängstigend gegenüber Manuels.
Testen Sie mit JSfiddle oder führen Sie das neue Snippet aus . Das geht NICHT schnell. Sei geduldig und beobachte, wie der Wald wächst.
quelle
Kontextfreie Kunst 3 (1133)
CF ist eine Rendering-Sprache für Vektorgrafiken, daher kann ich Anti-Alising nicht vermeiden. Ich habe das durch mehrmaliges (variables
N
) Zeichnen eines Quadrats an derselben Stelle gelöst . Nebel wird durch Zeichnen kleiner Quadrate an zufälligen Stellen erzeugt.Mehr Rendern mit unterschiedlichen Zahlen
quelle
C: 301
Dieses Programm erstellt ein einfaches, abstraktes Bild im PGM- Format. Sie können es mit GIMP öffnen.
Hier ist ein Beispiellauf:
quelle
IFS mit JAVA
Diese Lösung verwendet ein Iterated Function System (IFS), um einen (Proto-) Baum zu beschreiben. Das IFS wird 100 Mal angewendet (= Gesamtstruktur). Bevor jeder Baum gemalt (in den Wald gepflanzt) wird, wird das IFS geringfügig geändert (zufälliger Laufstil). So sieht jeder Baum etwas anders aus.
Bilder sind von zufälligen Samen:
Dithering ist nicht erforderlich.
quelle
Mir ist hier ein deutlicher Mangel an Nadelbäumen aufgefallen, deshalb habe ich in Python etwas zusammen gehackt.
Dies war mein erster Code Golf, es hat viel Spaß gemacht!
quelle
Diese Antwort ist nicht so hübsch wie ich es mir erhofft hatte, aber es ist ein Sprungbrett für eine 3D-Idee, an der ich arbeite, und ich mag die Idee, tatsächlich zu simulieren, welche Bäume Ressourcen erhalten
quelle