Zróbmy zegar artystyczny i kalendarz ASCII, który informuje nas o bieżącym miesiącu, dniu miesiąca, dniu tygodnia, godzinie, minucie i czy jest to noc czy dzień (ale nie rok czy sekunda).
W dowolnym momencie kalendarz będzie wyglądał mniej więcej tak: (wygląda lepiej przy mniejszych odstępach między wierszami)
________________________________________________________________
|\ ____________________________________________________________ /|
| | ___ | |
| | _( ) | |
| | (___)__) -.- | |
| | | |
| | | |
| | -.- | |
| | -.- | |
| | ___ | |
| | _( ) | |
| | (___)__) | |
| | | |
| | ___ | |
| | _( ) | |
| | _ (___)__) | |
| | /|\ | |
| | / | \ | |
| | /__|__\ | |
| |____|____ | |
| |\_______/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-~~-~~~~~| |
| |____________________________________________________________| |
|/______________________________________________________________\|
Jest to zawsze „ramka obrazu” o wielkości 66 na 23 znaków, której ramka nigdy się nie zmienia.
Obraz w ramce informuje nas o godzinie i dacie:
- W ciągu dnia (6:00 - 17:59) miesiąc zależy od liczby ptaków (
-.-
) na niebie. Styczeń = 1 ptak, luty = 2 ptaki itp. - W nocy (18:00 - 5:59) ptaki są zastępowane 3 razy większą liczbą gwiazdek (
*
). Styczeń = 3 gwiazdki, luty = 6 gwiazdek itp. Ptaki i gwiazdy nigdy nie są na niebie w tym samym czasie. - Dzień miesiąca zależy od liczby znaków między dwoma myślnikami (
-
) na wodzie. np.~~-~~~~-~~
oznacza, że jest to czwarty dzień miesiąca. W zależności od minuty łódź może wymagać przejścia między kreskami (kreski nie zawijają się). - Dzień tygodnia zależy od liczby chmur na niebie (wszystkie chmury wyglądają tak samo). Niedziela = 0 chmur , poniedziałek = 1 chmura, ..., sobota = 6 chmur.
- Godzina zależy od poziomu wody (i łodzi). Na najniższym (jak wyżej) jest godzina pierwsza, podczas godziny drugiej jest o jedną postać wyższa i tak dalej do godziny 12, a następnie z powrotem do godziny pierwszej. (Jest to zegar 12, a nie 24-godzinny).
- Minuta zależy od poziomej pozycji łodzi. W szczycie godziny łódź dotyka lewej krawędzi ramy (jak wyżej). W każdej kolejnej minucie łódź porusza się w prawo o jedną postać. W minutach od 51 do 59 pętla zaczyna się od prawej strony ramki z powrotem w lewo.
Biorąc pod uwagę, że powyższy przykład ma 3 ptaki, 3 chmury, 2 znaki między kreskami, wodę na najniższym poziomie, a łódź po lewej stronie możemy stwierdzić, że data to środa 2 marca, a czas to 1: 00:00.
Oto kolejny przykład z niedzieli 25 kwietnia o 03:58:
________________________________________________________________
|\ ____________________________________________________________ /|
| | | |
| | * * | |
| | * * * | |
| | * | |
| | | |
| | * | |
| | * * | |
| | | |
| | * | |
| | | |
| | * | |
| | _ | |
| | /|\ * | |
| |/ | \ | |
| |__|__\ /| |
| |__|____ __| |
| |______/~~~~~~~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~~-~~~~~\_| |
| | | |
| | | |
| |____________________________________________________________| |
|/______________________________________________________________\|
Cel
Twoim celem jest napisanie możliwie najkrótszego programu, który wypisze te „kalendarze” ASCII na standardowe wyjście, wykorzystując czas uruchomienia programu.
Każde uruchomienie programu powinno generować jedną scenę czasową. Aktualizacje nie powinny być automatyczne (ani animowane).
Chmury, gwiazdy i ptaki powinny być umieszczane losowo na niebie (więc każdy bieg, nawet te w tym samym czasie, może być inny). Nigdy nie powinny nakładać się na łódź ani na siebie nawzajem. (Również kreski wodne nie powinny zachodzić na kadłub łodzi).
Zauważ, że nic, co opisałem, nie pojawia się pod wodą. To jest do zrobienia. Podczas jednej określonej godziny każdego tygodnia (do wyboru) coś ciekawego należy narysować pod wodą. Może to być potwór morski, zatopiony statek lub cokolwiek, to zależy od ciebie. W tej godzinie możesz nawet zmienić projekt reszty sceny (pozostając w granicach kadru).
Punktacja
To jest kombinacja konkursu popularności golfa kodowego.
Twój wynik to (bytes in program) - 4 * (upvotes - downvotes)
. Najniższy wynik wygrywa.
Użyj http://mothereff.in/byte-counter jako licznika bajtów, jeśli używasz znaków spoza ASCII.
Uwagi i aktualizacje
Możesz użyć boi zamiast myślników, ponieważ, spójrzmy prawdzie w oczy, są one bardziej odpowiednie:
| | ~~(_)~~~(_)~~ (3rd of the month)
Kreski (lub boje) nie muszą być losowe, ale byłoby miło, gdyby tak było.
- Twoja „godzina specjalna” powinna trwać 60 minut od początku godziny do 1 minuty przed następną godziną.
- Podczas specjalnej godziny rzeczy, które rysujesz pod wodą, mogą się poruszać i mogą zmieniać powierzchnię i niebo, gdy ma to sens (np. Potwór morski jedzący łódź, czarna dziura tworząca się na dnie morza itp.)