Genere un mapa de desierto ASCII.
Salida de ejemplo:
................^^^^
..................^^
...^^^^........o....
.....^^^^...........
....................
........o....TT.....
..TTTT..............
TTTT.TTTT....~~~~~~.
..TT..........~~~~~~
....................
Anti-ejemplo (no hagas esto):
....................
...........T........
...^..........oo....
......^.............
....................
..............TT....
T.T.T.T.T........T..
.................T..
T.T.T.T.T..........T
..............TT...T
Reglas:
- Debe tener al menos 20x10 caracteres de tamaño
- Debe ser diferente en cada ejecución, es decir, aleatorio
- Debe contener áreas de forma continua y variada de árboles 'T', colinas '^' y agua '~', la mayoría de las cuales deben consistir en más de 5 celdas
- El carácter predeterminado de tierra es '.'
- Debe contener al menos 2 pueblos 'o' que generalmente no están uno al lado del otro
- No debe contener patrones obvios, como rectángulos o áreas espaciadas uniformemente: la clave es el "aspecto natural"
- No es necesario que compruebe explícitamente que se siguen las reglas (p. Ej., No es necesaria una lógica anti-rectángulo), pero la gran mayoría de las ejecuciones (digamos, 80%) deben producir resultados conformes.
- Con su envío, incluya un ejemplo de salida
Puntuación:
El ganador tiene el puntaje más bajo de la fórmula: code character count
-votes
code-golf
ascii-art
random
generation
Tapio
fuente
fuente
Respuestas:
APL (
9976)Un poco más de lo necesario (para que produzca mejor) pero lo acortaré cuando llegue la respuesta de Golfscript.La respuesta de GolfScript fue publicada, así que aquí hay una más corta. Pensé en otra forma (bastante obvia, en retrospectiva) de acortarlo para que el resultado no sea mucho peor que el programa original, e incluso sea más corto que mi plan de copia de seguridad original.
(En la versión anterior, tenía cinco campos de bits que estaba trabajando juntos, ahora tengo tres que estoy agregando entre sí).
He reemplazado la salida de ejemplo con la salida de la nueva versión, por supuesto.
Explicación:
F←⍳S←10 20
: el tamaño es 20x10, F es una matriz donde cada elemento son sus coordenadas{F∊(?S)∘+¨+\{2-?3 3}¨⍳99}¨T←⍳5
: genera 3 campos de bits, comenzando en una coordenada aleatoria, y dando 99 pasos aleatorios a un campo vecino y luego activando ese bit. 99 parece alto pero a menudo retrocede, ya que es aleatorio. Esto hace los mapas para las áreas.(⊂7×F∊{?S}¨⍳2)
: Añadir en dos pueblos.⊃7⌊1++/
: suma las áreas, dando una matriz donde cada número representa un tipo determinado. Límite a las 7, porque las aldeas podrían aparecer en otra área dando números altos.'.T^~^To'[
...]
: reemplaza cada número con el carácter correcto. Hay 3 campos posiblemente superpuestos, por lo que el valor más alto posible es 6. (3 + 3)Salida de ejemplo:
y
Versión antigua:
fuente
JavaScript:
294290 caracteresPara alentar los intentos, me di cuenta de esto yo mismo. Puede probar una demostración en vivo aquí (debe abrir la consola JS de su navegador). Probado con Chrome e IE8.
Salida de ejemplo:
No es ideal, ya que siempre hay solo tres áreas (una de cada tipo), su tamaño máximo es de 5x2 celdas y después de algunas ejecuciones, comienzas a notar limitaciones en su ubicación (y en las de las aldeas). Sin embargo, cumple con las reglas.
fuente
GolfScript, 97 caracteres
Salidas de ejemplo:
y
fuente
Ruby 1.9 (
127116112107)El resultado es un poco simple, pero creo que cumple con las especificaciones.
Algunas salidas de ejemplo:
Otro:
Y otra vez:
Debido a la forma en que está codificado, casi siempre hay un árbol solitario. Me gusta imaginar que es el árbol Deku.fuente
Q (
116107 char)Aquí hay uno en Q
Salida de muestra
y
y
Puedo ajustar la matriz estocástica para afectar la salida, pero creo que lo anterior se ajusta a lo que estás buscando.
/ edit: salida modificada
/ edit: recuento reducido de carbonos al agregar solo 2 pueblos
fuente
K, 84
Salida:
y
fuente