Réalisons une horloge et un calendrier art ASCII qui nous indiquent le mois, le jour du mois, le jour de la semaine, l'heure et les minutes actuels, et si c'est la nuit ou le jour (mais pas l'année ou la seconde).
À n'importe quel moment, le calendrier ressemblera à quelque chose comme ça:
________________________________________________________________
|\ ____________________________________________________________ /|
| | ___ | |
| | _( ) | |
| | (___)__) -.- | |
| | | |
| | | |
| | -.- | |
| | -.- | |
| | ___ | |
| | _( ) | |
| | (___)__) | |
| | | |
| | ___ | |
| | _( ) | |
| | _ (___)__) | |
| | /|\ | |
| | / | \ | |
| | /__|__\ | |
| |____|____ | |
| |\_______/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-~~-~~~~~| |
| |____________________________________________________________| |
|/______________________________________________________________\|
Il s'agit toujours d'un "cadre d'image" de 66 caractères sur 23 dont la bordure ne change jamais.
L'image dans le cadre nous indique l'heure et la date:
- Au cours de la journée (6h à 17h59), le mois est déterminé par le nombre d'oiseaux (
-.-
) dans le ciel. Janvier = 1 oiseau, février = 2 oiseaux, etc. - Au cours de la nuit (18h00 - 05h59), les oiseaux sont remplacés par 3 fois plus d'étoiles (
*
). Janvier = 3 étoiles, février = 6 étoiles, etc. Les oiseaux et les étoiles ne sont jamais dans le ciel en même temps. - Le jour du mois est déterminé par le nombre de caractères entre les deux tirets (
-
) sur l'eau. Par exemple~~-~~~~-~~
signifie que c'est le quatrième jour du mois. Selon la minute, il peut être nécessaire que le bateau se trouve entre les tirets (les tirets ne tournent pas en boucle). - Le jour de la semaine est déterminé par le nombre de nuages dans le ciel (tous les nuages se ressemblent). Dimanche = 0 nuages , lundi = 1 nuage, ..., samedi = 6 nuages.
- L'heure est déterminée par le niveau d'eau (et le bateau). Au plus bas (comme ci-dessus), il est 1 heure, pendant 2 heures, un caractère plus haut, et ainsi de suite jusqu'à 12 heures, puis de nouveau à 1 heure. (C'est un 12 pas une horloge de 24 heures.)
- La minute est déterminée par la position horizontale du bateau. En haut de l'heure, le bateau touche le bord gauche du cadre (comme ci-dessus). A chaque minute, le bateau se déplace d'un personnage à l'autre. En minutes 51 à 59, il effectue une boucle du côté droit du cadre vers la gauche.
Donc, étant donné que l'exemple ci-dessus a 3 oiseaux, 3 nuages, 2 caractères entre les tirets, l'eau au niveau le plus bas et le bateau à l'extrême gauche, nous pouvons dire que la date est le mercredi 2 mars et que l'heure est à 1: 00h
Voici un autre exemple du dimanche 25 avril à 3h58:
________________________________________________________________
|\ ____________________________________________________________ /|
| | | |
| | * * | |
| | * * * | |
| | * | |
| | | |
| | * | |
| | * * | |
| | | |
| | * | |
| | | |
| | * | |
| | _ | |
| | /|\ * | |
| |/ | \ | |
| |__|__\ /| |
| |__|____ __| |
| |______/~~~~~~~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~~-~~~~~\_| |
| | | |
| | | |
| |____________________________________________________________| |
|/______________________________________________________________\|
Objectif
Votre objectif est d’écrire le programme le plus court possible qui génère ces "calendriers" art ASCII sur stdout à l’heure de son exécution.
Chaque exécution du programme doit générer une scène temporelle. Les mises à jour ne doivent pas être automatiques (ou animées).
Les nuages, les étoiles et les oiseaux doivent être placés au hasard dans le ciel (chaque course, même la même en même temps, sera probablement différente). Ils ne doivent jamais se chevaucher le bateau ou l'un l'autre. (De plus, les traits d’eau ne doivent pas chevaucher la coque du bateau.)
Notez que rien de ce que j'ai décrit ne paraît sous l'eau. C'est à vous de le faire. Pendant une heure prédéterminée de chaque semaine (votre choix), quelque chose d' intéressant doit être dessiné sous l'eau. Cela peut être un monstre marin ou un navire coulé ou autre chose, à vous de choisir. Pendant cette heure, vous pouvez même modifier le dessin du reste de la scène (en restant dans les limites du cadre).
Notation
Ceci est un combo de code-golf popularité-concours.
Votre score est (bytes in program) - 4 * (upvotes - downvotes)
. Le score le plus bas gagne.
Utilisez http://mothereff.in/byte-counter comme compteur d'octets si vous utilisez des caractères non-ASCII.
Notes et mises à jour
Vous pouvez utiliser des bouées au lieu de tirets, car, avouons-le, elles sont beaucoup plus appropriées:
| | ~~(_)~~~(_)~~ (3rd of the month)
Les tirets (ou bouées) ne doivent pas forcément être aléatoires, mais ce serait bien s'ils l'étaient.
- Votre "heure spéciale" devrait durer 60 minutes, du début de l'heure à 1 minute avant l'heure suivante.
- Au cours de l'heure spéciale, les objets que vous dessinez sous l'eau peuvent bouger et altérer la surface et le ciel lorsque cela vous semble judicieux (par exemple, un monstre marin dévorant le bateau, un trou noir se formant au fond de la mer, etc.).