Hagamos un reloj y calendario de arte ASCII que nos indique el mes actual, el día del mes, el día de la semana, la hora, los minutos y si es de noche o de día (pero no el año o el segundo).
En cualquier momento en particular, el calendario se verá así: (se ve mejor con menos espacio entre líneas)
________________________________________________________________
|\ ____________________________________________________________ /|
| | ___ | |
| | _( ) | |
| | (___)__) -.- | |
| | | |
| | | |
| | -.- | |
| | -.- | |
| | ___ | |
| | _( ) | |
| | (___)__) | |
| | | |
| | ___ | |
| | _( ) | |
| | _ (___)__) | |
| | /|\ | |
| | / | \ | |
| | /__|__\ | |
| |____|____ | |
| |\_______/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-~~-~~~~~| |
| |____________________________________________________________| |
|/______________________________________________________________\|
Siempre es un "cuadro" de 66 por 23 caracteres cuyo borde nunca cambia.
La imagen dentro del marco nos dice la hora y la fecha:
- Durante el día (6:00 am - 5:59 pm) el mes está determinado por la cantidad de pájaros (
-.-
) en el cielo. Enero = 1 pájaro, febrero = 2 pájaros, etc. - Durante la noche (6:00 pm - 5:59 am) los pájaros son reemplazados por 3 veces más estrellas (
*
). Enero = 3 estrellas, febrero = 6 estrellas, etc. Las aves y las estrellas nunca están en el cielo al mismo tiempo. - El día del mes está determinado por la cantidad de caracteres entre los dos guiones (
-
) en el agua. Por ejemplo,~~-~~~~-~~
significa que es el cuarto día del mes. Dependiendo del minuto, el bote puede necesitar estar entre los guiones (los guiones no giran). - El día de la semana está determinado por la cantidad de nubes en el cielo (todas las nubes se ven iguales). Domingo = 0 nubes , lunes = 1 nube, ..., sábado = 6 nubes.
- La hora está determinada por el nivel de agua (y el bote). En su punto más bajo (como arriba) es la 1 en punto, durante las 2 en punto es un carácter más alto, y así hasta las 12 en punto, luego vuelve a la 1 en punto. (Es un reloj de 12 no 24 horas).
- El minuto está determinado por la posición horizontal del bote. Al final de la hora, el bote toca el borde izquierdo del marco (como arriba). En cada minuto posterior el bote se mueve a la derecha por un personaje. En los minutos 51 a 59 se repite desde el lado derecho del marco hacia la izquierda.
Entonces, dado que el ejemplo anterior tiene 3 pájaros, 3 nubes, 2 caracteres entre guiones, el agua en el nivel más bajo y el bote en el extremo izquierdo, podemos decir que la fecha es el miércoles 2 de marzo y la hora es 1: 00pm.
Aquí hay otro ejemplo del domingo 25 de abril a las 3:58 am:
________________________________________________________________
|\ ____________________________________________________________ /|
| | | |
| | * * | |
| | * * * | |
| | * | |
| | | |
| | * | |
| | * * | |
| | | |
| | * | |
| | | |
| | * | |
| | _ | |
| | /|\ * | |
| |/ | \ | |
| |__|__\ /| |
| |__|____ __| |
| |______/~~~~~~~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~~-~~~~~\_| |
| | | |
| | | |
| |____________________________________________________________| |
|/______________________________________________________________\|
Gol
Su objetivo es escribir el programa más corto posible que genere estos "calendarios" de arte ASCII para stdout usando el tiempo cuando se ejecuta el programa.
Cada ejecución del programa debería generar una escena de tiempo. Las actualizaciones no deben ser automáticas (o animadas).
Las nubes, las estrellas y los pájaros deben colocarse al azar en el cielo (por lo que es probable que cada carrera, incluso al mismo tiempo, sea diferente). Nunca deben superponerse al bote ni al otro. (Además, los guiones de agua no deben superponerse al casco del barco).
Tenga en cuenta que nada de lo que he descrito aparece bajo el agua. Esto es para que lo hagas. Durante una hora predeterminada de cada semana (a elección), se debe dibujar algo interesante bajo el agua. Podría ser un monstruo marino o un barco hundido o cualquier cosa, depende de usted. Durante esa hora, incluso puede alterar el diseño del resto de la escena (permanecer en los límites del marco).
Puntuación
Este es un combo de concurso de popularidad de código-golf.
Tu puntaje es (bytes in program) - 4 * (upvotes - downvotes)
. El puntaje más bajo gana.
Utilice http://mothereff.in/byte-counter como contador de bytes si utiliza caracteres no ASCII.
Notas y actualizaciones
Puede usar boyas en lugar de guiones, ya que, seamos sinceros, son mucho más apropiadas:
| | ~~(_)~~~(_)~~ (3rd of the month)
Los guiones (o boyas) no tienen que ser aleatorios, pero sería bueno si lo fueran.
- Su "hora especial" debe durar 60 minutos desde la parte superior de la hora hasta 1 minuto antes de la próxima hora.
- Durante la hora especial, las cosas que dibujas bajo el agua pueden moverse y alterar la superficie y el cielo cuando tenga sentido (por ejemplo, monstruo marino comiendo el bote, agujero negro formándose en el fondo del mar, etc.)