Votre tâche consiste à écrire un programme qui dessinera une image en noir et blanc de 800 x 600 avec quelque chose qui ressemble à une forêt.
Comme ceci (c'est une photo tramée):
Règles
- Vous n'êtes pas autorisé à utiliser des images existantes - vous devez générer une image purement algorithmique
- Utilisez seulement 2 couleurs - noir et blanc (pas de niveaux de gris)
- Chaque fois que le programme s'exécute, l'image doit être nouvelle - aléatoire à chaque fois
- Un arbre n'est pas une forêt (disons 5 arbres au minimum)
- Les bibliothèques spéciales pour dessiner des arbres / forêts sont interdites
- Répondre avec le plus de votes gagne
Réponses:
C:
386311441023999942927La solution d'origine enregistre 2 fichiers pnm par exécution (un avec g ajouté avant le dithering). Comme le dithering n'était pas beau pour les premières lignes, un hack permet de générer plus de lignes que nécessaire et de rogner pendant la sortie.
La solution golfée a un dithering plus simple et enregistre uniquement l'image tramée. (pas d'avertissement avec gcc -std = c11 -pedantic -Wall -Wextra)
Exemples d'images de 3 programmes originaux et d'une série de la version jouée au golf (dernière image):
Version golfée
Version originale
la source
Jungle java
(954 golfés)
Plein de sous-bois profond et sinueux, c'est une forêt difficile à traverser.
Il s’agit d’une marche fractale au hasard avec des vignes tordues et qui se contractent lentement. J'en tire 75, en passant graduellement du blanc à l'arrière au noir. Ensuite, je dis le tout, adaptant sans vergogne le code d’Averroès ici pour cela.
Golfé: (juste parce que d'autres ont décidé de)
Sane code original:
Un de plus? D'accord! Celui-ci a un peu atténué le dithering, ainsi les noirs devant sont beaucoup plus plats.
Malheureusement, le dither ne montre pas les détails des couches de vigne. Voici une version en niveaux de gris, à titre de comparaison:
la source
Javascript + HTML - pas de golf
Un portage javascript de l'algorithme de @Manuel Kansten - c'est incroyable à quel point ces arbres sont beaux.
Juste pour faire quelque chose de différent, je dessine l'image en couleur, puis je la répète en noir et blanc à la dernière étape.
Je ne sais pas pourquoi, mais ma forêt est moins sombre et moins respectueuse que celle de Manuel.
Testez avec JSfiddle ou lancez le nouvel extrait ci-dessous. Ce n'est pas rapide. Soyez patient et regardez la forêt grandir.
la source
Contexte gratuit Art 3 (1133)
CF est un langage de rendu graphique vectoriel, je ne peux donc pas éviter l’anti-alising. J'ai travaillé cela en dessinant un carré au même endroit plusieurs fois (variable
N
). Le brouillard se fait en dessinant des petits carrés sur des endroits aléatoires.Plus de rendus utilisant des nombres différents
la source
C: 301
Ce programme crée une image simple et abstraite au format PGM . Vous pouvez l'ouvrir avec GIMP.
Voici un exemple d'exécution:
la source
IFS avec JAVA
Cette solution utilise un système de fonction itéré (IFS) pour décrire un (proto) arbre. L'IFS est appliqué 100 fois (= forêt). Avant que chaque arbre soit peint (planté dans la forêt), l'IFS est légèrement modifié sur place (style de marche aléatoire). Donc, chaque arbre est légèrement différent.
Les images proviennent de graines aléatoires:
Aucun dithering n'est nécessaire.
la source
J'ai remarqué un manque flagrant de conifères ici, alors j'ai piraté quelque chose ensemble en Python.
C'était mon premier code de golf, c'était très amusant!
la source
Cette réponse n’est pas aussi jolie que je l’espérais, mais c’est un tremplin vers une idée plus 3D sur laquelle je travaille, et j’aime beaucoup l’idée de simuler réellement les arbres qui obtiennent des ressources.
la source