Einführung
Sie sind der Leiter der Elektronikabteilung in einem großen Einzelhandelsgeschäft und der größte Verkaufstag des Jahres ist dieser Freitag . Um die Menschenmenge besser verwalten zu können, implementiert Ihr Geschäft ein Ticketsystem für die größten Angebote, bei dem Kunden vor dem Kauf eines Artikels ein Ticket vorlegen müssen. Ihre Aufgabe ist es, ein Programm zur Validierung der Tickets zu schreiben.
Da der einzige verfügbare Computer im Geschäft (aufgrund von Budgetkürzungen) ein Dinosaurier mit einer kaputten Tastatur ist (und Sie nur USB-Tastaturen haben, die nicht kompatibel sind), müssen Sie Ihr Programm mit einer Maus eingeben. Daher sollte Ihr Programm so kurz wie möglich sein.
Produkte
In Ihrem Geschäft werden die fünf unten aufgeführten Produkte verkauft. Jedes Produkt hat einen Namen in Kleinbuchstaben und unterschiedliche Regeln, wie viele zu welcher Tageszeit gekauft werden können.
television
: Es sind5
Flachbildfernseher auf Lager, die von00:00:00
(Mitternacht) bis (Mitternacht) gekauft werden können00:59:59
.smartphone
: Es sind10
Smartphones auf Lager, aber jeder Kunde, der ab00:00:00
(Mitternacht) in der Schlange steht ,00:59:59
erhält einen Gutschein für einen, sobald er aufgebraucht ist.tablet
: Es gibt10
Tablets, die jederzeit gekauft werden können.laptop
: Es gibt eine unbegrenzte Anzahl von Laptops, die von00:00:00
(Mitternacht) bis gekauft werden können07:59:59
.lightbulb
: Es gibt eine unbegrenzte Anzahl von Glühbirnen, die jederzeit gekauft werden können.
Eingang
Eine mehrzeilige Zeichenfolge mit jeder Zeile im folgenden Format. Zeilen werden nach dem Zeitstempel sortiert.
<time stamp> <product name> <ticket number>
- Die Ticketnummer ist 8-stellig. Die letzte Ziffer ist eine Prüfziffer, die der Summe der ersten sieben Ziffern Modulo 10 entspricht. Um gültig zu sein, muss eine Ticketnummer die richtige Prüfziffer haben und streng größer sein als alle vorherigen Ticketnummern.
- Der Produktname ist eine der oben aufgeführten Zeichenfolgen.
- Der Zeitstempel ist die Tageszeit in dem Format,
HH:MM:SS
in demHH
die zweistellige Stunde von 00 bis 23MM
undSS
die zweistellige Minute bzw. Sekunde angegeben sind.
Ausgabe
Die Ausgabe ist eine der folgenden Zeichenfolgen mit einer Zeile pro Ticket. Die Bedingungen müssen in der richtigen Reihenfolge angewendet werden .
Expired offer
(Gilt für Fernseher, Smartphones und Laptops.) Der Zeitstempel des Tickets ist nach dem Stichtag für den Kauf des Produkts.Invalid ticket
Entweder ist die Ticketnummer kleiner oder gleich der Nummer des vorherigen Tickets oder die Prüfziffer ist ungültig.Give voucher
(Gilt für Smartphones.) Das Produkt ist nicht vorrätig, aber alle Kunden, die vor Ablauf des Angebots in der Schlange stehen, erhalten einen Regenscheck.Out of stock
(Gilt für Fernseher und Tablets.) Das gesamte Produkt wurde verkauft. Entschuldigung, die Menge war begrenzt.Accepted
Alle Bedingungen sind erfüllt, geben Sie ihnen das Produkt. Beachten Sie, dass nur akzeptierte Tickets die Anzahl der Artikel auf Lager reduzieren.
Beispiel
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
Ich habe versucht, das Beispiel für jedes mögliche Ausgabeszenario zu erstellen, aber bitte hinterlassen Sie einen Kommentar, wenn etwas unklar ist.
Dies ist Code-Golf , Sie können ein Programm oder eine Funktion schreiben, und Standard-Lücken sind nicht zulässig.