Su tarea es escribir un programa que dibuje imágenes en blanco y negro de 800x600 con algo parecido a un bosque.
De esta manera (es foto difuminada):
Reglas
- No está permitido usar ninguna imagen existente; debe generar una imagen puramente algorítmicamente
- Use solo 2 colores: blanco y negro (sin escala de grises)
- Cada vez que se ejecuta el programa, la imagen debe ser nueva, aleatoria cada vez
- Un árbol no es un bosque (digamos 5 árboles minumum)
- No se permiten bibliotecas especiales para dibujar árboles / bosques.
- Responde con más votos gana
Respuestas:
C:
386311441023999942927La solución original guarda 2 archivos pnm por ejecución (uno con g adjunto, antes del tramado). Debido a que el tramado no fue hermoso para las primeras líneas, hay un truco en el lugar para generar más líneas de las necesarias y recortar durante la salida.
La solución de golf tiene un tramado más simple y guarda solo la imagen difuminada. (sin advertencias con gcc -std = c11 -pedantic -Wall -Wextra)
Imágenes de ejemplo de 3 ejecuciones del programa original y una ejecución de la versión golfizada (última imagen):
Versión de golf
Versión original
fuente
Jungla de java
(954 golfizados)
Lleno de maleza profunda y retorcida, este es un bosque que no es fácil de atravesar.
Básicamente es una caminata aleatoria fractal con vides retorcidas y retorcidas lentamente. Dibujo 75 de ellos, cambiando gradualmente de blanco en la parte posterior a negro en la parte delantera. Luego lo dudo todo, adaptando descaradamente el código de Averroes aquí para eso.
Golfó: (Solo porque otros decidieron hacerlo)
Código original sano:
¿Uno mas? ¡Bueno! Este tiene el tramado atenuado un poco, por lo que los negros en el frente son mucho más planos.
Desafortunadamente, el tramado no muestra los detalles finos de las capas de vid. Aquí hay una versión en escala de grises, solo para comparar:
fuente
Javascript + HTML - no golfizado
Una transferencia de JavaScript del algoritmo de @Manuel Kansten: es sorprendente lo bien que se ven estos árboles.
Solo para hacer algo diferente, dibujo la imagen en color, luego trazo en blanco y negro en el último paso.
No sé por qué, pero mi bosque es menos oscuro y menos aterrador que el de Manuel.
Pruebe con JSfiddle o ejecute el nuevo Snippet a continuación. Eso no es rápido. Sé paciente y observa cómo crece el bosque.
fuente
Context Free Art 3 (1133)
CF es un lenguaje de representación de gráficos vectoriales, por lo que no puedo evitar el anti-alising. Trabajé eso dibujando un cuadrado en el mismo lugar varias
N
veces (variable ). La niebla se realiza dibujando pequeños cuadrados en lugares aleatorios.Más renders usando diferentes números
fuente
C: 301
Este programa crea una imagen simple y abstracta en formato PGM . Puedes abrirlo con GIMP.
Aquí hay un ejemplo de ejecución:
fuente
IFS con JAVA
Esta solución utiliza un Sistema de funciones iteradas (IFS) para describir un árbol (proto). El IFS se aplica 100 veces (= bosque). Antes de pintar cada árbol (plantado en el bosque), el IFS se modifica ligeramente en su lugar (estilo de caminata aleatoria). Entonces cada árbol se ve ligeramente diferente.
Las imágenes son de semillas al azar:
No se necesita vacilar.
fuente
Noté una clara falta de coníferas aquí, así que pirateé algo juntos en Python.
Este fue mi primer Code Golf, ¡fue muy divertido!
fuente
Esta respuesta no es tan bonita como esperaba, pero es un trampolín para una idea más 3D en la que estoy trabajando, y realmente me gusta la idea de simular realmente qué árboles obtienen recursos
fuente