Advertencia: NO tome el consejo médico de esta publicación. Si desea asesoramiento médico, acuda a un profesional calificado.
Me duele la cabeza. Necesito pastillas para el dolor de cabeza.
Le diré las últimas dosis que he tomado, y usted me dice cuándo puedo tomar mi próxima dosis, sin sobredosis.
Te daré esta cadena:
P: 00:00, I: 02:00, P: 04:00, I: 06:00
Y me darás esto:
Next P: 08:00, I: 10:00
Entrada:
Cadena que representa las veces que se ha tomado cada medicamento, en el siguiente formato:
P: 00:00, I: 02:00, P: 04:00, I: 06:00
Esto significa que el paracetamol se tomó a las 00:00 y las 04:00, y el ibuprofeno se tomó a las 02:00 y las 06:00
Salida (actualizada):
Encadena con el tiempo que se puede tomar la siguiente dosis de cada medicamento, en el siguiente formato:
Next P: 08:00, I: 10:00
- El orden de salida debe estar en el orden en que se tomará el medicamento. - Si se toma ibuprofeno a las 09:35 y paracetamol y a las 10:22, la salida debe ser
Next I: 09:35, P: 10:22
- Si los tiempos para la siguiente dosis de cada medicamento son los mismos, el orden de salida no importa:
Next P: 08:00, I: 08:00
ONext I: 08:00, P: 08:00
- Si solo se toma un medicamento (en la cadena de entrada), solo ese medicamento debe estar en la cadena de salida:
Next P: 02:00
Reglas:
- Solo habrá dos tipos de medicamentos, paracetamol 'P' e ibuprofeno 'I'.
- El paracetamol se puede tomar una vez cada 4 horas, un máximo de 4 veces en un período de 24 horas.
- El ibuprofeno también se puede tomar una vez cada 4 horas, un máximo de 4 veces en un período de 24 horas.
- El paracetamol y el ibuprofeno se pueden tomar juntos o en momentos separados. Uno no cuenta para la dosificación del otro.
- Los tiempos en la cadena de entrada siempre serán consecutivos, pero pueden pasar la medianoche (23:00 -> 03:00)
- Los tiempos en la cadena de entrada no abarcarán más de 24 horas.
- Máximo de 4 veces por cada medicamento (8 máx en total)
- La entrada siempre estará vacía y contendrá al menos un medicamento y una vez
Ejemplos:
Dos dosis de cada uno a intervalos de dos horas:
"P: 00:00, I: 02:00, P: 04:00, I: 06:00" -> "Next P: 08:00, I: 10:00"
Dosis única de paracetamol
"P: 22:00" -> "Next P: 02:00"
Dosis máxima de paracetamol en 24 horas, dosis única de ibuprofeno
"P: 04:05, P: 08:10, P: 12:15, I: 12:30, P: 16:25" -> "Next I: 16:30, P: 04:05"
Casos de prueba:
"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"
Este es el código de golf, por lo que gana la respuesta más corta int bytes.
ACTUALIZAR:
La salida ahora puede ser abreviaturas de paracetamol e ibuprofeno; P
yI
Respuestas:
JavaScript (ES6),
367362354358 bytesVersión de golf:
Ungolfed / comentó:
Para usarlo, llame a F con la cadena como argumento así:
fuente
F("P: 22:00")
->ReferenceError: q is not defined
. Esta entrada se ejecutará si se ha hecho referencia a P&I anteriormente, pero con detalles antiguos de I.Python 3 - 437 bytes
Explicación:
fuente
PHP,
228241239227226 bytesrequiere PHP 7
Descompostura
fuente
JavaScript (ES6), 246 bytes
Explicación:
Al recorrer cada dosis, las dosis
I
yP
se separan en dos conjuntos. También se agregan 4 horas a cada dosis, y esos tiempos también se guardan. Las matrices se completan a la inversa para facilitar la detección de 8 entradas. El tiempo 4 horas después de la primera dosis también se guarda para su uso durante la clasificación. En este punto, cada matriz puede estar en uno de tres estados:[]
, que se aplana y, por lo tanto, se excluye del resultadoHabiendo extraído los siguientes tiempos de dosis de las dos matrices, queda ordenarlos en orden. Esto se hace comparándolos con el tiempo 4 horas después de la primera dosis. Si una de las dos veces es antes de esta hora, esto debe referirse a mañana, y esa dosis es la última. De lo contrario, los tiempos simplemente se comparan directamente. (De manera bastante inconveniente, el medicamento es antes de tiempo, así que tengo que quitarlo para compararlo adecuadamente).
fuente