Sejak saya melihat yang pertama beberapa tahun yang lalu, saya selalu ditaklukkan oleh semacam jam kata di mana waktu sebenarnya dieja dengan kata-kata yang menyala atau tidak menjadi kalimat yang bermakna.
Teks yang ditampilkan pada jam itu adalah sebagai berikut.
IT IS HALF TEN
QUARTER TWENTY
FIVE MINUTES TO
PAST TWO THREE
ONE FOUR FIVE
SIX SEVEN EIGHT
NINE TEN ELEVEN
TWELVE O'CLOCK
Tugas Anda adalah menulis jam kerja seperti itu. Kata-kata menyala jika dan hanya jika mereka relevan untuk mencetak waktu saat ini. Kalau tidak, mereka menyala. Kata-kata "menyala" dengan dicetak dan "menyala" dengan digantikan oleh sejumlah spasi sebagai panjang kata.
Contoh: jika waktu saat ini adalah 17:23, teks yang dicetak harus persis sebagai berikut:
IT IS
TWENTY
FIVE MINUTES
PAST
FIVE
Aturan
- Waktu yang dicetak adalah varian ke-12, tetapi tanpa AM / PM.
- Pembulatan dilakukan atas dasar menit saja (detik sama sekali tidak relevan). Pembulatan dilakukan ke kelipatan terdekat dari 5. Jadi, misalnya, meskipun 17:52:38 benar-benar paling dekat dengan 17:55, tetapi karena detik tidak relevan, 17:52 sebenarnya dibulatkan ke 17:50, dan teks yang dicetak adalah "SEPULUH MENIT KE ENAM" (dengan spasi yang relevan). Jadi jika
XX
kelipatan lima,XX
akan digunakan dari HH: (XX-2): 00 hingga HH: (XX + 2): 59. Kata tersebutMINUTES
harus muncul jikaFIVE
,TEN
atauTWENTY
menyala di bagian menit (sebelum "TO" atau "MASA LALU"). - Semua kata-kata yang tidak relevan digantikan oleh spasi sebanyak yang diperlukan untuk menyimpan teks di mana ia berada dalam templat di atas. Ruang tambahan dapat dipangkas. Spasi yang relevan untuk menjaga teks pada posisi yang diharapkan harus dijaga.
Garis trailing juga dapat dipangkas. Baris kosong yang relevan masih diperlukan untuk muncul. Contoh:
IT IS TEN MINUTES PAST TWO
Jangan menyalakan
TEN
baris pertama atauFIVE
baris ketiga saat nilai-nilai ini merujuk pada jam.- Anda dapat menerima input. Jika Anda menerima input, input tersebut akan menjadi waktu untuk mencetak dalam format valid apa pun yang Anda inginkan (string, daftar integer, waktu asli ketik dukungan bahasa Anda, ...), tetapi tidak ada parameter yang dibolehkan jika tidak terkait ke waktu untuk mencetak. Jika Anda tidak mendukung input, maka Anda harus menggunakan waktu saat ini. Jika Anda mendukung keduanya, itu lebih baik tetapi tidak ada bonus;)
- Kode Anda bisa berupa program, fungsi, lambda tetapi bukan cuplikan.
- Jika bahasa Anda mendukung pencetakan dengan cara apa pun, itu harus mencetak hasilnya (dalam file, pada output standar, saya tidak keberatan). Jika bahasa Anda tidak mendukung pencetakan dengan cara apa pun, itu diperbolehkan untuk hanya "mengembalikan" teks yang diharapkan. Hasilnya mungkin semua huruf besar atau semua huruf kecil, bukan campuran keduanya.
- Celah standar berlaku.
- Ini adalah kode-golf sehingga kode terpendek menang!
- Jika memungkinkan, berikan tautan ke juru bahasa online Anda.
Uji kasus
Input: <no input> (the current local time is 19:20)
Output:
IT IS
TWENTY
MINUTES
PAST
SEVEN
Input: 13:15
Output: (empty line is being printed)
IT IS
QUARTER
PAST
ONE
Input: 13:58
Output: (rounding)
IT IS
TWO
O'CLOCK
Input: 14:30
Output: (half is always a edge-case)
IT IS HALF
PAST TWO
Input: 15:35
Output: (light up "TO")
IT IS
TWENTY
FIVE MINUTES TO
FOUR
Input: 10:00
Output: (do not use the TEN or FIVE on the first line when referring to the hours)
IT IS
TEN
O'CLOCK
Input: 12:00
Output: (O'CLOCK and a lot of empty lines)
IT IS
TWELVE O'CLOCK