Wprowadzenie
Jesteś kierownikiem działu elektroniki w dużym sklepie detalicznym, a największy dzień sprzedaży w tym roku to piątek . Aby pomóc w zarządzaniu tłumami, Twój sklep wdraża system biletów na największe okazje, w których klienci muszą przedstawić bilet przed zakupem produktu. Twoim zadaniem jest napisanie programu do sprawdzania poprawności biletów.
Ponieważ jedynym dostępnym komputerem w sklepie (z powodu cięć budżetowych) jest dinozaur ze złamaną klawiaturą (a wszystko, co masz, to klawiatury USB, które nie są kompatybilne), będziesz musiał wprowadzić swój program za pomocą myszy. Dlatego twój program powinien być jak najkrótszy.
Produkty
Twój sklep prowadzi sprzedaż pięciu różnych produktów wymienionych poniżej. Każdy produkt ma małą literę i inne zasady określające, ile można kupić i o której porze dnia.
television
: Dostępne są5
telewizory z płaskim ekranem, które można kupić od00:00:00
(do północy) do00:59:59
.smartphone
: W10
magazynie są smartfony, ale każdy klient w kolejce od00:00:00
(do północy)00:59:59
otrzymuje kupon na jeden, gdy skończy się.tablet
: Istnieją10
tablety, które można kupić w dowolnym momencie.laptop
: Istnieje nieograniczona liczba laptopów, które można kupić od00:00:00
(do północy) do07:59:59
.lightbulb
: Istnieje nieograniczona liczba żarówek, które można kupić w dowolnym momencie.
Wejście
Ciąg wieloliniowy z każdą linią w następującym formacie. Linie są sortowane według znacznika czasu.
<time stamp> <product name> <ticket number>
- Numer biletu składa się z 8 cyfr. Ostatnia cyfra jest cyfrą kontrolną równą sumie pierwszych siedmiu cyfr modulo 10. Aby był ważny, numer biletu musi mieć poprawną cyfrę kontrolną i musi być ściśle większy niż wszystkie poprzednie numery biletów.
- Nazwa produktu jest jednym z ciągów wymienionych powyżej.
- Znacznik czasu jest pora dnia, w formacie
HH:MM:SS
, gdzieHH
jest dwucyfrowa godzina od 00-23, aMM
iSS
są minut dwucyfrowa a drugi odpowiednio.
Wynik
Dane wyjściowe to jeden z następujących ciągów, z jednym wierszem na bilet. Warunki muszą być stosowane w kolejności .
Expired offer
(Dotyczy telewizorów, smartfonów i laptopów.) Znacznik czasu na bilecie jest po godzinie granicznej na zakup produktu.Invalid ticket
Numer biletu jest mniejszy lub równy numerowi poprzedniego biletu lub cyfra kontrolna jest nieprawidłowa.Give voucher
(Dotyczy smartfonów.) Produkt nie jest dostępny w magazynie, ale wszyscy klienci w kolejce przed wygaśnięciem oferty dostają kontrolę deszczu.Out of stock
(Dotyczy telewizorów i tabletów.) Cały produkt został sprzedany. Przepraszamy, ilość była ograniczona.Accepted
Wszystkie warunki są spełnione, więc daj im produkt. Pamiętaj, że tylko zaakceptowane bilety zmniejszają liczbę produktów w magazynie.
Przykład
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
Starałem się, aby przykład obejmował każdy możliwy scenariusz wyjściowy, ale proszę zostawić komentarz, jeśli coś jest niejasne.
To jest golf golfowy , możesz napisać program lub funkcję, a standardowe pętle są niedozwolone.