Podaj aktualny czas

49

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 . 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 Njest 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

Addison Crump
źródło
Czy „do momentu anulowania przez przerwanie” obejmuje zamknięcie programu czy też potrzebuje mechanizmu, aby zatrzymać zakodowany w nim cykl?
user81655,
1
Ostrzeżenie: Wszystko sleep 1opiera odpowiedź przerwa reguła 5: należy zagwarantować jedno i tylko jedno wyjście, raz na sekundę. !!
F. Hauri
1
F. Hauri: Jak to możliwe? Zasada 6 mówi: „Jeśli poczekasz sekundę między każdym wyjściem, to również jest w porządku”.
YetiCGN
1
@Jasen Nie, ale znaczenie „to w porządku” oznacza, że ​​opcja oczekiwania jest nadal ważna, niezależnie od ewentualnej straty czasu. Wyjaśniłem to dla ciebie.
Addison Crump,

Odpowiedzi:

56

Minecraft 1.8.7, 7 + 8 = 15 blytów (bajty + bloki)

Dotyczy tylko jednego bloku poleceń:

xp 1 @p

Dane wyjściowe trafiają do konsoli klienta w następujący sposób:

czasy

W ramach normalnej wydajności.

To jest system:

system

xpdaje określoną ilość doświadczenia określonemu graczowi dzięki składni xp <amount> <player>. Jestem prawie pewien, że jest to najmniejsze polecenie, które ma teraz wyjątkową moc wyjściową.

Addison Crump
źródło
3
Nie mów „19 bajtów”, ponieważ nie zmierzyłeś rozmiaru odpowiedzi w bajtach.
feersum
6
@feersum Jest powód, dla którego mówię bajty, zaufaj mi. Jest to obecnie najbliższa konsensusu dla MC.
Addison Crump
4
Możesz użyć przestarzałych kodów numerycznych, prawda?
Conor O'Brien
4
Użyj tego systemu oceniania, jeśli chcesz, 19 wielorybów, ale nie jest to 19 bajtów, ponieważ nie ma wcześniej zdefiniowanego kodowania, które pozwala przechowywać to rozwiązanie w pliku 19-bajtowym.
feersum
1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Wierzę, że musiałbym zawinąć w JSON. Chyba że użyłem 1.6, ale jest to praktycznie inny język.
Addison Crump
17

JavaScript, 32 bajty

setInterval("alert(Date())",1e3)

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).

 Wed Jul 28 1993 14:39:07 GMT-0600 (PDT)
intrepidcoder
źródło
Czy setInterval(alert,1e3,Date())zamiast tego zadziałałoby?
ETHproductions
@ETHproductions Zawsze pokazuje mi ten sam czas
ev3commander
@EETProdukcje w twoim przykładzie Date()zostaną ocenione tylko raz podczas tworzenia interwału
MMM
15

sh (+ zegarek), 11 bajtów

Scenariusz:

watch -n1 .

(brak końcowego nowego wiersza)

Wynik:

Every 1,0s: . (SPACES) Sat Nov 28 19:07:51 2015

Ilość miejsc zależy od szerokości terminala.

Testowane na Debian8 i NetBSD7.

yeti
źródło
Odpowiednie narzędzie do pracy, +1
Addison Crump
Zaraz, czy to się liczy jako język programowania? Czy możesz podać mi link do tłumacza?
Addison Crump
@VoteToClose watchjest coreutil. Prawdziwym językiem jest bash / sh.
Klamka
Więc ... nie powinno to być Bash (distribution), nie watch? @Doorknob
Addison Crump
1
Hmm Musisz użyć -pprzełącznika, aby nie złamać zasady , musisz zagwarantować jedno i tylko jedno wyjście czasu na sekundę. !!
F. Hauri
15

Snap , 8 7 6 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.

