Facciamo un orologio e un calendario di arte ASCII che ci dice il mese corrente, il giorno del mese, il giorno della settimana, l'ora, i minuti e se è notte o giorno (ma non l'anno o il secondo).
In qualsiasi momento il calendario avrà un aspetto simile al seguente: (sembra migliore con meno interlinea)
________________________________________________________________
|\ ____________________________________________________________ /|
| | ___ | |
| | _( ) | |
| | (___)__) -.- | |
| | | |
| | | |
| | -.- | |
| | -.- | |
| | ___ | |
| | _( ) | |
| | (___)__) | |
| | | |
| | ___ | |
| | _( ) | |
| | _ (___)__) | |
| | /|\ | |
| | / | \ | |
| | /__|__\ | |
| |____|____ | |
| |\_______/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-~~-~~~~~| |
| |____________________________________________________________| |
|/______________________________________________________________\|
È sempre una "cornice" di 66 per 23 caratteri il cui bordo non cambia mai.
L'immagine all'interno della cornice ci dice l'ora e la data:
- Durante il giorno (6:00 - 17:59) il mese è determinato dal numero di uccelli (
-.-
) nel cielo. Gennaio = 1 uccello, febbraio = 2 uccelli, ecc. - Durante la notte (18:00 - 5:59) gli uccelli vengono sostituiti con 3 volte più stelle (
*
). Gennaio = 3 stelle, febbraio = 6 stelle, ecc. Uccelli e stelle non sono mai nel cielo allo stesso tempo. - Il giorno del mese è determinato dal numero di caratteri tra i due trattini (
-
) sull'acqua. ad es.~~-~~~~-~~
significa che è il quarto giorno del mese. A seconda del minuto, potrebbe essere necessario che l'imbarcazione si trovi tra i trattini (i trattini non vanno in circolo). - Il giorno della settimana è determinato dal numero di nuvole nel cielo (tutte le nuvole sembrano uguali). Domenica = 0 nuvole , Lunedì = 1 nuvola, ..., Sabato = 6 nuvole.
- L'ora è determinata dal livello dell'acqua (e della barca). Al suo punto più basso (come sopra) è l'una, durante le 2 è un carattere più in alto, e così via fino alle 12, quindi di nuovo all'una. (È un 12 non un orologio di 24 ore.)
- Il minuto è determinato dalla posizione orizzontale della barca. Nella parte superiore dell'ora la barca tocca il bordo sinistro del telaio (come sopra). Ad ogni minuto successivo la barca si sposta a destra di un personaggio. Nei minuti da 51 a 59, passa dal lato destro del telaio a sinistra.
Quindi, dato che l'esempio sopra ha 3 uccelli, 3 nuvole, 2 caratteri tra trattini, l'acqua al livello più basso e la barca all'estrema sinistra, possiamo dire che la data è mercoledì 2 marzo e l'ora è 1: 12:00.
Ecco un altro esempio di domenica 25 aprile, alle 3:58:
________________________________________________________________
|\ ____________________________________________________________ /|
| | | |
| | * * | |
| | * * * | |
| | * | |
| | | |
| | * | |
| | * * | |
| | | |
| | * | |
| | | |
| | * | |
| | _ | |
| | /|\ * | |
| |/ | \ | |
| |__|__\ /| |
| |__|____ __| |
| |______/~~~~~~~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~~-~~~~~\_| |
| | | |
| | | |
| |____________________________________________________________| |
|/______________________________________________________________\|
Obbiettivo
Il tuo obiettivo è quello di scrivere il programma più breve possibile che genera questi "calendari" di arte ASCII su stdout usando il tempo in cui il programma viene eseguito.
Ogni esecuzione del programma dovrebbe generare una scena temporale. Gli aggiornamenti non dovrebbero essere automatici (o animati).
Le nuvole, le stelle e gli uccelli, dovrebbero essere posizionati casualmente nel cielo (quindi ogni corsa, anche quelle contemporaneamente, saranno probabilmente diverse). Non devono mai sovrapporsi alla barca o l'un l'altro. (Anche i trattini d'acqua non devono sovrapporsi allo scafo della barca.)
Si noti che nulla di ciò che ho descritto appare sott'acqua. Questo è per te. Durante un'ora prestabilita di ogni settimana (a tua scelta), qualcosa di interessante dovrebbe essere disegnato sott'acqua. Potrebbe essere un mostro marino o una nave affondata o qualsiasi altra cosa, dipende da te. Durante quell'ora puoi persino modificare il design del resto della scena (rimanendo nei limiti della cornice).
punteggio
Questa è una combinazione di contest di popolarità di code-golf.
Il tuo punteggio è (bytes in program) - 4 * (upvotes - downvotes)
. Vince il punteggio più basso.
Utilizzare http://mothereff.in/byte-counter come contatore di byte se si utilizzano caratteri non ASCII.
Note e aggiornamenti
Puoi usare le boe anziché i trattini, poiché, ammettiamolo, sono molto più appropriati:
| | ~~(_)~~~(_)~~ (3rd of the month)
I trattini (o le boe) non devono essere casuali ma sarebbe bello se lo fossero.
- La tua "ora speciale" dovrebbe durare 60 minuti dalla cima dell'ora a 1 minuto prima dell'ora successiva.
- Durante l'ora speciale le cose che disegni sott'acqua possono spostarsi e possono alterare la superficie e il cielo quando ha senso (ad es. Mostro marino che mangia la barca, formazione di buchi neri sul fondo del mare, ecc.)