Introducción
Usted es el gerente del departamento de electrónica en una importante tienda minorista y el día de ventas más importante del año es este viernes . Para ayudar a administrar las multitudes, su tienda está implementando un sistema de boletos para las mayores ofertas, donde los clientes deben presentar un boleto antes de comprar un artículo. Su trabajo es escribir un programa para validar los boletos.
Dado que la única computadora disponible en la tienda (debido a recortes presupuestarios) es un dinosaurio con un teclado roto, (y todo lo que tiene son teclados USB, que no son compatibles) tendrá que ingresar su programa con un mouse. Por lo tanto, su programa debe ser lo más breve posible.
Productos
Su tienda está ejecutando ventas en los cinco productos diferentes enumerados a continuación. Cada producto tiene un nombre en minúsculas y reglas diferentes sobre cuántos se pueden comprar y a qué hora del día.
television
: Hay5
televisores de pantalla plana en stock que se pueden comprar desde00:00:00
(medianoche) hasta00:59:59
.smartphone
: Hay10
teléfonos inteligentes en stock, pero cualquier cliente en línea desde00:00:00
(medianoche) para00:59:59
recibir un cupón por uno una vez que se agota.tablet
: Hay10
tabletas que se pueden comprar en cualquier momento.laptop
: Hay un número ilimitado de computadoras portátiles que se pueden comprar desde00:00:00
(medianoche) hasta07:59:59
.lightbulb
: Hay un número ilimitado de bombillas que se pueden comprar en cualquier momento.
Entrada
Una cadena de varias líneas con cada línea en el siguiente formato. Las líneas se ordenan por la marca de tiempo.
<time stamp> <product name> <ticket number>
- El número de boleto tiene 8 dígitos. El último dígito es un dígito de verificación igual a la suma de los primeros siete dígitos del módulo 10. Para ser válido, un número de boleto debe tener el dígito de verificación correcto y debe ser estrictamente mayor que todos los números de boleto anteriores.
- El nombre del producto es una de las cadenas enumeradas anteriormente.
- La marca de tiempo es la hora del día en el formato
HH:MM:SS
dondeHH
está la hora de dos dígitos de 00-23,MM
ySS
son los minutos y segundos de dos dígitos respectivamente.
Salida
La salida es una de las siguientes cadenas, con una línea por boleto. Las condiciones deben aplicarse en orden .
Expired offer
(Se aplica a televisores, teléfonos inteligentes y computadoras portátiles). La marca de tiempo del boleto es posterior al corte para comprar el producto.Invalid ticket
O el número de boleto es menor o igual que el número del boleto anterior, o el dígito de verificación no es válido.Give voucher
(Se aplica a los teléfonos inteligentes). El producto está agotado, pero todos los clientes en línea antes de que expire la oferta reciben un cheque de lluvia.Out of stock
(Se aplica a televisores y tabletas). Se ha vendido todo el producto. Lo sentimos, la cantidad fue limitada.Accepted
Se cumplen todas las condiciones, así que entrégueles el producto. Tenga en cuenta que solo los boletos aceptados reducen la cantidad de artículos en stock.
Ejemplo
Input Output
---------------------------- --------------
00:00:00 television 00010001 Accepted
00:00:25 smartphone 00011697 Accepted
00:01:25 laptop 00030238 Accepted
00:02:11 smartphone 00037291 Accepted
00:02:37 lightbulb 00073469 Invalid ticket
00:03:54 smartphone 00096319 Accepted
00:05:26 tablet 00152514 Accepted
00:06:21 tablet 00169893 Accepted
00:07:10 television 00190268 Accepted
00:07:47 smartphone 00194486 Accepted
00:07:55 tablet 00220071 Accepted
00:08:20 lightbulb 00321332 Accepted
00:10:01 smartphone 00409867 Accepted
00:11:10 tablet 00394210 Invalid ticket
00:11:46 television 00581060 Accepted
00:12:44 lightbulb 00606327 Accepted
00:13:16 tablet 00709253 Accepted
00:13:53 television 00801874 Accepted
00:14:47 laptop 00832058 Accepted
00:15:34 smartphone 00963682 Accepted
00:16:24 smartphone 01050275 Accepted
00:17:45 tablet 01117167 Accepted
00:18:05 laptop 01107548 Invalid ticket
00:19:00 lightbulb 01107605 Invalid ticket
00:19:47 lightbulb 01492983 Accepted
00:19:50 smartphone 01561609 Accepted
00:21:09 television 01567098 Accepted
00:21:42 laptop 01597046 Accepted
00:22:17 smartphone 01666313 Accepted
00:24:12 tablet 01924859 Accepted
00:24:12 smartphone 02151571 Accepted
00:25:38 smartphone 02428286 Give voucher
00:31:58 television 02435284 Out of stock
00:35:25 television 02435295 Out of stock
00:52:43 laptop 02657911 Invalid ticket
00:53:55 smartphone 02695990 Give voucher
01:08:19 tablet 02767103 Accepted
01:34:03 television 02834850 Expired offer
01:56:46 laptop 02896263 Accepted
02:02:41 smartphone 03028788 Expired offer
02:30:59 television 03142550 Expired offer
02:51:23 tablet 03428805 Accepted
03:14:57 smartphone 03602315 Expired offer
03:27:12 television 03739585 Expired offer
03:56:52 smartphone 03997615 Expired offer
04:07:52 tablet 04149301 Accepted
04:12:05 lightbulb 04300460 Invalid ticket
04:24:21 laptop 04389172 Accepted
04:40:23 lightbulb 04814175 Accepted
04:40:55 tablet 04817853 Accepted
04:42:18 smartphone 04927332 Expired offer
05:06:43 tablet 05079393 Out of stock
05:16:48 tablet 05513150 Out of stock
05:33:02 television 05760312 Expired offer
05:43:32 tablet 06037905 Out of stock
06:12:48 smartphone 06440172 Expired offer
06:35:25 laptop 06507277 Accepted
06:42:29 lightbulb 06586255 Invalid ticket
06:55:31 lightbulb 06905583 Accepted
06:55:33 lightbulb 06905583 Invalid ticket
07:40:05 smartphone 07428006 Expired offer
07:49:12 television 07588086 Expired offer
08:14:56 laptop 08111865 Expired offer
Intenté hacer que el ejemplo abarque todos los escenarios de salida posibles, pero deje un comentario si algo no está claro.
Este es el código de golf , puede escribir un programa o función, y los agujeros de bucle estándar no están permitidos.