ev3commander
źródło
2
Zawsze uwielbiam graficzne języki programowania. : D +1
Addison Crump
oh hej ev3! Znam cię z forów Snap / Scratch: P dlaczego dokładnie potrzebujesz Snap zamiast Scratch?
anOKsquirrel
2
@ anOKsquirrel Ponieważ nie muszę zagnieżdżać wszystkich tych bloków łączenia.
ev3commander
Czy to nie powinno czytać 9:21:08?
Łukasz
@Luke Jak pokazuje odpowiedź TI-BASIC, czas bez wiodącego zera na wyjściu jest w porządku. Jest czytelny dla człowieka i jasne, jaka jest godzina.
Addison Crump
11

Python 2, 47 bajtów

from time import*
while[sleep(1)]:print ctime()

Brak linku online, ponieważ czas oczekiwania ideone (huehuehue) przed wydrukowaniem czegokolwiek.

Dzięki @xsot za while[sleep(1)]lewę i ctimelewę.

Drukuje bieżącą datę i godzinę w następujący sposób: Fri Nov 27 21:23:02 2015

Mego
źródło
2
/ ja klaszcze powoli w rytm. Bardzo zabawne Mego. ; D
Addison Crump
Opublikowałem twoje rozwiązanie dla Python 3
jfs
sleep 1reguła 5 oparta na łamaniu odpowiedzi: musisz zagwarantować jeden i tylko jeden wynik czasu na sekundę.
F. Hauri
@ F.Hauri sleep 1powoduje uśpienie bieżącego wątku przez dokładnie jedną sekundę. Jest zgodny z zasadami.
Mego
1
@ F.Hauri Biorąc pod uwagę, że sam autor wyzwania używa ekwiwalentu sleep(1)zarówno w swoim rozwiązaniu AppleScript, jak i swoim rozwiązaniu biczowania Vitsy + , jest to wyraźnie dopuszczalne.
Mego
9

Perl, wiersz poleceń, 24 bajty

sleep(say)while$_=gmtime

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

sleep print$/.gmtime;do$0

W kontekście skalarnym gmtimezwróci ciąg podobny do Sat Nov 28 10:23:05 2015. Wynik z print, zawsze 1, jest używany jako parametr dla sleep. do$0służy do ponownego uruchomienia skryptu po zakończeniu timera.

primo
źródło
2
Jak wynika z rozwiązania AppleScript @ VoteToClose i komentarza , nie trzeba wyodrębniać czasu.
Mego
1
Inną 24 bajtów rozwiązanie: {sleep say~~gmtime;redo}.
Denis Ibaev
sleep 1reguła 5 oparta na łamaniu odpowiedzi: musisz zagwarantować jeden i tylko jeden wynik czasu na sekundę .
F. Hauri
@ F.Hauri reguła została dodana po opublikowaniu tego postu.
primo
9

JavaScript ES6, 43 39 bajtów

setInterval(_=>console.log(Date()),1e3)

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.

SuperJedi224
źródło
alert jest krótszy?
Maltysen
8
@Maltysen Myślę, że w wielu przeglądarkach musisz zamknąć jedno okno alertu, aby zobaczyć następne.
flawr
@Maltysen Spróbowałem, jakoś pomieszało interwał
SuperJedi224
1
Nie potrzebujesz .toTimeString()w Chrome i FF.
Bob
1
Myślę, że można zastąpić new Date()zDate()
Conor O'Brien
8

Arcyóu , 27 bajtów

