Вступ
Ви керуєте відділом електроніки у великому магазині роздрібної торгівлі, і найбільший день продажу в цьому році - це п’ятниця . Щоб допомогти управляти натовпам, ваш магазин впроваджує систему квитків на найбільші угоди, де клієнти повинні пред’явити квиток перед покупкою товару. Ваше завдання - написати програму для підтвердження квитків.
Оскільки єдиний доступний комп’ютер у магазині (через скорочення бюджету) - це динозавр зі зламаною клавіатурою, (і все, що у вас є, це клавіатури USB, які не сумісні), вам доведеться вводити програму мишкою. Тому ваша програма повинна бути якомога коротшою.
Продукція
У вашому магазині продаються п'ять різних продуктів, перелічених нижче. Кожен товар має загальну малу назву та різні правила щодо того, скільки можна придбати та в який час доби.
television: Є в наявності5телевізори з плоским екраном, які можна придбати з00:00:00(опівночі) до00:59:59.smartphone: На складі є10смартфони, однак будь-який клієнт, що перебуває з00:00:00(опівночі),00:59:59отримує ваучер на один раз, коли він закінчується.tablet: Є10планшети, які можна придбати в будь-який час.laptop: Існує необмежена кількість ноутбуків, які можна придбати з00:00:00(опівночі) до07:59:59.lightbulb: Є необмежена кількість лампочок, які можна придбати в будь-який час.
Вхідні дані
Багаторядковий рядок з кожним рядком у наступному форматі. Рядки сортуються за позначкою часу.
<time stamp> <product name> <ticket number>
- Номер квитка - 8 цифр. Остання цифра - це контрольна цифра, що дорівнює сумі перших семизначних модуля 10. Щоб бути дійсним, номер квитка повинен мати правильну контрольну цифру і повинен бути строго більшим за всі попередні номери квитків.
- Назва продукту - одна з перелічених вище рядків.
- Марка часу - це час доби у форматі,
HH:MM:SSдеHHє двоцифрова година з 00-23,MMіSSє двоцифровою хвилиною та секундою відповідно.
Вихідні дані
Вихід є одним з наступних рядків, з одним рядком на квиток. Умови повинні застосовуватися для того, щоб .
Expired offer(Застосовується до телевізорів, смартфонів та ноутбуків.) Позначення часу на квитку відбувається після закінчення купівлі товару.Invalid ticketАбо номер квитка менший або рівний номеру попереднього квитка, або контрольна цифра недійсна.Give voucher(Застосовується до смартфонів.) Товар відсутній на складі, але всі клієнти в черзі до закінчення терміну дії пропозиції отримують дощову перевірку.Out of stock(Застосовується до телевізорів та планшетів.) Весь товар проданий. Вибачте, кількість була обмежена.AcceptedВсі умови дотримані, тому дайте їм товар. Зауважте, що лише прийняті квитки зменшують кількість товарів на складі.
Приклад
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
Я намагався зробити приклад, який охоплює всі можливі сценарії виводу, але, будь-ласка, залиште коментар, якщо щось незрозуміле.
Це код-гольф , ви можете написати програму або функцію, а стандартні отвори в петлі заборонені.