Фон
MQTT (Телевізійний транспорт у черзі повідомлень) - стандарт ISO-протоколу обміну повідомленнями на основі публікації та підписки ( Вікіпедія ).
Кожне повідомлення має тему, наприклад такі приклади:
myhome/groundfloor/livingroom/temperatureUSA/California/San Francisco/Silicon Valley5ff4a2ce-e485-40f4-826c-b1a5d81be9b6/statusGermany/Bavaria/car/2382340923453/latitude
Клієнти MQTT можуть підписатися на теми повідомлень за допомогою підстановок:
- Одиничний рівень:
+ - Всі рівні вперед:
#
Наприклад, підписка myhome/groundfloor/+/temperatureпризведе до цих результатів (невідповідності жирним шрифтом ):
✅ MyHome / цокольний / вітальня / температура
✅ MyHome / цокольний / кухня / температура
❌ MyHome / цокольний / вітальня / яскравість
❌ MyHome / firstfloor / вітальня / температура
❌ гараж / цокольний / холодильник / температура
Тоді як підписка +/groundfloor/#призведе до таких результатів:
✅ MyHome / цокольний / вітальня / температура
✅ MyHome / цокольний / кухня / яскравість
✅ гараж / цокольний / холодильник / температури / більш / конкретних / полів
❌ MyHome / firstfloor / вітальня / температура
❌ MyHome / підвал / кут / температура
Більше інформації тут .
Завдання
Реалізуйте функцію / програму, яка приймає два рядки та повертає булеву форму. Перший рядок є темою теми, другий - темою критеріїв. У темі критеріїв використовується синтаксис підписки, детально описаний вище. Функція є правдоподібною, коли предмет відповідає критеріям.
Правила цього завдання:
- Теми - ASCII
- За межами
#підстановки не існує полів критеріїв - Замісні знаки не відображаються в темах
- Кількість предметних полів> = кількість полів критеріїв
- Немає полів з 0 символів, а також провідної чи хвостової косої лінії вперед
Тестові справи
Критерії1 = "мій будинок / перший поверх / + / температура"
критерії2 = "+ / перший поверх / #"
("abc", "ab") => false
("abc", "abc") => true
("abc / de", "abc") => false
("мій будинок / перший поверх / вітальня / температура", критерії1 ) => true
("мій будинок / перший поверх / кухня / температура", критерії1) => true
("мій будинок / перший поверх / вітальня / яскравість", критерії1) => false
("мій будинок / перший поверх / вітальня / температура", критерії1) = > false
("гараж /
цокольний поверх / холодильник / температура", критерії1) => false ("мій будинок / цокольний поверх / вітальня / температура", критерії2) => вірно
("мій будинок / цокольний поверх / кухня / яскравість", критерії2) => вірно
("гараж / перший поверх / холодильник / температура / більше / конкретний / поля ", критерії2) => вірно
(" мій будинок / перший поверх / вітальня / температура ", критерії2) => помилково
("мій будинок / підвал / кут / температура", критерії2) => false
("музика / kei $ ha / остання", "+ / kei $ ha / +") => вірно
a/b/cне відповідає критеріямa/b, тому я схильний сказати « Ні» .