Peringatan: JANGAN menerima saran medis dari pos ini. Jika Anda menginginkan saran medis, pergi ke profesional yang berkualitas.
Aku sedang sakit kepala. Saya perlu pil sakit kepala.
Saya akan memberi tahu Anda beberapa dosis terakhir yang saya miliki, dan Anda memberi tahu saya kapan saya bisa mendapatkan dosis berikutnya, tanpa overdosis.
Saya akan memberi Anda string ini:
P: 00:00, I: 02:00, P: 04:00, I: 06:00
Dan Anda akan memberi saya ini:
Next P: 08:00, I: 10:00
Memasukkan:
String yang mewakili waktu setiap obat telah diminum, dalam format berikut:
P: 00:00, I: 02:00, P: 04:00, I: 06:00
Ini berarti Paracetamol diambil pada pukul 00:00 dan 04:00, dan Ibuprofen diambil pada pukul 02:00 dan 06:00
Output (diperbarui):
Tali dengan waktu obat berikutnya masing-masing dapat diambil, dalam format berikut:
Next P: 08:00, I: 10:00
- Urutan output harus dalam urutan obat yang harus diambil. - Jika Ibuprofen akan diambil pada 09:35 dan Paracetamol dan 10:22, maka hasilnya akan menjadi
Next I: 09:35, P: 10:22
- Jika waktu untuk dosis berikutnya masing-masing obat adalah sama, urutan hasilnya tidak masalah:
Next P: 08:00, I: 08:00
ATAUNext I: 08:00, P: 08:00
- Jika hanya satu obat yang diminum (dalam string input), maka hanya obat yang harus dalam string output:
Next P: 02:00
Aturan:
- Hanya akan ada dua jenis obat, Paracetamol 'P' dan Ibuprofen 'I'.
- Parasetamol dapat dikonsumsi setiap 4 jam sekali, maksimal 4 kali dalam periode 24 jam.
- Ibuprofen juga dapat dikonsumsi setiap 4 jam, maksimal 4 kali dalam periode 24 jam.
- Paracetamol dan Ibuprofen dapat dikonsumsi bersamaan, atau pada waktu yang berbeda. Satu tidak diperhitungkan terhadap dosis yang lain.
- Waktu dalam string input akan selalu berurutan, tetapi dapat bergulir di tengah malam (23:00 -> 03:00)
- Waktu dalam string input tidak akan menjangkau lebih dari 24 jam
- Maksimal 4 kali untuk setiap obat (total 8 maks)
- Masukan akan selalu kosong dan mengandung setidaknya satu obat dan satu kali
Contoh:
Dua dosis masing-masing pada interval dua jam:
"P: 00:00, I: 02:00, P: 04:00, I: 06:00" -> "Next P: 08:00, I: 10:00"
Parasetamol dosis tunggal
"P: 22:00" -> "Next P: 02:00"
Dosis parasetamol maksimum dalam 24 jam, dosis Ibuprofen tunggal
"P: 04:05, P: 08:10, P: 12:15, I: 12:30, P: 16:25" -> "Next I: 16:30, P: 04:05"
Kasus uji:
"I: 06:00" -> "Next I: 10:00"
"P: 22:00" -> "Next P: 02:00"
"P: 22:00, P: 02:00, I: 06:00" -> "Next P: 06:00, I: 10:00"
"P: 00:00, I: 02:00, P: 04:00, I: 06:00" -> "Next P: 08:00, I: 10:00"
"P: 04:05, P: 08:10, P: 12:15, I: 12:30, P: 16:25" -> "Next I: 16:30, P: 04:05"
"I: 06:32, P: 08:15, I: 10:44, P: 13:03" -> "Next I: 14:44, P: 17:03"
"P: 07:30, I: 07:30, P: 11:30, I: 11:30, P: 15:30, I: 15:30, I: 19:30" -> "Next P: 19:30, I: 07:30"
"I: 07:30, P: 11:30, I: 11:30, P: 15:30, I: 15:30, P: 19:30, I: 19:30" -> "Next P: 23:30, I: 07:30"
"P: 07:30, I: 07:30, P: 11:30, I: 11:30, P: 15:30, I: 15:30, P: 19:30, I: 19:30" -> "Next P: 07:30, I: 07:30" OR "Next I: 07:30, P: 07:30"
Ini adalah kode golf, jadi jawaban terpendek int byte menang.
MEMPERBARUI:
Hasilnya sekarang bisa singkatan dari Paracetamol dan Ibuprofen; P
danI
Jawaban:
JavaScript (ES6),
367362354358 byteVersi golf:
Tidak dikelompokkan / dikomentari:
Untuk menggunakannya, panggil F dengan string sebagai argumen seperti:
sumber
F("P: 22:00")
->ReferenceError: q is not defined
. Input ini akan berjalan jika P&I telah direferensikan sebelumnya, tetapi dengan detail lama untuk saya.Python 3 - 437 byte
Penjelasan:
sumber
PHP,
228241239227226 bytemembutuhkan PHP 7
kerusakan
sumber
JavaScript (ES6), 246 byte
Penjelasan:
Melilit setiap dosis,
I
danP
dosis dipisahkan menjadi dua array. 4 jam juga ditambahkan ke setiap dosis, dan waktu itu juga disimpan. Array diisi secara terbalik untuk mendeteksi 8 entri lebih mudah. Waktu 4 jam setelah dosis pertama juga disimpan untuk digunakan selama penyortiran. Pada titik ini setiap larik dapat berada dalam satu dari tiga status:[]
, yang akan diratakan dan karenanya dikeluarkan dari hasilnyaSetelah diekstraksi kali dosis berikutnya dari dua array, itu tetap memilah mereka ke dalam urutan. Ini dilakukan dengan membandingkannya dengan waktu 4 jam setelah dosis pertama. Jika salah satu dari dua kali sebelum waktu ini, ini harus merujuk besok, dan dosis itu datang terakhir. Kalau tidak, waktunya hanya dibandingkan secara langsung. (Agak merepotkan, obatnya sebelum waktunya, jadi aku harus mengupasnya untuk membandingkan dengan benar.)
sumber