MATLAB - 89 bajtów
a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Dość oczywiste. Najpierw utwórz uchwyt funkcji, aby pobrać bieżącą godzinę zegara systemowego. Następnie wyświetlaj Legen... wait for it...
ze znakiem powrotu karetki, a następnie wchodzimy do while
pętli, w której sprawdzamy, czy bieżąca godzina dodana z 1 nie jest równa bieżącej godzinie. Jeśli tak, kontynuuj zapętlenie. Tylko do momentu, gdy nastąpi następna godzina, wyświetlamy dary!
i powrót karetki następuje po.
Godzina MATLAB opiera się na indeksowaniu 24-godzinnym, więc mod
operacja z bazą 24 jest wymagana do obsługi rozlewania od 23:00 (23:00) do północy (00:00).
Drobne uwagi
Ta hour
funkcja wymaga zestawu narzędzi Financial Time Series. now
Funkcja nie podlega tym ograniczeniom, ale pobiera aktualną datę i czas jako numer seryjny, który hour
w ten sposób wykorzystuje obliczyć aktualną godzinę.
Chcesz uruchomić to w Octave?
Pewnie! Ponieważ Octave nie ma tego zestawu narzędzi, musielibyśmy tylko zmodyfikować hour
funkcję, aby wywoływała datevec
wektor 6 elementów - po jednym dla każdego roku, miesiąca, dnia, godziny, minut i sekund. Musisz po prostu wyodrębnić czwarty element wyniku:
a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Dodatkowe znaki sprawiają, że rozwiązanie ma maksymalnie 98 bajtów, ale będziesz mógł uruchomić to w Octave. Zwróć uwagę na indeksowanie w miejscu bez zmiennej tymczasowej w uchwycie funkcji.
Brak zestawu narzędzi dla Financial Time Series?
Jeśli chcesz uruchomić to w MATLAB bez zestawu narzędzi Financial Time Series, ponieważ nie możesz natychmiast indeksować do zmiennych bez tymczasowego, zapisanie zajmie nieco więcej bajtów:
disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');
Najpierw pobiera bieżącą godzinę i datę i zapisuje ją w zmiennej, h
a także zapisuje w zmiennej automatycznej o nazwie ans
. Następnie ciągle zapętlamy i sprawdzamy, czy bieżąca godzina nie jest równa następnej godzinie. Przy każdej iteracji aktualizujemy zmienną automatyczną o bieżącą godzinę i datę. Gdy tylko następna godzina dopasuje się do bieżącej godziny i daty, wyświetlamy ostatnią część ciągu i wychodzimy. To powoduje zwiększenie liczby bajtów do 114.
Pamiętaj też, że nie możesz wypróbować tego online. Tłumacze online Octave będą mieli limit czasu na wykonanie kodu, a ponieważ jest to while
pętla czekająca na następną godzinę, otrzymasz limit czasu podczas oczekiwania na uruchomienie kodu. Najlepszą rzeczą, jaką możesz zrobić, to uruchomić go na własnym komputerze i sprawdzić, czy działa.