Wyzwanie
Musisz podać bieżący czas w sposób ciągły (aż do anulowania przez przerwanie), raz na sekundę, w dowolny z następujących sposobów:
- Musi być w formacie 24-godzinnym lub AM / PM.
- Jeśli jest to pierwsze, należy je rozdzielić dwukropkami (tj. 15:47:36).
- Jeśli jest to ten ostatni, należy go rozdzielić dwukropkami i śledzić AM / PM (tj. 3:47:36 PM)
- Można go pobrać z Internetu.
- Może to być czas systemowy.
- Musi wyświetlać dowolną naturalnie dostępną formę wydruku, która obsługuje wybrany tekst.
- Dane wyjściowe mogą zawierać dodatkowe informacje poza czasem, ale musisz zagwarantować jeden i tylko jeden wynik czasu na sekundę.
- Ciągłe wyjście musi być w odstępie sekundowym - jeśli zdecydujesz się poczekać, aż sekunda zmieni się między wyjściami, to dobrze. Jeśli odczekasz sekundę między każdym wyjściem, jest to całkowicie akceptowalne, pomimo ewentualnej utraty dokładności.
Ponieważ jest to katalog, języki utworzone po tym wyzwaniu mogą konkurować. Pamiętaj, że musi być tłumacz, aby można było przetestować zgłoszenie. Dozwolone jest (a nawet zachęcane) samodzielne pisanie tego tłumacza dla wcześniej niewdrożonego języka. Poza tym należy przestrzegać wszystkich standardowych zasad gry w golfa kodowego . Zgłoszenia w większości języków będą oceniane w bajtach w odpowiednim wcześniej istniejącym kodowaniu (zwykle UTF-8).
Katalog
Fragment kodu na dole tego postu generuje katalog na podstawie odpowiedzi a) jako listy najkrótszych rozwiązań według języka oraz b) jako ogólnej tabeli wyników.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
## Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
## Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
sleep 1
opiera odpowiedź przerwa reguła 5: należy zagwarantować jedno i tylko jedno wyjście, raz na sekundę. !!Odpowiedzi:
Minecraft 1.8.7, 7 + 8 = 15 blytów (bajty + bloki)
Dotyczy tylko jednego bloku poleceń:
Dane wyjściowe trafiają do konsoli klienta w następujący sposób:
W ramach normalnej wydajności.
To jest system:
xp
daje określoną ilość doświadczenia określonemu graczowi dzięki składnixp <amount> <player>
. Jestem prawie pewien, że jest to najmniejsze polecenie, które ma teraz wyjątkową moc wyjściową.źródło
JavaScript, 32 bajty
Wykorzystuje fakt, że setInterval ocenia kod. Nie jest to zalecane, ale kiedy miałeś problem z golfem?
Date()
zwraca bieżącą godzinę i datę w takim formacie (może się różnić w zależności od systemu).źródło
setInterval(alert,1e3,Date())
zamiast tego zadziałałoby?Date()
zostaną ocenione tylko raz podczas tworzenia interwałush (+ zegarek), 11 bajtów
Scenariusz:
(brak końcowego nowego wiersza)
Wynik:
Ilość miejsc zależy od szerokości terminala.
Testowane na Debian8 i NetBSD7.
źródło
watch
jest coreutil. Prawdziwym językiem jest bash / sh.Bash (distribution)
, niewatch
? @Doorknob-p
przełącznika, aby nie złamać zasady , musisz zagwarantować jedno i tylko jedno wyjście czasu na sekundę. !!Snap ,
876 bloków(Tak, zmieniłem go w MS Paint, ponieważ byłem zbyt leniwy, aby zrobić kolejny zrzut ekranu. Co z tego? Przynajmniej jest czytelny.)
Kliknij skrypt, aby uruchomić
zegar 24-godzinny.
źródło
9:21:08
?Python 2, 47 bajtów
Brak linku online, ponieważ czas oczekiwania ideone (huehuehue) przed wydrukowaniem czegokolwiek.
Dzięki @xsot za
while[sleep(1)]
lewę ictime
lewę.Drukuje bieżącą datę i godzinę w następujący sposób:
Fri Nov 27 21:23:02 2015
źródło
sleep 1
reguła 5 oparta na łamaniu odpowiedzi: musisz zagwarantować jeden i tylko jeden wynik czasu na sekundę.sleep 1
powoduje uśpienie bieżącego wątku przez dokładnie jedną sekundę. Jest zgodny z zasadami.sleep(1)
zarówno w swoim rozwiązaniu AppleScript, jak i swoim rozwiązaniu biczowania Vitsy + , jest to wyraźnie dopuszczalne.Perl, wiersz poleceń, 24 bajty
Należy to uruchomić z wiersza poleceń, ponieważ
perl -E'sleep(say)while$_=gmtime'
(w systemie Windows zamiast tego należy stosować cudzysłowy). Data zostanie podana wraz z czasem, który wydaje się dozwolony .Perl, 25 bajtów
W kontekście skalarnym
gmtime
zwróci ciąg podobny doSat Nov 28 10:23:05 2015
. Wynik zprint
, zawsze 1, jest używany jako parametr dlasleep
.do$0
służy do ponownego uruchomienia skryptu po zakończeniu timera.źródło
{sleep say~~gmtime;redo}
.sleep 1
reguła 5 oparta na łamaniu odpowiedzi: musisz zagwarantować jeden i tylko jeden wynik czasu na sekundę .JavaScript ES6, 43 39 bajtów
Działa z moimi bieżącymi ustawieniami czasu (które nie były zmieniane przez pewien czas, dziękuję), przynajmniej.
4 bajty zapisane przez Conora O'Briena.
źródło
.toTimeString()
w Chrome i FF.new Date()
zDate()
Arcyóu , 27 bajtów
Musiałem połączyć dwie nowe funkcje do tego wyzwania,
zz
ist
.pn
: Dokładnie jak Lispprogn
.zz
: Bezpośredni link do Pythonatime.sleep
.st
: Bezpośredni link do Pythonatime.strftime
.Zwykle cudzysłowy byłyby konieczne wokół ciągu formatu, ale ponieważ nie ma spacji, jest on analizowany jako symbol. Tłumacz interpretuje niezdefiniowane symbole jako siebie, więc otrzymujemy ciąg.
źródło
Bash,
5131242120 bajtówDzięki @quartata za bardzo pomocne komentarze. Dziękuję @Dennis za wyjaśnienia i odciąć jeszcze więcej bajtów. Dziękuję @VoteToClose za wyjaśnienie zasad (które najwyraźniej jestem kiepski w czytaniu) w celu dalszego zmniejszenia bajtów.
date
wyświetla pełną datę z zegarem 24-godzinnym.sleep 1
śpi przez sekundę.exec $0
nieskończenie zapętla skrypt.źródło
true
zsleep 1
ponieważsleep
zwraca1
.date +%T;sleep 1;exec $0
jest nieco krótszy. @ quartata Nitpicking:sleep
ma kod wyjścia zero, dlatego jestwhile
kontynuowany.date
, więc jest to tylko 20 bajtów.Befunge 98, 53 bajtów
Uwagi:
.
polecenie wypisuje ukrytą spację na końcu.d
pierwszą linię naa
źródło
"EMIT"4(
Na początku programu mówi interpreter załadowaćTIME
odcisk palca, który umożliwiaH
,M
orazS
instrukcje. (Nie, nie emituje liczby 4).mIRC 7,49
2016 bajtówźródło
say
Ciebie, musisz połączyć się z serwerem, a następnie dołączyć do kanału. w innym przypadku użyłbyśecho
zamiastsay
. mIRC ma swój własny język skryptowy mSL (język skryptowy mIRC)AutoHotkey, 50 bajtów
Uwagi:
źródło
x
.C (w systemie Linux x64),
179177175168159 bajtówNie golfowany:
Tylko przetestowany na Linuksie x64 i prawdopodobnie tylko działa na nim (x32 może działać, ale inne platformy prawdopodobnie nie będą działać).
Główną różnicą między tym programem a innym opublikowanym programem w C jest użycie wywołań funkcji wyłącznych dla systemu Linux, które, chociaż są okropną praktyką dla prawdziwego oprogramowania, oszczędzają sporo bajtów ... jeśli zignorujesz wszystkie ostrzeżenia kompilatora.
źródło
#include
i<...>
. Czy możesz użyć1e6
zamiast1000000
?#include
s. Nie wygląda na to, że usleep () akceptuje 1e6, jednak - na podstawie tego, jak szybko zaczyna wypluwać znaczniki czasu, po prostu interpretuje to jako 1.%T
jako specyfikacji formatu wstrftime
.Jolf ,
1487 bajtówPrzekreślony 14 to strike 1? Nie, nigdy się nie przyłapie;)
Wypróbuj tutaj! Kliknij uruchom, nie klikaj na nic innego ^ _ ^ strona jest bardzo ... wybuchowa. Tak. Naprawiono system wyjściowy z aktualizacją.
(I dodano kilka stałych i
~1
do~4
mają uprawnień10
).Wyjaśnienie
źródło
Dyalog APL ,
27 1816 bajtówWypróbuj online!
⎕TS
YMD hmst prepend':',¨
: do każdej⋄
nowej instrukcji⎕DL 1
poczekaj sekundę i zwróć rzeczywisty czas oczekiwania; 1,0 sekunda sumuje≢
rzeczywisty czas oczekiwania, dając 1→
przejście do linii (1 = ta linia)źródło
Perl 6 , 29 bajtów
Prawo sposobem, aby to zrobić:
Wersja golfowa
Ponieważ wyjście nie musi być ograniczone tylko do czasu, mogę go nieco skrócić.
źródło
R, 38 bajtów
To wyświetla aktualny czas w następującym formacie:
źródło
PowerShell, 19 bajtów
źródło
for(){date;sleep 1}
PHP, 37 bajtów
Wysyła sformatowany czas serwera i ustawia odświeżanie strony co sekundę.
Oczywiście zależy to od Twojego połączenia internetowego i szybkości odpowiedzi serwera :)
Próbny
źródło
Warning: Cannot modify header information - headers already sent
<?=header('refresh:1').date('G:i:s');
powinien działać z dowolnym ustawieniem bffering wyjścia.VBA, 69 bajtów
Uzyskiwanie czasu jest łatwe,
now()
Wyprowadzanie tylko co 1 sekundę .... DUŻO więcej informacji.Jest to „właściwy” sposób oczekiwania na 1 sekundę w VBA. 78 bajtów
Lub jeśli chcesz obniżyć niektóre rogi, a posiadanie racji tylko w 86% czasu jest wystarczające, 63 Bajty
dodając jeden SigFig zabiorą cię do 95% dokładności, a trzeci do 99,36%
Jeśli chcesz uzyskać powyższą metodę do 100%, potrzebujesz 69 bajtów
(1/86400)
Wszystkie te metody natknęłyby się na sekundę przestępną, ponieważ nie czekają 1 sekundy, ale czekają do 1 sekundy. O północy, kiedy zegary cofną się o godzinę, zegar zatrzyma się na 1 godzinę, a następnie zacznie od momentu, w którym został przerwany.
VBA pozwala na metodę uśpienia, ale twój bajtowy plik jest zrujnowany. 97 bajtów
źródło
JavaScript,
473835 bajtówWyjaśnienie
Ciągle sprawdza, czy czas się zmienił, a następnie
alert
s, jeśli tak.źródło
+""
, ponieważ beznew
,Date()
zwraca ciąg znaków.new
. Dzięki za złapanie tego!AppleScript,
5135 bajtówDość oczywiste. Drukuje bieżącą datę, która zawiera czas, opóźnia sekundę, a następnie kontynuuje.
źródło
𝔼𝕊𝕄𝕚𝕟, 13 znaków / 25 bajtów
Try it here(Firefox only).
Jest to zaskakująco czytelne.
źródło
Dyalog APL, 36 bajtów
Tym razem niezbyt krótko.
Daje to 24-godzinny czas, tj .:
Wyjaśnienie:
{
...}1
: zdefiniuj funkcję i wywołaj ją (argument jest ignorowany, ale potrzebujemy funkcji, aby wywołać ją rekurencyjnie)⎕TS
: funkcja systemowa zwracająca bieżącą datę i godzinę w formacie rok - miesiąc - dzień - godzina - minuta - sekunda - milisekunda . (⎕TS
= T ime s TAMP)3↑3↓
: upuść pierwsze 3 elementy (tj. rok - miesiąc - dzień), a następnie weź pierwsze 3 elementy, które pozostały (godzina - minuta - sekunda).'⊂:⊃,ZI2'⎕FMT
: sformatuj każdą liczbę jako dwucyfrową liczbę całkowitą (I2
) z wiodącymi zerami (Z
), poprzedzoną dwukropkiem (⊂:⊃
). (Wynikiem jest macierz.)∊
: Pobierz wszystkie elementy w matrycy, w kolejności wierszy. (Daje to wektor, w tym przypadku ciąg znaków).1↓
: upuść pierwszy znak (który jest dodatkiem:
)⎕←
: wyślij to⎕DL 1
: następnie poczekaj sekundę (⎕DL
= d e l ay)∇
: wywołuje funkcję rekurencyjnieźródło
{⎕←1↓∊':',¨⍕¨3↑3↓⎕TS⋄∇⎕DL 1}1
dla 28 bajtów, wystarczy na OP .QBasic, 18 bajtów
źródło
Haskell,
989685 bajtówAlternatywna wersja z użyciem notacji:
Pobiera aktualny czas ze
getCurrentTime
zData.Time
biblioteki, a następnie go do rurprint
, czeka 1.000.000 mikrosekundy (1 sekunda) i nazywa siebie.Dzięki im i Mauris!
źródło
m@main=...>>m
jest zawsze krótszy niżmain=...>>main
threadDelay
jest specyficzny dla GHC, możesz go zaimportować zGHC.Conc
Partia - 34
40bajtówUwielbiam wbudowane zmienne:
Zdecydowanie
sleep
w najbliższym czasie musi być jakieś polecenie w Batch.źródło
ping ...
ztimeout 1
. Również zegar nie jest bardzo dokładny podczas używaniaping
. Lepiej ztimeout
;):A
i wymienićgoto A
z%0
Python 3, 99 bajtów
Przepraszamy, jeśli dziwnie formatuje kod, robiąc to z iPada. (nie pytaj). Wiem, że ten kod jest duży, biorąc pod uwagę niektóre inne odpowiedzi, ale nie widziałem jeszcze pytona, więc chciałem go dodać.
źródło
True
z1
, a jeśli umieścićprint
isleep
linie na tej samej linii cowhile
(oddzielone średnikiem) oszczędza Ci spacje.Java,
300166137125 125124 bajtówPrawiewięcej niż o połowę dzięki VoteToClose, Paülo Ebermann i janschweizer!Nie golfowany:
źródło
java.util.*
zamiast dwóchjava.util
importów,java.text.*
z tego samego powodu. Użyjfor(;;)
do nieskończonych pętli. UżyjString[]a
w głównej deklaracji. Użyjinterface A{static void main(...
, ponieważ spowoduje to jeszcze większe skrócenie. Można używaćException
nadInterruptedException
i można zastąpićex
ze
. Możesz także usunąć cały tekst z haczyka, ponieważ i tak to nic nie robi.DateFormat
iCalendar
zmiennych łącznie. Zamieniasz zawartość pętli for naSystem.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));try{Thread.sleep(1000);}catch(Exception e){}
.import java.util.*;import java.text.*;interface A{static void main(String[]a){for(;;){System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));try{Thread.sleep(1000);}catch(Exception e){}}}}
throws Exception
jest krótszy niż try / catchPerl,
9981755140362927 bajtówźródło
gmtime
zamiastlocaltime
.printf"%02d:%02d:%02d\n",(gmtime)[2,1,0]
gmtime."\n"
wymusi kontekst skalarny.."\n"
w golfie: użyj,.$/
aby zaoszczędzić 2 bajty. Przynajmniej użyj literału nowego wiersza zamiast,\n
aby zapisać 1 bajt.