Apa yang perlu Anda lakukan untuk memenangkan tantangan ini adalah menulis skrip "timeago" terpendek yang menampilkan jumlah dekade, tahun, minggu, hari, jam, menit, dan detik antara cap waktu Unix yang diberikan dan waktu skrip dijalankan.
Anda harus memberikan perbedaan waktu dalam "istilah terendah", mis. 1 week
Tidak 7 days
, 9 years
tidak 0 decades 9 years
. Anda juga harus menggunakan bentuk jamak dengan benar, misalnya 1 day
tidak 1 days
.
Skrip Anda harus akurat dalam plus atau minus 1 detik (sehingga metode pembulatan kedua yang tepat tidak penting).
Time Equivalency Table
1 decade = 10 years
1 year = 31536000 seconds (not technically correct but close enough)
1 week = 7 days
1 day = 24 hours
1 hour = 60 minutes
1 minute = 60 seconds
Outputnya harus dalam bentuk
A decade(s) B year(s) C week(s) D day(s) E hour(s) F minute(s) G second(s)
di mana A...G
semua bilangan bulat non-negatif dan s
hanya ada untuk bentuk jamak.
Catatan
- Stempel waktu akan selalu berupa waktu dari masa lalu. Mungkin negatif.
- Input dan output mungkin masuk akal: stdin / stdout, input fungsi dan nilai pengembalian, dll.
- Anda tidak boleh menggunakan alat apa pun yang sudah melakukan ini. yaitu jika bahasa Anda memiliki
timesince(timestamp)
fungsi bawaan, Anda mungkin tidak menggunakan fungsi itu.
Saya telah sangat mengedit ini untuk membuatnya lebih jelas dengan harapan untuk meredakan pertempuran yang agak konyol antara pengguna baru dengan pertanyaan tidak jelas dan pengguna lama yang membutuhkan kesempurnaan. Itu bukan pertanyaan yang mengerikan (meskipun sekarang mungkin terlalu mirip dengan ini ).
Mengingat waktu yang cukup terlewati sejak jawaban terakhir, saya menyatakan Three If By Whiskey dengan 177 byte implementasi Ruby pemenang konteks ini!
Jawaban:
Ruby,
184177Tidak ada yang pintar di sini, tapi saya kira itu masih sangat dekat dengan optimal.
Contoh dijalankan
sumber
J, 165
Mungkin bisa bermain golf lebih banyak. Menggunakan panggilan shell to date untuk mendapatkan waktu unix zaman saat ini, karena zaman Unix tidak tersedia di J.
Contoh dijalankan:
sumber
Python - 183
Output untuk cap waktu 999996400 detik di masa lalu:
sumber
JavaScript, 392
Juga kode unminified untuk yang ingin tahu
Ini memperbarui setiap 30 detik dan menghitung tunggal dan jamak.
Untuk menjalankannya gunakan
t(unix_timestamp)
sumber
Javascript, 287
untuk menjalankan penggunaan
t(secondsInFuture)
;sumber
t(10)
saya hanya mendapatkan yang kosongalert
.t(new Date()/1000 + 10);
eval(i)
2 byte lebih pendek dariwindow[i]
.Javascript, 263
untuk menjalankan dari konsol Javascript, panggil
sumber