Tulis program yang menampilkan waktu sistem saat ini sebagai jam analog, menggunakan grafik ASCII. Jam harus menunjukkan setidaknya pointer jam dan menit, dan harus memiliki resolusi yang cukup minimal 5 menit.
Layar bisa sekecil dan seburuk yang Anda inginkan, tetapi waktu yang ditunjukkan harus mudah dikenali.
Program harus terus berjalan dan memperbarui statusnya. Jika sistem Anda dapat menghapus layar, gunakan, jika tidak cukup untuk mengecat ulang jam saat statusnya berubah.
Anda mendapatkan bonus -20% pada jumlah karakter jika jam memiliki resolusi minimal 1 menit.
Jawaban:
Mathematica 207 - 42 = 165
Kutu dan label jam ditempatkan pada lingkaran unit.
H
danM
berputar di sekitar pusat jam yang menunjukkan jumlah total jam dan menit yang selesai, masing-masing.S
memperbarui posisinya beberapa kali setiap detik.Dua versi diperlihatkan: versi yang memplot teks dalam bidang Cartesian, dan versi lain yang menampilkan karakter teks dalam kisi.
Versi ini memplot karakter ke dalam bidang Cartesian.
Jam di bawah ini menunjukkan waktu 3:08:17 .
Terminal atau Versi Grid :
430316 karakter (253 dengan diskon bonus)Versi ini berfungsi hampir sama, tetapi menempatkan karakter dalam kotak 61 x 61 sel daripada di bidang Cartesian. Itu masih bisa sedikit golf, tapi saya hanya ingin menunjukkan keluaran (seperti pemalas) di Mathematica .
Jam di bawah ini menampilkan 11:06 .
Hanya untuk bersenang-senang:
Ini adalah versi non-Ascii dari jam analog. (60 karakter) Tidak ada perpustakaan eksternal yang digunakan.
sumber
Javascript 370 - 74 = 296
http://jsfiddle.net/wBKQ6/7/
(Ini hanya berfungsi di Chrome karena saya menyalahgunakan fakta bahwa ID elemen ditambahkan ke lingkup global).
Golf (370):
Contoh Output (jauh lebih singkat dalam demo):
sumber
Python, 328 - 65 = 263
Mencetak jam baru setiap detik, dengan jarum menit memperbarui setiap menit.
Jam yang dicetaknya terlihat seperti ini (tidak memanjang di terminal saya):
sumber
100% bash murni saja! Tanpa garpu!
Versi yang diselesaikan dan ditingkatkan dapat ditemukan di sana atau di halaman ini: ascii-clock for geeks . Tapi jangan gunakan itu! Baca catatan di akhir jawaban ini, Anda telah diperingatkan! Gunakan versi perl ini sebagai gantinya!
Jam sederhana pertama tanpa centang kedua.
Dapat diukur dan diedit:
Gambarkan jam 21x21 (10x2 +1) pada 10H10 dalam waktu kurang dari satu detik.
Ini menerima 3 argumen: di
Usage: ascii-clock.sh [ray of clock] [Hour] [Min]
mana sinar standar adalah 12, gambar jam adalah2 x ray + 1
tinggi garis dan lebar ganda karena ruang yang ditambahkan untuk mencoba mendapatkan bentuk bulat.Jika skrip dipanggil dengan
0
atau1
argumen, akan berulang untuk menggambar ulang setiap menit. Lain jika setidaknya Jam (param kedua) ditentukan, Ini akan menarik hanya sekali dan keluar.Itu
H
penanda terletak pada 70% dari ray danM
penanda terletak pada 90% dari ray.Tidak menggunakan binari eksternal seperti
date
ataubc
untuk undian!(Terima kasih kepada @manatwork untuk builtin
read -t
di tempat jika/bin/sleep
).Jadi semua ini dilakukan oleh perintah shell builtin .
Ini menggunakan ANSI urutan , tetapi hanya untuk lingkaran dan untuk membuat penanda tebal.
Ini bisa dengan dijalankan sebagai:
Ini akan menghasilkan sesuatu seperti:
Atau bisa dijalankan sebagai:
Alternatif: Dengan gambar jalur lengkap:
dapat menghasilkan:
atau
Versi terakhir dengan rendering kutu Detik dan nanosleep untuk disinkronkan.
Ini hanya berfungsi pada Linux baru-baru ini, karena ini digunakan
/proc/timer_list
untuk menghitung sepersekian detik untuk tidur di antara setiap refresh.Versi yang lebih dikaburkan (2702 bytes):
Seperti yang diminta oleh @manatwork , ada yang lebih golf versi yang .
Versi ini diwarnai dan menghadirkan waktu digital di sudut-sudut.
Catatan: Bagaimanapun juga, jangan gunakan ini!
Karena ini bash programm dan bash bukan bahasa pemrograman, ini tidak baik digunakan untuk sementara waktu.
Ada sedikit demo konsumsi memori hanya dalam 5 jam, dengan gambar 7 panjang karakter:
Keuntungan utama dari ini adalah ketika saya membutuhkan memori, saya hanya perlu mematikan waktu.
( Nota: Saya sudah menggabungkan ini, versi perl dan versi javascript yang sama di ascii-clock untuk geeks ;-)
sumber
bash
4.1. Pada 4.2 memang berjalan terus menerus dan tidak membutuhkan parameter baris perintah.bash
adalah demonstrasi keterampilan yang hebat. (/ Saya mengambil topinya dan mengklik tautan upvote) Tetapi 2529 karakter itu masih dapat dikurangi dalam semangat tantangan kode-golf : “Golf kode adalah kompetisi untuk memecahkan masalah tertentu dalam byte kode sumber paling sedikit. ”Python 2 - 207
Ini sangat jelek, tapi bisa dibaca. Mencetak setiap 9 detik (Anda dapat mengubah menjadi 1 detik jika diinginkan), memperbarui setiap 5 menit. Saya tidak punya banyak pengalaman dengan kode golf di python jadi saya berharap ini bisa diperbaiki.
Contoh output:
sumber
Perl 5 x 65 = 325 - 65 (20%) = 260 karakter !!
Bersihkan, melingkar, dengan centang kedua dan diperbarui setiap detik.
Pada konsol 24 baris terlihat bagus (Ini 00:12:56 ):
Dan ada versi berwarna, lebih bagus dan lebih pintar:
Versi ini sangat terkait dengan jawaban lain ini , dengan keunggulan utama: Anda dapat menjalankan ini dengan tenang, untuk sementara waktu! Jadi Anda bisa menemukan versi yang ditingkatkan di sana atau di ascii-clock ini untuk laman web Geeks .
Sebagai demonstrasi bahwa melakukan kira - kira sama di perl membutuhkan lebih sedikit sumber daya:
untuk kira-kira fitur yang sama:
s
titik untuk penangan kedua.S
di kiri atas, ketika tidur (mencari perbedaan dengan versi bash )Plus
-a
Argumen otorisasi versi yang ditingkatkan untuk menggambar lintasan jam dan menit di fraksi (lintasan jam tempat 11h59 sekitar jam 12).Biarkan versi perl lainnya !!!
Menggunakan gambar (indah) berikut:
Daripada Anda hanya bisa:
Ok, ini membutuhkan gd2-perl diinstal. Tapi Anda bisa menggantinya
curl
denganwget -O -
;-)(Catatan: Gambar ini mendekati 1.5Kb. Saya telah membuat gambar lain yang sama , tetapi panjangnya 900 byte. Anda mungkin menemukan gambar ini, juga versi javascript yang sama di ascii-clock untuk geek :-)
sumber
eval
denganprint
agar sebelum menjalankan diketahui download kode ;-)Tcl, 288
Ok, berikut penjelasannya:
while 1 {...}
- Ok, lupakan penjelasannya.regsub -all \ +|. "oaosocowoeouooovoioxozom r n\n" \ {&} p
menggantikan+|.
dengan_{\0}
dan menyimpan hasilnya dip
.p
sebenarnya adalah kamus yang berantakan di mana kunci pertama tidak ada (atau hanya daftar dengan jumlah elemen ganjil).lset p [set h [expr $h%12*2]] h
mengatur jam dalam daftar penggantianlset p [set m [expr $m/5*2]] [expr $h-$m?"m":"x"]
tentukan menit. jika jam dan menitnya sama, gunakanx
saja.string map /\ $p {rr/nrzmrann xrrr snnimrrrcnn vrrr wnnromrenrru}
/\ $p
sama dengan"/ $p"
, jadi saya menambahkan kunci pertama (/
). Setelah itu saya mengganti setiap kemunculan kuncirr/nrzmrann xrrr snnimrrrcnn vrrr wnnromrenrru
dengan nilainya.Peta yang biasa adalah
(Baca sebagai "Ganti
/
dengano
, gantia
dengano
... gantim
dengan___
(yang seharusnya spasi))Aku repace sebuah
o
denganh
dan lainnya denganm
,m
,r
dann
hanya untuk Shoren output string (saya diganti beberapa ruang dengan salah satu dari mereka, juga\n
dengann
). Saya menambahkan elemen pertama nanti sehingga saya bisa menggunakan h * 2 sebagai gantinya h * 2 + 1 untuk indeks yang saya ganti. (menghemat 2 karakter)Beberapa catatan:
{}
. Ok, ini sedikit lebih kompleks misalnya Anda bisa keluar dari spasi dengan\
, tetapi detail seperti itu didokumentasikan tempat lain .key1 value1 key2 value2
sumber
Javascript 2169 - 434 = 1735
Ok, ini banyak, tetapi mereka baik-baik saja dan berfungsi sama dengan varian saya sebelumnya di posting sebelumnya ( bash dan perl ).
Versi ini lebih dikaburkan daripada yang mungkin Anda temukan di ascii-clock saya untuk Geeks
sumber
Python, 259 - 52 = 207
Output sampel:
sumber
Ruby:
230228 karakter - 46 = 182(Catatan:
^[
adalah karakter tunggal.)Contoh dijalankan (pada 21:19:33):
“Seburuk yang Anda inginkan” versi:
191181 karakter - 36 = 145(Ukuran lebih kecil, presisi lebih rendah, tidak ada detik, jari-jari identik, kerlipan mengerikan.)
Contoh dijalankan (pada 21:19):
Versi tanpa trigonometri:
130125 karakter (tidak ada bonus)(Terinspirasi oleh Johannes Kuhn 's solusi Tcl . Tidak yakin berapa banyak, karena saya masih belum memecahkan kode-nya.)
Contoh dijalankan (pada 21:19):
sumber
tr': can't convert Fixnum into String (TypeError)”? Now that you mentioned the error I dug for a version 1.8.7 and received the above error of that. Works fine on 1.9.2 and 1.9.3. Seems that
M` ditafsirkan sebagai Fixnum di versi yang lebih lama dan hanya kemudian diubah menjadi String.HTML & JS:
397 - 20% = 317.6 characters
Iterasi pertama saya. Saya tidak terlalu senang dengan itu, tetapi itu berhasil dan itu menunjukkan waktu dengan sangat jelas.
sumber
Ti-Basic 84, 587 - 20% = 469.6
Outputnya sangat cantik dan detail.
sumber
C, 554 Bytes, Pembaruan kira-kira sekali per detik.
Hasil:
sumber