Wyświetl zegar cyfrowy
(Widzę, że istnieje wiele wyzwań związanych z zegarem, próbowałem je wszystkie odczytać, jestem prawie pewien, że jest to wyjątkowy)
Wpisz kod, który stale aktualizuje cyfrowy zegar wyświetlany w formacie h:m:s
gdzie h
, m
i s
może zająć 1 lub 2 znaków każdy. Ograniczenia w prostych słowach, jak to ujął @BlueEyedBeast, zasadniczo chcę, aby zastąpiło pokazany czas.
- Nowe linie są niedozwolone
- Końcowe spacje są dozwolone
- Inne końcowe znaki są niedozwolone
- Nie należy przegapić żadnych sekund (57 -> 59 nie jest dozwolone)
- Numery rozpoczynające się od „0” są dozwolone, o ile nie zajmują więcej niż 2 znaki
- Kod nie może akceptować żadnych danych wejściowych
- Jeśli twój język nie może uzyskać aktualnego czasu bez wprowadzania danych, możesz użyć do wprowadzenia do 8 bajtów w standardowy dozwolony sposób
- Dane wyjściowe muszą być ustawione na standardowe wyjście
- To jest codegolf, więc wygrywa najkrótsza odpowiedź!
Przykład
Pracuję nad językiem o nazwie *> <> (rozgwiazda), ponieważ takie programy nie są możliwe w> <> (wystarczy poczekać na plik we / wy). Oto działający program zegara cyfrowego (bez golfa). Ten program jest napisany w *> <> :
s":"m":"hnonon" "ooo88888888888ooooooooooo1S
Uwaga: w tym przypadku wszystko jest identyczne z> <>, z wyjątkiem s = sekunda, m = minuta, h = godzina, S = sen (100 ms * x)
To daje:
14:44:31
Aktualizowanie co 100 ms aż do zakończenia.
Niedozwolone przykłady
Następujące elementy nie są dozwolone:
1:
14:44:3114:44:32
2:
14:44:31 14:44:32
3:
14:44:31
14:44:32
Czas musi pozostać w pierwszym wierszu, w którym został wygenerowany, bez widocznych znaków końcowych. Wyczyszczenie terminala byłoby jednak dozwolone, ponieważ nadal nie będzie żadnych znaków końcowych.
Odpowiedzi:
Pyke, 6 bajtów
Wypróbuj tutaj!
Myślę, że to jest poprawne. Zamień znak spacji na znak powrotu karetki, aby uzyskać prawidłowe dane wyjściowe (nie działa online)
źródło
HTML + JS (ES6), 8 + 60 = 68 bajtów
Testowane w Chrome.
-1 bajt (@ETHProductions): Użyj francuskiego formatu czasu zamiast
.toTimeString().slice(0,8)
HTML + JS (ES6), 8 + 62 = 70 bajtów
Będzie to działać w FireFox.
-3 bajty (@ETHProductions): Użyj francuskiego formatu czasu zamiast
.toTimeString().slice(0,8)
źródło
new Date().toLocaleTimeString`fr`
(1 bajt w Chrome za pomocą...TimeString('fr')
)Python 2, 50 bajtów
(Python 2.1+ dla
ctime
bez argumentów)time.ctime()
daje sformatowany ciąg, z którego można pokroić hh: mm: ss za pomocą[11:19]
(pozostaje on w tym samym miejscu bez względu na datę i godzinę).print
powrót karetki'\r'
przed tekstem i uczynienie z niego pierwszego elementu krotki,
efektywnym pomijaniem ukrytego końca'\n'
i nadpisuje poprzednio napisane wyjście.while 1
pętle na zawsze.źródło
,
końca, aby ukryć nowy wiersz, inaczej w Pythonie 2.7.12 otrzymuję nowe wiersze.Mathematica,
48413728 bajtówWyjście będzie
TimeObject
odświeżane w sposób ciągły.Wygląda tak:
Alternatywne wersje
48 bajtów:
53 bajty:
źródło
Dynamic@{DateString@TimeObject[], Clock[]}[[1]]
Pause
.Dynamic@{Now,Clock[]}[[1]]
ma 26 bajtów i pokazuje obiekt typu data-godzina.Dynamic@{DateString@"Time",Clock[]}[[1]]
ma 40 bajtów i wysyła tylko hh: mm: ssWidzę, że wymóg niesygnałowego wejścia interfejsu użytkownika do zatrzymania programu został usunięty. Teraz możemy zrobić:
Bash + coreutils, 28
yes
nieprzerwanie wysyła ciąg „teraz”, raz na linię, do potoku.date -f-
odczytuje interpretuje każdy „teraz” jako bieżący czas, a następnie wyświetla w wymaganym formacie. Ciąg formatu zawiera sekwencję zmiany znaczenia ANSI, aby wyczyścić ekran.date
robi wyjście znak nowej linii po dacie - Nie jestem pewien, czy to dyskwalifikuje, ponieważ wygaszenie ekranu za każdym razem, w każdym razie.Jeśli to dyskwalifikuje, możemy użyć
tr
zamiast tego :Bash + coreutils, 31
Poprzednie odpowiedzi:
Bash + X, 32
Niestety może to być aktualizowane tylko co sekundę. Jeśli to dyskwalifikuje, możemy to zrobić zamiast tego:
Bash + coreutils, 43
źródło
date +$'\e[2J'%T;$0
date +$'\e[2J'%T;exec $0
dla 24 bajtów ...QBIC , 6 bajtów
Ciągle czyści ekran i drukuje czas systemowy w formacie
22:03:41
.źródło
Clojure,
150136141 bajtówV3: 141 bajtów :(
+5 bajtów, aby naprawić błąd. Ponieważ czasy nie są wypełnione zerami, zegar może się „kurczyć” i rozszerzać, gdy zmienia się czas. Kiedy się skurczył, „rozmazywał się”, ponieważ ostatnia cyfra nie była już usuwana. Naprawiono to, dodając spacje na końcu, aby wszystko zostało zastąpione.
V2: 136 bajtów
-14 bajtów, przełączając
SimpleDateFormat
na formatowanie daty za pomocą. Wciąż ogromny.V1: 150 bajtów
Uświadomiłem sobie, że prawdopodobnie używam najgorszego możliwego sposobu, aby uzyskać datę. Zdecydowanie miejsce na ulepszenia tutaj.
Nie golfowany:
źródło
Bash + zegarek, 19 bajtów
zegarek nie jest częścią coreutils , ale jest dostępny po instalacji praktycznie na każdej dystrybucji Linuksa.
Grał w golfa
Wypróbuj online!
źródło
WinDbg, 73 bajty
Ciągle aktualizuje linię z bieżącym czasem, dopóki użytkownik nie naciśnie Ctrl + Break.
Jak to działa:
Przykładowe dane wyjściowe (masz pomysł):
źródło
PHP, 28 bajtów
date
Wszystko druki funkcyjne dosłownie że doesnt rozpoznać.\r
jest znakiem powrotu karetki, ustawia kursor w pierwszej kolumnie.Uruchom z
-r
.źródło
MATL , 11 bajtów
Nieskończona pętla, która czyści ekran i drukuje czas w określonym formacie.
Możesz spróbować w MATL Online! . Ten kompilator jest eksperymentalny; jeśli to nie działa odśwież stronę i ponownie naciśnij „Uruchom”.
źródło
C #, 82 bajty
Anonimowa metoda, która nieustannie zastępuje 8 znaków nowym wynikiem. Może być skrócony o 1 bajt, jeśli zostanie zmodyfikowany, aby zaakceptować parametr zastępczy (
z=>...
).Pełny program:
źródło
System
? Niektórzy to robią, a inni nie: /C #, 65 bajtów
Działa poprzez zastąpienie tej samej linii w nieskończonej pętli
źródło
SmileBASIC 3.3.2, 38 bajtów
UTF-16 jest do bani :(
W każdym razie to wielokrotnie drukuje czas lokalny w GG: MM: SS ze spacją po nim, bez nowej linii później. Nie aktualizuje się co sekundę, po prostu drukuje wielokrotnie na zawsze.
źródło
@L?TIME$
i dodanie linii po (w sumie 3 liniach), która czyta,LOCATE 0, 0
robi lewę (czy SmileBASIC obsługuje powrót karetki?).len(""" YOUR CODE HERE """)
, a następnie po prostu zrób * 2 dla UTF-16.C,
1341168980767573 bajtówźródło
time.h
as well. This removes the time_t type, so you need to make n an int instead. This can be done by declaring it outside of main (liken;main...
), which removes the need for theint
. You can also get rid of thechar
with the same trick:b[9];main...
. They're both int type now, but it's flexible enough.strftime...
ab[9]
i po prostu się drukiem w ten sposób:printf("\r%d:%d:%d",(n/3600)%60-29,(n/60)%60,n%60);
Nie jestem pewien, czy są potrzebne parens czy nie. Możesz także usunąć zestaw{}
, wstawiając przecinki międzyfor(;;)a,b,c;
(n/60)%60
, poważnie?n
as parameter ofmain
, saymain(n)
instead ofn;main()
Powershell, 39 bytes
Because I dislike using cls in Powershell. From briantist's post @/codegolf//a/102450/63383
źródło
Pascal, 61 bytes
Free pascal has nice time routines in SysUtils unit. Ungolfed:
źródło
C 65 (prev 64) bytes
Guaranteed to work on Linux machine. :)
@Marco Thanks!
źródło
Vim, 26 bytes
This creates a recursive macro (e.g. an eternal loop) that deletes all the text on the current line and replaces it with the current time.
źródło
Pyth - 28 bytes
Kinda longish, because pyth has no strftime.
źródło
Groovy, 45 characters
źródło
Jelly, 8 bytes
Try it online!
The carriage return doesn't work online, and I can't get the interpreter to work, so its kinda untested, but it works as expected when I use printable characters in place of the CR.
źródło
ForceLang, 123 bytes
datetime.toTimeString
is backed in the reference implementation by Java'sDateFormat.getTimeInstance()
, which is locale-dependent, so you can set your default system locale to one that uses 24-hour time.źródło
PowerShell,
30282420 bytesChanged my computer's region to Germany based on raznagul's comment to save 4 bytes. :)
Previous version that works in all locales.
źródło
tcl, 69 bytes
Try it here!
źródło
Batch, 36 bytes
Where
␈
represents the ASCII BS character (code 8).źródło
Racket, 71 bytes
Where the
↵
is actually a CR (hex0d
). Hex dump of the program for further clarification (notice byte at position hex4d
):Uses SRFI/19 included with the Racket distribution.
(current-date)
gets the current local date & time. Thedate->string
format~3
is ISO-8601 hour-minute-second format.(let l () ... (l))
in an idiomatic infinite loop.(require srfi/19)
loads thesrfi/19
module.źródło
C, 156 bytes
źródło
TI-Basic, 40 Bytes
(In TI-BASIC, many characters are 2 byte tokens, and colons at the beginning of a line are 0 extra bytes)
źródło
R, 41 bytes
Has one trailing space (because of
cat
default separator being a space).Because of the refresh rate of the R GUI, running this in the GUI will occasionally skip some seconds, but if you save it to a file and run it on the command line it will display correctly every single seconds.
Will run forever until user interrupt.
źródło