Tampilkan Jam Digital
(Saya melihat ada banyak tantangan jam, saya telah mencoba membaca semuanya, saya cukup yakin ini unik)
Menulis beberapa kode yang terus update jam digital ditampilkan dalam format h:m:s
mana h
, m
dan s
dapat menempati 1 atau 2 karakter masing-masing. Batasan-batasan dalam istilah sederhana seperti yang dikatakan @BlueEyedBeast, saya pada dasarnya ingin mengganti waktu yang ditampilkan.
- Baris baru tidak diizinkan
- Ruang tambahan diperbolehkan
- Karakter tambahan lainnya tidak diperbolehkan
- Tidak ada detik yang terlewatkan (57 -> 59 tidak diizinkan)
- Angka yang dimulai dengan "0" diizinkan, asalkan angka tersebut tidak melebihi 2 karakter
- Kode tidak boleh menerima input apa pun
- Jika bahasa Anda tidak bisa mendapatkan waktu saat ini tanpa input, Anda dapat menggunakan untuk input hingga 8 byte dengan cara yang diizinkan secara standar
- Keluaran harus stdout
- Ini codegolf sehingga jawaban terpendek menang!
Contoh
Saya sedang mengerjakan bahasa bernama *> <> (bintang laut) karena program seperti ini tidak mungkin di> <> (tunggu saja file i / o). Berikut adalah program jam digital yang berfungsi di dalamnya (ungolfed). Program ini ditulis dalam *> <> :
s":"m":"hnonon" "ooo88888888888ooooooooooo1S
Catatan: Semuanya identik dengan> <> kecuali, s = detik, m = menit, h = jam, S = tidur (100 ms * x)
Output ini:
14:44:31
Memperbarui setiap 100 ms hingga dihentikan.
Contoh yang Dilarang
Berikut ini tidak diizinkan:
1:
14:44:3114:44:32
2:
14:44:31 14:44:32
3:
14:44:31
14:44:32
Waktu harus tetap pada baris pertama yang dihasilkan tanpa karakter trailing yang terlihat. Menghapus terminal, akan diizinkan karena masih tidak memiliki karakter tambahan.
Jawaban:
Pyke, 6 byte
Coba di sini!
Saya pikir ini valid. Ganti karakter ruang dengan carriage return untuk output yang valid (tidak berfungsi online)
sumber
HTML + JS (ES6), 8 + 60 = 68 byte
Diuji di Chrome.
-1 byte (@ETHProductions): Gunakan format waktu Prancis sebagai ganti
.toTimeString().slice(0,8)
HTML + JS (ES6), 8 + 62 = 70 byte
Ini akan bekerja di FireFox.
-3 byte (@ETHProductions): Gunakan format waktu Prancis sebagai ganti
.toTimeString().slice(0,8)
sumber
new Date().toLocaleTimeString`fr`
(1 byte di Chrome satu dengan...TimeString('fr')
)Python 2, 50 byte
(Python 2.1+
ctime
tanpa argumen)time.ctime()
menghasilkan string yang diformat, dari mana jj: mm: dd dapat diiris menggunakan[11:19]
(itu tetap di lokasi yang sama apa pun tanggal dan waktu).print
ing carriage return'\r'
sebelum teks dan menjadikan teks item pertama tuple dengan,
secara efektif menekan trailing implisit'\n'
dan menimpa output yang ditulis sebelumnya.while 1
loop selamanya.sumber
,
di akhir untuk menekan baris baru jika tidak di Python 2.7.12 saya mendapatkan baris baru.Mathematica,
48413728 byteOutput akan menjadi
TimeObject
, menyegarkan terus menerus.Terlihat seperti ini:
Versi alternatif
48 byte:
53 byte:
sumber
Dynamic@{DateString@TimeObject[], Clock[]}[[1]]
Pause
.Dynamic@{Now,Clock[]}[[1]]
adalah 26 byte dan menunjukkan objek datetime.Dynamic@{DateString@"Time",Clock[]}[[1]]
adalah 40 byte dan keluaran hanya jj: mm: ddSaya melihat bahwa persyaratan untuk input UI non-sinyal untuk menghentikan program telah dihapus. Jadi sekarang kita bisa melakukan:
Bash + coreutils, 28
yes
terus menerus mengeluarkan string "sekarang", sekali per baris, ke dalam pipa.date -f-
membaca setiap kata "sekarang" sebagai waktu saat ini, kemudian menghasilkan dalam format yang diperlukan. String format menyertakan urutan pelarian ANSI untuk menghapus layar.date
memang menampilkan baris baru setelah tanggal - Saya tidak yakin apakah ini mendiskualifikasi, karena layar dibersihkan setiap saat.Jika itu didiskualifikasi, maka kita bisa menggunakan
tr
:Bash + coreutils, 31
Jawaban Sebelumnya:
Bash + X, 32
Sayangnya ini hanya dapat memperbarui setiap detik. Jika itu didiskualifikasi, maka kita dapat melakukan ini sebagai gantinya:
Bash + coreutils, 43
sumber
date +$'\e[2J'%T;$0
date +$'\e[2J'%T;exec $0
selama 24 byte ...QBIC , 6 byte
Terus membersihkan layar dan mencetak waktu sistem dalam format
22:03:41
.sumber
Clojure,
150136141 byteV3: 141 byte :(
+5 byte untuk memperbaiki bug. Karena waktu bukan nol padded, jam dapat "menyusut" dan berkembang ketika waktu berubah. Itu "mengotori" ketika menyusut karena digit terakhir tidak lagi dibersihkan. Memperbaikinya dengan menambahkan beberapa spasi di akhir untuk memastikan semuanya ditimpa.
V2: 136 byte
-14 byte dengan beralih menggunakan
SimpleDateFormat
format tanggal. Masih besar.V1: 150 byte
Saya menyadari bahwa saya mungkin menggunakan cara terburuk untuk mendapatkan kencan. Pasti ruang untuk perbaikan di sini.
Tidak Terkumpul:
sumber
Bash + watch, 19 byte
Arloji bukan bagian dari coreutils , tetapi tersedia di luar kotak pada hampir setiap distro Linux.
Golf
Cobalah online!
sumber
WinDbg, 73 byte
Itu terus memperbarui garis dengan waktu saat ini sampai pengguna menekan Ctrl + Break.
Bagaimana itu bekerja:
Contoh hasil (baik, Anda mendapatkan ide):
sumber
PHP, 28 byte
The
date
fungsi cetak segala sesuatu secara harfiah bahwa doesnt mengenali.\r
adalah carriage return, atur kursor ke kolom pertama.Jalankan dengan
-r
.sumber
MATL , 11 byte
Infinite loop yang membersihkan layar dan mencetak waktu dalam format yang ditentukan.
Anda dapat mencobanya di MATL Online! . Kompiler ini bersifat eksperimental; jika tidak berhasil menyegarkan halaman dan tekan "Run" lagi.
sumber
C #, 82 byte
Metode anonim yang terus-menerus menimpa 8 karakter dengan output baru. Dapat dibuat 1 byte lebih pendek jika memodifikasi untuk menerima parameter dummy (
z=>...
).Program lengkap:
sumber
System
? Beberapa orang melakukannya, dan beberapa orang tidak: /C #, 65 byte
Bekerja dengan menimpa baris yang sama dalam satu lingkaran tanpa akhir
sumber
SmileBASIC 3.3.2, 38 bytes
UTF-16 menyebalkan :(
Bagaimanapun, ini berulang kali mencetak waktu lokal di HH: MM: SS dengan spasi setelahnya, tidak ada baris baru sesudahnya. Itu tidak memperbarui setiap detik, hanya berulang kali mencetak selamanya.
sumber
@L?TIME$
dan menambahkan baris setelah (untuk total 3 baris) yang berbunyiLOCATE 0, 0
tidak trik (apakah SmileBASIC mendukung carriage kembali?).len(""" YOUR CODE HERE """)
, lalu cukup lakukan * 2 untuk UTF-16.C,
1341168980767573 bytesumber
time.h
juga. Ini menghapus tipe time_t, jadi Anda perlu membuat n int sebagai gantinya. Ini dapat dilakukan dengan mendeklarasikannya di luar main (sepertin;main...
), yang menghilangkan kebutuhan untukint
. Anda juga dapat menyingkirkanchar
dengan trik yang sama:b[9];main...
. Mereka berdua tipe int sekarang, tapi cukup fleksibel.strftime...
danb[9]
dan mencetaknya di sini:printf("\r%d:%d:%d",(n/3600)%60-29,(n/60)%60,n%60);
Saya tidak yakin apakah orangtua perlu atau tidak. Anda juga dapat menghapus serangkaian{}
dengan menempatkan koma di antara pernyataan Anda sehinggafor(;;)a,b,c;
(n/60)%60
seriusn
sebagai parametermain
, katakanlahmain(n)
bukann;main()
Powershell, 39 byte
Karena saya tidak suka menggunakan cls di Powershell. Dari posting briantist @ /codegolf//a/102450/63383
sumber
Pascal, 61 byte
Pascal gratis memiliki rutinitas waktu yang baik di unit SysUtils. Tidak Terkumpul:
sumber
C 65 (sebelumnya 64) byte
Dijamin bekerja di mesin Linux. :)
@ Marsco, Terima kasih!
sumber
Vim, 26 byte
Ini menciptakan makro rekursif (misal loop abadi) yang menghapus semua teks pada baris saat ini dan menggantinya dengan waktu saat ini.
sumber
Pyth - 28 byte
Agak gondrong, karena pyth tidak memiliki strftime.
sumber
Groovy, 45 karakter
sumber
Jelly , 8 byte
Cobalah online!
Pengembalian carriage tidak berfungsi online, dan saya tidak bisa membuat penerjemah bekerja, jadi ini agak tidak teruji, tetapi berfungsi seperti yang diharapkan ketika saya menggunakan karakter yang dapat dicetak sebagai ganti CR.
sumber
ForceLang, 123 byte
datetime.toTimeString
didukung dalam implementasi referensi oleh JavaDateFormat.getTimeInstance()
, yang bergantung pada lokal, sehingga Anda dapat mengatur lokal sistem default Anda ke yang menggunakan waktu 24 jam.sumber
PowerShell,
30282420 byteMengubah wilayah komputer saya ke Jerman berdasarkan komentar raznagul untuk menghemat 4 byte. :)
Versi sebelumnya yang berfungsi di semua lokal.
sumber
tcl, 69 byte
Coba di sini!
sumber
Batch, 36 byte
Dimana
␈
mewakili karakter ASCII BS (kode 8).sumber
Racket, 71 byte
Di mana
↵
sebenarnya CR (hex0d
). Hex dump dari program untuk klarifikasi lebih lanjut (perhatikan byte pada posisi hex4d
):Penggunaan SRFI / 19 termasuk dalam distribusi Racket.
(current-date)
dapatkan tanggal & waktu setempat saat ini. Thedate->string
Format~3
adalah ISO-8601 jam menit detik format.(let l () ... (l))
dalam loop tak terbatas idiomatik.(require srfi/19)
memuatsrfi/19
modul.sumber
C, 156 byte
sumber
TI-Basic, 40 Bytes
(Dalam TI-BASIC, banyak karakter adalah token 2 byte, dan titik dua pada awal baris adalah 0 byte tambahan)
sumber
R, 41 byte
Memiliki satu spasi tambahan (karena
cat
pemisah default berupa spasi).Karena kecepatan refresh dari GUI R, menjalankan ini di GUI kadang-kadang akan melewatkan beberapa detik, tetapi jika Anda menyimpannya ke file dan menjalankannya di baris perintah itu akan ditampilkan dengan benar setiap detik.
Akan berjalan selamanya sampai interupsi pengguna.
sumber