Tantangan
Tulis program yang menyambut pengguna tergantung pada jam berapa (GMT) itu.
Keluaran
String (dicetak atau dikembalikan) sesuai dengan aturan ini:
- Jika waktunya 06: 00-11:59 salam harus "Selamat pagi"
- Jika jam 12: 00-17:59 salam harus "Selamat siang"
- Jika waktunya 18: 00-19:59 salam harus "Selamat malam"
- Jika waktunya 20:00 - 05:59 salam harus "Zzz"
Klarifikasi
- Tidak ada input
- Waktu dan salam harus persis seperti yang ditunjukkan
- Zona waktu adalah +0 GMT
Contohnya
Time: 14:45 -> Good afternoon
Time: 05:59 -> Zzz
Time: 9:23 -> Good morning
Time: 18:00 -> Good evening
%GREETING_TIME
begitulah solusi skrip login Novell saya - variabelnya tidak memiliki "Zzz", itu hanya beralih dari "malam" ke "pagi" di tengah malam.Jawaban:
JavaScript (ES6), 87 byte
Seperti yang diperhatikan oleh TFeld , formula asli saya terlalu rumit. Kita bisa melakukan:
Cobalah online!
Atau uji versi ini yang menggunakan jam sebagai parameter.
JavaScript (ES6), 90 byte
Cobalah online!
Atau uji versi ini yang menggunakan jam sebagai parameter.
Rumus
Mengingat jam saat , kita menemukan indeks ucapan yang sesuai i dengan:h saya
Hal yang baik tentang rumus ini adalah tidak memerlukan tanda kurung apa pun yang pernah dikonversi ke JS:
Meja
sumber
Python 2 ,
120106102 byteCobalah online!
Diuji di sini: Coba online!
Mirip dengan jawaban Arnauld , tetapi sedikit berbeda:
Diselamatkan:
sumber
/3600%24%20/6
.R,
979593 BytesMenggunakan metode yang ditemukan di atas dalam R
Penjelasan:
Contoh
Perhatikan bagaimana baris kode ini, tanpa menambahkan 1, adalah 10 elemen pendek
Menambahkan 1 memastikan bahwa hasil yang diperoleh lebih besar dari 0
sumber
T-SQL, 153 byte
Coba biola SQL
Penjelasan:
sumber
Perl 5 , 77 byte
Cobalah online!
sumber
Excel, 97 byte
Mulailah dengan daftar kasus
Kemudian gunakan saja berbasis Rentang
Vlookup
(default jika Anda menghilangkan argumen ke-4) dengan Array nilai:Saya bereksperimen dengan menggunakan
MOD(HOUR(NOW())+18,24
untuk menggeser jam ke belakang dengan 6 dan mengurangi kasus dengan 1, tetapi itu menghasilkan 99 byte. :(sumber
05AB1E , 36 byte
Cobalah online!
sumber
Powershell,
8272 bytePort of TFeld menjawab
sumber
Common Lisp , 103 byte
Tidak disatukan
Lisp umum sebagian besar mengabaikan spasi putih selama itu dapat dengan jelas menentukan di mana setiap sub-ekspresi berakhir, begitu banyak golf di sini hanya menghilangkan spasi putih. Common Lisp juga menyediakan kemampuan bagi fungsi untuk mengembalikan beberapa nilai, dengan semua kecuali yang pertama dibuang jika pemanggil belum secara eksplisit meminta nilai pengembalian ke-2/3 / etc. Ini memungkinkan fungsi untuk mengembalikan data tambahan, seperti
floor
fungsi melakukan pembagian lantai, tetapi sebagai nilai balik sekunder mengembalikan sisanya. Ini juga memungkinkan fungsi untuk menghindari overhead karena harus mengemas nilai kembali mereka dalam struktur data jika pemanggil cenderung segera merusaknya lagi.(get-decoded-time)
(benar-benar sendiri singkatan untuk(decode-universal-time (get-universal-time))
) mengembalikan nilai terbanyak dari hampir semua fungsi standar di common lisp ... 9, tepatnya. Nilai pengembalian ke-3 ((nth-value 2 ...)
) adalah jam saat ini dalam waktu 24 jam. Maka itu hanya menghitung indeks yang tepat ke dalam daftar tanggapan dan meneruskannya kenth
. Saya harus menggunakan difloor
sini karena CL akan mengembalikan sebagian yang tepat jika saya digunakan/
untuk pembagian.Cobalah online!
sumber
Batch, 178 byte
Menggunakan rumus @ TFeld. Versi dependen-lokal hanya 128 byte:
sumber
C # (.NET Core) , 177 byte
Cobalah online!
sumber
Japt , 52 byte
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) , 91 byte
Cobalah online!
Gunakan Utc Now untuk mendapatkan waktu UTC.
Jika itu bisa menjadi fungsi dan bukan program lengkap:
C # (Visual C # Interactive Compiler) , 88 byte
Cobalah online!
Uji dengan semua jam (kode dicuri tanpa malu-malu dari Arnauld)
sumber
DateTime.UtcNow
untuk mendapatkan zona waktu yang benar.;
) yang tertinggal !05AB1E ,
4542 byte(h*7%20%7)//2
diangkut dari jawaban JavaScript (ES6) @ Arnauld .Cobalah online atau verifikasi semua jam .
Jawaban 45 byte asli:
Cobalah online atau verifikasi semua jam .
Penjelasan:
Lihat penjelasannya di sini untuk memahami mengapa
”‚¿”
"Baik";'•´
adalah "pagi";'¯â
adalah "sore"; dan'žÖ
"malam".sumber
Noether, 106 byte
Cobalah online!
Perintah
2D
mengembalikan bagian jam dari waktu saat ini dan sisanya adalah memuat pernyataan if.sumber
Haskell, 174 byte
sumber
C (gcc) , 127 byte
Satu-satunya trik yang benar-benar licik adalah memaksa jam ke dalam
unsigned int
sehingga saya bisa memaksa nilai malam ke> 14. Karenastruct tm
struktur hanya memiliki bilangan bulat, saya bisa berpura-pura bahwa itu adalah array yang dilewatkangmtime_r
.Cobalah online!
sumber
(char*[]){"morning","afternoon","evening"}
alih-alihs
J, 65 byte
Port lain dari jawaban TFeld.
3{6!:0''
mendapat jam, yang merupakan indeks 3 dari vektor waktu saat ini, dari builtin6!:0''
<.6%~20|
adalah lantai ((jam mod 20) dibagi 6){~
ke dalam array karakter 4x14 yang berisi salam.,
) stringGood
dengan kata-katamorning
,afternoon
danevening
yang split pada spasi dengan J "kata" tokenizer (;:
). Secara teknis ini untuk tokenizing kalimat J, tetapi karena J memiliki kata-kata kosong itu akhirnya terbelah di spasi putih.sumber