introduction
Vous êtes le responsable du département électronique dans un grand magasin de détail et le plus grand jour de vente de l'année est ce vendredi . Pour aider à gérer la foule, votre magasin met en place un système de ticket pour les plus grosses offres, où les clients doivent présenter un ticket avant d'acheter un article. Votre travail consiste à écrire un programme pour valider les billets.
Étant donné que le seul ordinateur disponible dans le magasin (en raison de réductions budgétaires) est un dinosaure avec un clavier cassé, (et tout ce que vous avez est des claviers USB, qui ne sont pas compatibles), vous devrez entrer votre programme avec une souris. Par conséquent, votre programme doit être aussi court que possible.
Des produits
Votre magasin exécute des ventes sur les cinq produits différents répertoriés ci-dessous. Chaque produit a un nom tout en minuscules et des règles différentes sur le nombre de produits pouvant être achetés et à quelle heure de la journée.
television
: Des5
téléviseurs à écran plat en stock peuvent être achetés de00:00:00
(minuit) à00:59:59
.smartphone
: Il y a des10
smartphones en stock, mais tout client en ligne à partir de00:00:00
(minuit)00:59:59
reçoit un bon pour un une fois épuisé.tablet
: Il existe des10
tablettes qui peuvent être achetées à tout moment.laptop
: Il existe un nombre illimité d'ordinateurs portables qui peuvent être achetés de00:00:00
(minuit) à07:59:59
.lightbulb
: Il existe un nombre illimité d'ampoules qui peuvent être achetées à tout moment.
Contribution
Une chaîne de plusieurs lignes avec chaque ligne au format suivant. Les lignes sont triées par horodatage.
<time stamp> <product name> <ticket number>
- Le numéro du ticket comporte 8 chiffres. Le dernier chiffre est un chiffre de contrôle égal à la somme des sept premiers chiffres modulo 10. Pour être valide, un numéro de ticket doit avoir le chiffre de contrôle correct et doit être strictement supérieur à tous les numéros de ticket précédents.
- Le nom du produit est l'une des chaînes répertoriées ci-dessus.
- L'horodatage est l'heure du jour dans le format
HH:MM:SS
oùHH
sont les heures à deux chiffres de 00 à 23,MM
etSS
sont respectivement les minutes et les secondes à deux chiffres.
Production
La sortie est l'une des chaînes suivantes, avec une ligne par ticket. Les conditions doivent être appliquées dans l'ordre .
Expired offer
(S'applique aux téléviseurs, smartphones et ordinateurs portables.) L'horodatage du ticket est après la date limite d'achat du produit.Invalid ticket
Soit le numéro du ticket est inférieur ou égal au numéro du ticket précédent, soit le chiffre de contrôle n'est pas valide.Give voucher
(S'applique aux smartphones.) Le produit est en rupture de stock, mais tous les clients en ligne avant l'expiration de l'offre reçoivent un chèque de pluie.Out of stock
(S'applique aux téléviseurs et tablettes.) Tout le produit a été vendu. Désolé, la quantité était limitée.Accepted
Toutes les conditions sont remplies, alors donnez-leur le produit. Notez que seuls les billets acceptés réduisent le nombre d'articles en stock.
Exemple
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
J'ai essayé de faire en sorte que l'exemple couvre tous les scénarios de sortie possibles, mais veuillez laisser un commentaire si quelque chose n'est pas clair.
Il s'agit de code-golf , vous pouvez écrire un programme ou une fonction, et les trous de boucle standard ne sont pas autorisés.