Este desafío está inspirado en esta respuesta en Ask Ubuntu Stack Exchange.
Introducción
¿Recuerdas el protector de pantalla de Windows ME con las tuberías ? ¡Es hora de recuperar la nostalgia!
Desafío
Debe escribir un programa o función que genere una representación ASCII del protector de pantalla. En el protector de pantalla debe haber una sola tubería que crecerá en direcciones semi aleatorias.
El inicio de la tubería se colocará al azar en cualquiera de los bordes de la pantalla y la pieza de la tubería debe ser perpendicular al borde (las primeras tuberías de la esquina pueden ser horizontales o verticales). Cada tictac la tubería crecerá en la dirección que está mirando (horizontal / vertical) en una 80%
oportunidad o tomar una esquina en una 20%
oportunidad.
Representación de tubería
Para crear la tubería, se utilizarán 6 caracteres unicode
─ \u2500 horizontal pipe
│ \u2502 vertical pipe
┌ \u250C upper left corner pipe
┐ \u2510 upper right corner pipe
└ \u2514 lower left corner pipe
┘ \u2518 lower right corner pipe
Entrada
El programa / función tomará 3 valores de entrada, que se pueden recopilar a través de parámetros de función o solicitar al usuario.
- Cantidad de garrapatas
- Ancho de pantalla
- Altura de la pantalla
Cantidad de garrapatas
Por cada tic, se agregará un trozo de tubería a la pantalla. Las tuberías sobrescribirán las piezas de tubería viejas si se generan en la misma posición.
Por ejemplo, tome una pantalla de tamaño 3x3
ticks == 3
─┐
┘
ticks == 4
─┐
└┘
ticks == 5
│┐
└┘
Cada vez que una tubería sale de la pantalla, como en el último ejemplo con 5 ticks, se generará una nueva tubería en un borde aleatorio. Por ejemplo:
ticks == 6
│┐
└┘
─
La nueva tubería debe tener un 50% de posibilidades de ser horizontal o vertical.
Ancho / alto de pantalla
El ancho y la altura de la pantalla se pueden combinar en un solo valor si eso es preferible en el idioma que elija. El ancho y la altura de la pantalla siempre tendrán un valor mínimo de 1 y un valor máximo de 255. Si su idioma de elección admite una consola o pantalla de salida que sea más pequeña que una cuadrícula de caracteres 255x255, entonces puede suponer que el ancho y la altura serán nunca exceda los límites de su consola. (Ejemplo: ventana de Windows 80x25 cmd)
Salida
El resultado de su programa / función debe imprimirse en la pantalla o devolverse desde una función. Para cada ejecución de su programa, se debe generar un conjunto diferente de tuberías.
Casos de prueba
Los siguientes casos de prueba son ejemplos aleatorios de resultados válidos
f(4, 3, 3)
│
─┘
│
f(5, 3, 3)
│
─┘┌
│
f(6, 3, 3)
─│
─┘┌
│
f(7, 3, 3)
──
─┘┌
│
Obviamente, cuantos más ticks hayan ocurrido, más difícil será probar la validez de su programa. Por lo tanto, se preferirá publicar un gif de su salida en ejecución. Si esto no es posible, publique una versión de su código que incluya la impresión de la salida. Obviamente, esto no contará para su puntaje.
Reglas
- Este es el código de golf , gana la menor cantidad de bytes
- Se aplican lagunas estándar
- Si usa los caracteres de canalización Unicode en su código fuente, puede contarlos como un solo byte
Este es un desafío bastante difícil que puede resolverse de muchas maneras creativas, se le recomienda escribir una respuesta en un lenguaje más detallado, aunque ya hay respuestas en breves palabras. Esto creará un catálogo de respuestas más cortas por idioma. Votos de bonificación para gifs de colores elegantes;)
¡Feliz golf!
Descargo de responsabilidad: soy consciente de que los caracteres Unicode no son ASCII, pero a falta de un nombre mejor, simplemente lo llamo arte ASCII. Las sugerencias son bienvenidas :)