(@ t(pn(zz 1)(p(st %H:%M:%S

Musiałem połączyć dwie nowe funkcje do tego wyzwania, zzi st.

pn: Dokładnie jak Lisp progn.

zz: Bezpośredni link do Pythona time.sleep.

st: Bezpośredni link do Pythona time.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.

bkul
źródło
1
Chciałbym głosować, ale nie mam już głosów. +1; c Oraz ładne aktualizacje. : D
Addison Crump
7

Bash, 51 31 24 21 20 bajtów

Dzię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.

datewyświetla pełną datę z zegarem 24-godzinnym. sleep 1śpi przez sekundę. exec $0nieskończenie zapętla skrypt.

date;sleep 1;exec $0
Liam
źródło
Nie potrzebujesz shebang.
spaghetto
Także myślę, że można zastąpić truez sleep 1ponieważ sleepzwraca 1.
spaghetto
date +%T;sleep 1;exec $0jest nieco krótszy. @ quartata Nitpicking: sleepma kod wyjścia zero, dlatego jest whilekontynuowany.
Dennis
3
Och, jestem idiotą
spaghetto
2
Później nie potrzebujesz miejsca date, więc jest to tylko 20 bajtów.
ThisSuitIsBlackNot
6

Befunge 98, 53 bajtów

 v
v>"EMIT"4(>H.8,':,M.8,':,S:.8,d,
>:S-    !!k^

Uwagi:

  1. Ten program nie zeruje liczb, które drukuje.
  2. Ten program wypisuje spację, a następnie znak cofania po każdej liczbie, ponieważ .polecenie wypisuje ukrytą spację na końcu.
  3. Rozmiar stosu w tym programie rośnie z każdą sekundą, a zatem w końcu zabraknie mu pamięci.
  4. Ten program zastąpi poprzedni czas, gdy drukuje nowy. Aby drukować za każdym razem w nowej linii, zmień dpierwszą linię naa
pppery
źródło
Dlaczego ciąg „TIME” jest potrzebny? Czy jest jakiś sposób, żeby go złapać? (Nie wiedziałem o tym)
Addison Crump
"EMIT"4(Na początku programu mówi interpreter załadować TIMEodcisk palca, który umożliwia H, Moraz Sinstrukcje. (Nie, nie emituje liczby 4).
pppery
To jest niesamowite . Nigdy nawet nie pomyślałem, że wiele esolangów to zrobi, +1.
Addison Crump
@VoteToClose Befunge 98 ma nawet instrukcję wykonania programu arytmetycznego wyskakującego ze stosu.
pppery
1
ucieka, aby nauczyć się tego języka Przepraszam ...
Addison Crump
6

mIRC 7,49 20 16 bajtów

/timer 0 1 $time
Do0msDay
źródło
Gdzie możemy to przetestować?
Addison Crump
Musisz pobrać mIRC to klient IRC typu shareware. Możesz go pobrać ze strony: mirc.com również, ponieważ powyższa odpowiedź korzysta z sayCiebie, musisz połączyć się z serwerem, a następnie dołączyć do kanału. w innym przypadku użyłbyś echozamiast say. mIRC ma swój własny język skryptowy mSL (język skryptowy mIRC)
Do0msDay
5

AutoHotkey, 50 bajtów

x::Send,% a!=A_Sec? A_Hour ":" A_Min ":" a:=A_Sec:

Uwagi:

  1. Wymaga przytrzymania xdla ciągłego wyjścia.
  2. Zdejmij palec z, xaby przerwać i zakończyć wyjście.
  3. Dane wyjściowe są w formacie 24-godzinnym.
errorseven
źródło
2
Możesz, dla kilku dodatkowych bajtów, umieścić to w etykiecie narzędzia, aby nie wymagało od użytkownika trzymania x.
Michelfrancis Bustillos
5

C (w systemie Linux x64), 179 177 175 168 159 bajtów

#include<time.h>
#include<sys/time.h>
main(){struct timeval a;char b[9];for(;;){gettimeofday(&a,0);strftime(b,9,"%T",localtime(&a.tv_sec));puts(b);sleep(1);}}

Nie golfowany:

#include <time.h>
#include <sys/time.h>
main(){
  struct timeval a;
  char b[9];
  for(;;){
    gettimeofday(&a, 0);
    strftime(b, 9, "%T",localtime(&a.tv_sec));
    puts(b);
    sleep(1);
  }
}

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.

Gamerdog
źródło
Witamy w PPCG! O ile się nie mylę, wierzę, że możesz usunąć przestrzeń pomiędzy #includei <...>. Czy możesz użyć 1e6zamiast 1000000?
Addison Crump
@VoteToClose Miałeś rację co do spacji w #includes. 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.
Gamerdog
¯ \ _ (ツ) _ / ¯ Nie znam też C. Pozwolę na to profesjonalistom. Witaj ponownie, oddaj głos. : D
Addison Crump
Ach, kolejna rzecz - nie musisz odcinać ciągu tylko na czas, więc możesz po prostu wyprowadzić cały czas, pod warunkiem, że zawiera wymagany ciąg czasu.
Addison Crump
2
Możesz użyć %Tjako specyfikacji formatu w strftime.
Mego
5

Jolf , 14 8 7 bajtów

Przekreś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ą.

TaD#`~2

(I dodano kilka stałych i ~1do ~4mają uprawnień 10).

Wyjaśnienie

setInterval("alert(Date())",1000);
     T         a      D#   ` ~2
Conor O'Brien
źródło
4
Ktoś powinien stworzyć YAJSGV (Yet Another JavaScript Golfing Variant).
intrepidcoder
Wydaje się, że drukuje to znacznie więcej niż tylko czas.
Dennis
1
@Dennis Założyłem, że to w porządku, jak w przypadku innych rozwiązań
Conor O'Brien
Mój zły, przeczytałem tylko twoje i odpowiedź Bash.
Dennis
@Dennis Nie ma problemu ^ _ ^
Conor O'Brien
5

Dyalog APL , 27 18 16 bajtów

':',¨⎕TS⋄→≢⎕DL 1

Wypróbuj online!

⎕TSYMD hmst prepend
':',¨: do każdej
nowej instrukcji
⎕DL 1poczekaj sekundę i zwróć rzeczywisty czas oczekiwania; 1,0 sekunda sumuje
rzeczywisty czas oczekiwania, dając 1
przejście do linii (1 = ta linia)

Adám
źródło
4

Perl 6 , 29 bajtów

Prawo sposobem, aby to zrobić:

Supply.interval(1).tap: -> $ {
  say join ':',.hour,.minute,.whole-second given DateTime.now
}
await Promise.new; # halt this thread indefinitely
22:21:58
22:21:59
22:22:0
22:22:1
22:22:2
…

Wersja golfowa

loop {sleep say join ':',now.polymod(1,60,60,24)[31]} # 56 bytes
3:59:26
3:59:27
3:59:28
3:59:29
…

Ponieważ wyjście nie musi być ograniczone tylko do czasu, mogę go nieco skrócić.

loop {sleep say DateTime.now} # 29 bytes
2015-11-27T22:18:10-06:00
2015-11-27T22:18:11-06:00
2015-11-27T22:18:12-06:00
2015-11-27T22:18:13-06:00
…
Brad Gilbert b2gills
źródło
4

R, 38 bajtów

repeat{Sys.sleep(1);print(Sys.time())}

To wyświetla aktualny czas w następującym formacie:

[1] "2015-11-28 07:34:01 CET"
Sven Hohenstein
źródło
4

PowerShell, 19 bajtów

for(){date;sleep 1}
Danko Durbić
źródło
Jak już wspomniano, wyjście musi zawierać hh: mm: ss, które można zredukować dofor(){date;sleep 1}
steve
4

PHP, 37 bajtów

<?=date('G:i:s');header('refresh:1');

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

Nicość
źródło
Nie, bez odświeżania:Warning: Cannot modify header information - headers already sent
Martijn
@Martijn Nie mam pojęcia, z czym możesz zadzierać, ponieważ to działa dla mnie :)
nicael
Usunę głosowanie jako korzyść wątpliwości, ale działa to dla mnie dokładnie raz. Próbowałem na dwóch różnych zwykłych serwerach.
Martijn
2
Zależy od tego, czy masz włączone buforowanie danych wyjściowych.
Andrea,
<?=header('refresh:1').date('G:i:s');powinien działać z dowolnym ustawieniem bffering wyjścia.
Jasen
4

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

Sub a():Debug.Print Now():Application.Wait Now()+TimeValue("0:0:1"):a:End Sub

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%

Sub a():Debug.Print Now():Application.Wait Now()+1e-5:a:End Sub

Jeśli chcesz uzyskać powyższą metodę do 100%, potrzebujesz 69 bajtów (1/86400)

Sub a():Debug.Print Now():Application.Wait Now()+(1/86400):a:End Sub

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

Declare Sub Sleep Lib "kernel32" (ByVal k as Long)
Sub a():Debug.Print Now():Sleep(1e3):a:End Sub
JimmyJazzx
źródło
3

JavaScript, 47 38 35 bajtów

for(p=1;t=Date();p=t)t!=p&&alert(t)

Wyjaśnienie

Ciągle sprawdza, czy czas się zmienił, a następnie alerts, jeśli tak.

for(
  p=1;
  t=Date();
  p=t
)
  t!=p
    &&alert(t)
użytkownik 81655
źródło
Nie musisz po prostu uzyskać ciągu czasu. ; D Tak długo, jak gdzieś tam jest.
Addison Crump
@VoteToClose Oh prawda!
user81655,
Nie sądzę, że potrzebujesz +"", ponieważ bez new, Date()zwraca ciąg znaków.
ETHprodukcje
@ETHproductions Ach, tak, pozostało tam od momentu użycia new. Dzięki za złapanie tego!
user81655,
3

AppleScript, 51 35 bajtów

powtarzać
zaloguj bieżącą datę
opóźnienie 1
koniec

Dość oczywiste. Drukuje bieżącą datę, która zawiera czas, opóźnia sekundę, a następnie kontynuuje.

Addison Crump
źródło
1
Więc poczekaj, czy można wydrukować bieżącą datę i godzinę?
spaghetto
@ quartata Tak, wszelkie powiązanie z czasem, o ile czas jest generowany w sposób ciągły i gwarantowany, że jest generowany, jest w porządku.
Addison Crump
opóźnienie 1 robi co? pauza na 1000000000 ns?
Jasen
@Jasen To prawda.
Addison Crump
3

𝔼𝕊𝕄𝕚𝕟, 13 znaków / 25 bajtów

Ĥ⇀ôᶁ⬮+⬬),1𝕜)

Try it here(Firefox only).

Jest to zaskakująco czytelne.

Mama Fun Roll
źródło
4
Kiedy mówisz „zaskakująco czytelny”, wiesz, że masz do czynienia z zabawnym językiem. +1
Addison Crump
3

Dyalog APL, 36 bajtów

Tym razem niezbyt krótko.

{⎕←1↓∊'⊂:⊃,ZI2'⎕FMT 3↑3↓⎕TS⋄∇⎕DL 1}1

Daje to 24-godzinny czas, tj .:

14:37:44
14:37:45
14:37:46
...

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
marinus
źródło
{⎕←1↓∊':',¨⍕¨3↑3↓⎕TS⋄∇⎕DL 1}1dla 28 bajtów, wystarczy na OP .
Adám,
Nowe zasady zezwalają na wyrzucanie śmieci i losowe spacje, dzięki czemu można się dużo pozbyć.
Adám
3

QBasic, 18 bajtów

?TIME$
SLEEP 1
RUN
Lynn
źródło
3

Haskell, 98 96 85 bajtów

import GHC.Conc
import Data.Time
m@main=getCurrentTime>>=print>>threadDelay(10^6)>>m

Alternatywna wersja z użyciem notacji:

main = do
  time <- getCurrentTime
  print time
  threadDelay 1000000
  main

Pobiera aktualny czas ze getCurrentTimez Data.Timebiblioteki, a następnie go do rur print, czeka 1.000.000 mikrosekundy (1 sekunda) i nazywa siebie.

Dzięki im i Mauris!

Craig Roy
źródło
m@main=...>>mjest zawsze krótszy niżmain=...>>main
Lynn,
Ponadto, ponieważ i tak threadDelayjest specyficzny dla GHC, możesz go zaimportować z GHC.Conc
Lynn
3

Partia - 34 40 bajtów

Uwielbiam wbudowane zmienne:

:A                    //Set label A
echo %time%           //Print the time in 24 hour format
timeout 1    //Wait 1 second (thanks DavidPostill)
goto A                //Jump back to A and repeat

Zdecydowanie sleepw najbliższym czasie musi być jakieś polecenie w Batch.

GiantTree
źródło
Brak wbudowanego snu, ale jest limit czasu . Można wymienić ping ...z timeout 1. Również zegar nie jest bardzo dokładny podczas używania ping. Lepiej z timeout;)
DavidPostill
@DavidPostill dzięki za wskazówkę, nigdy nie wiedziałem, że w Windowsie było takie polecenie. :)
GiantTree
@GiantTree Nie ma za co;)
DavidPostill
Golf: wyjąć :Ai wymienić goto Az%0
stevefestl
3

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ć.

