Warnung: Nehmen Sie KEINE ärztlichen Ratschläge von diesem Beitrag. Wenn Sie ärztlichen Rat benötigen, wenden Sie sich an einen qualifizierten Fachmann.
Ich habe Kopfschmerzen. Ich brauche Kopfschmerztabletten.
Ich sage Ihnen die letzten Dosen, die ich hatte, und Sie sagen mir, wann ich meine nächste Dosis ohne Überdosierung einnehmen kann.
Ich gebe dir diese Zeichenfolge:
P: 00:00, I: 02:00, P: 04:00, I: 06:00
Und du gibst mir das:
Next P: 08:00, I: 10:00
Eingang:
Zeichenfolge, die angibt, wann jedes Medikament eingenommen wurde, im folgenden Format:
P: 00:00, I: 02:00, P: 04:00, I: 06:00
Dies bedeutet, dass Paracetamol um 00:00 und 04:00 Uhr und Ibuprofen um 02:00 und 06:00 Uhr eingenommen wurde
Ausgabe (aktualisiert):
Zeichenfolge mit der Zeit, zu der das nächste Medikament verabreicht wird, im folgenden Format:
Next P: 08:00, I: 10:00
- Die Ausgabereihenfolge sollte in der Reihenfolge liegen, in der das Medikament eingenommen werden soll. - Wenn Ibuprofen um 09:35 Uhr und Paracetamol um 10:22 Uhr eingenommen werden soll, sollte der Ausgang sein
Next I: 09:35, P: 10:22
- Wenn die Zeiten für die nächste Dosis der einzelnen Medikamente gleich sind, spielt die Ausgabereihenfolge keine Rolle:
Next P: 08:00, I: 08:00
ODERNext I: 08:00, P: 08:00
- Wenn nur ein Medikament eingenommen wird (in der Eingabezeichenfolge), sollte nur dieses Medikament in der Ausgabezeichenfolge enthalten sein:
Next P: 02:00
Regeln:
- Es wird immer nur zwei Arten von Medikamenten geben, Paracetamol "P" und Ibuprofen "I".
- Paracetamol kann einmal alle 4 Stunden, maximal viermal innerhalb von 24 Stunden, eingenommen werden.
- Ibuprofen kann auch einmal alle 4 Stunden, maximal viermal innerhalb von 24 Stunden, eingenommen werden.
- Paracetamol und Ibuprofen können zusammen oder zu unterschiedlichen Zeiten eingenommen werden. Einer zählt nicht zur Dosierung des anderen.
- Die Zeiten in der Eingabezeichenfolge sind immer aufeinanderfolgend, können jedoch über Mitternacht (23:00 -> 03:00) liegen.
- Die Zeiten in der Eingabezeichenfolge werden nicht mehr als 24 Stunden umfassen
- Maximal 4-mal für jedes Medikament (maximal 8 insgesamt)
- Die Eingabe ist immer nicht leer und enthält mindestens ein Medikament und ein Mal
Beispiele:
Jeweils zwei Dosen im Abstand von zwei Stunden:
"P: 00:00, I: 02:00, P: 04:00, I: 06:00" -> "Next P: 08:00, I: 10:00"
Einzeldosis Paracetamol
"P: 22:00" -> "Next P: 02:00"
Maximale Paracetamol-Dosis innerhalb von 24 Stunden, einmalige Ibuprofen-Dosis
"P: 04:05, P: 08:10, P: 12:15, I: 12:30, P: 16:25" -> "Next I: 16:30, P: 04:05"
Testfälle:
"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"
Dies ist Codegolf, also gewinnt die kürzeste Antwort in Bytes.
AKTUALISIEREN:
Die Ausgabe kann jetzt Abkürzungen von Paracetamol und Ibuprofen sein; P
undI
Antworten:
JavaScript (ES6),
367362354358 ByteGolf Version:
Ungolfed / kommentiert:
Um es zu benutzen, rufe F mit dem String als Argument wie folgt auf:
quelle
F("P: 22:00")
->ReferenceError: q is not defined
. Diese Eingabe wird ausgeführt, wenn auf P & I zuvor verwiesen wurde, aber mit alten Details für I.Python 3 - 437 Bytes
Erläuterung:
quelle
PHP,
228241239227226 Bytesbenötigt PHP 7
Nervenzusammenbruch
quelle
JavaScript (ES6), 246 Byte
Erläuterung:
Looping über jede Dosis, die
I
undP
sind Dosen in zwei Arrays getrennt. Zu jeder Dosis kommen 4 Stunden hinzu, und diese Zeiten werden ebenfalls gespeichert. Die Arrays sind in umgekehrter Reihenfolge angeordnet, um die Erkennung von 8 Einträgen zu vereinfachen. Die Zeit 4 Stunden nach der ersten Dosis wird ebenfalls zur Verwendung beim Sortieren gespeichert. Zu diesem Zeitpunkt kann sich jedes Array in einem von drei Zuständen befinden:[]
, was abgeflacht und daher vom Ergebnis ausgeschlossen wirdNachdem die nächsten Dosiszeiten aus den beiden Arrays extrahiert wurden, müssen sie in der Reihenfolge sortiert werden. Dies erfolgt durch Vergleich mit der Zeit 4 Stunden nach der ersten Dosis. Wenn eine der beiden Zeiten vor dieser Zeit liegt, muss sich dies auf morgen beziehen, und diese Dosis wird zuletzt angewendet. Ansonsten werden die Zeiten einfach direkt verglichen. (Eher unpraktisch, das Medikament ist vor der Zeit, also muss ich es ausziehen, um es richtig zu vergleichen.)
quelle