import time
import datetime
while(True):
 print(datetime.datetime.now().time())
 time.sleep(1)  
Ashwin Gupta
źródło
Można wymienić Truez 1, a jeśli umieścić printi sleeplinie na tej samej linii co while(oddzielone średnikiem) oszczędza Ci spacje.
metro
@undergroundmonorail ok, dziękuję za wskazówkę True / 1. Nie jestem do tego przyzwyczajony, ponieważ Java Dosent to robi. Nie wiedziałem też, że Python też ma średniki. Przyjrzę się temu
Ashwin Gupta,
3

Java, 300 166 137 125 125 124 bajtów

Prawie więcej niż o połowę dzięki VoteToClose, Paülo Ebermann i janschweizer!

interface A{static void main(String[]a)throws Exception{for(;;Thread.sleep(1000))System.out.println(new java.util.Date());}}

Nie golfowany:

interface A {
    static void main(String[] a) throws Exception {
        for (;; Thread.sleep(1000)) System.out.println(new java.util.Date());
    }
}
kot
źródło
1
Uprość import: java.util.*zamiast dwóch java.utilimportów, java.text.*z tego samego powodu. Użyj for(;;)do nieskończonych pętli. Użyj String[]aw głównej deklaracji. Użyj interface A{static void main(..., ponieważ spowoduje to jeszcze większe skrócenie. Można używać Exceptionnad InterruptedExceptioni można zastąpić exz e. Możesz także usunąć cały tekst z haczyka, ponieważ i tak to nic nie robi.
Addison Crump
1
Tak, interfejs jest trochę zwariowany - nie mam pojęcia, dlaczego Java na to pozwala, biorąc pod uwagę, że interfejsy są zaprojektowane tak, aby były niemożliwe do uruchomienia.
Addison Crump
1
Dwie rzeczy: musisz zmienić ciąg czasu na „HH: mm: ss” - od teraz formatujesz „Hour: Month: Second”. Ponadto, ponieważ używasz pętli, możesz pozbyć się deklaracji DateFormati Calendarzmiennych łącznie. Zamieniasz zawartość pętli for na System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));try{Thread.sleep(1000);}catch(Exception e){}.
Addison Crump
1
Wszystkie rzeczy, które właśnie zasugerowałem, podsumowały: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){}}}}
Addison Crump
1
throws Exceptionjest krótszy niż try / catch
faza
3

Perl, 99 81 75 51 40 36 29 27 bajtów

sleep(print gmtime.$/);do$0
Steve
źródło
1
Możesz go skrócić, używając gmtimezamiast localtime.
Brad Gilbert b2gills
2
Równieżprintf"%02d:%02d:%02d\n",(gmtime)[2,1,0]
Brad Gilbert b2gills
1
gmtime."\n"wymusi kontekst skalarny.
primo
1
Prawie nigdy nie powinieneś robić ."\n"w golfie: użyj, .$/aby zaoszczędzić 2 bajty. Przynajmniej użyj literału nowego wiersza zamiast, \naby zapisać 1 bajt.
ThisSuitIsBlackNot