tło
MQTT (Message Queuing Telemetry Transport) jest standardowym protokołem przesyłania wiadomości opartym na publikowaniu i subskrypcji ( Wikipedia ).
Każda wiadomość ma temat, na przykład następujące przykłady:
myhome/groundfloor/livingroom/temperature
USA/California/San Francisco/Silicon Valley
5ff4a2ce-e485-40f4-826c-b1a5d81be9b6/status
Germany/Bavaria/car/2382340923453/latitude
Klienci MQTT mogą subskrybować tematy wiadomości za pomocą symboli wieloznacznych:
- Pojedynczy poziom:
+
- Wszystkie poziomy dalej:
#
Na przykład subskrypcja myhome/groundfloor/+/temperature
przyniosłaby następujące wyniki (niezgodności pogrubione ):
✅ myhome / parter / salon / temperatura
✅ myhome / parter / kuchnia / temperatura
❌ myhome / parter / salon / jasność
❌ myhome / parter / salon / temperatura
❌ garaż / parter / lodówka / temperatura
Natomiast subskrypcja +/groundfloor/#
przyniosłaby następujące wyniki:
✅ mójhome / parter / salon / temperatura
✅ mójhome / parter / kuchnia / jasność
✅ garaż / parter / lodówka / temperatura / więcej / konkretne / pola
❌ mójhome / parter / salon / temperatura
❌ mójhome / piwnica / narożnik / temperatura
Więcej informacji tutaj .
Zadanie
Zaimplementuj funkcję / program akceptujący dwa ciągi znaków i zwracający wartość logiczną. Pierwszy ciąg to temat, drugi to temat. W temacie kryteriów używana jest składnia subskrypcji opisana powyżej. Funkcja jest prawdziwa, gdy badany spełnia kryteria.
Zasady tego zadania:
- Tematy są ASCII
- Nie ma pól kryteriów poza
#
symbolem wieloznacznym - Symbole wieloznaczne nie pojawiają się w tematach tematycznych
- Liczba pól tematycznych> = liczba pól kryteriów
- Nie ma pól 0-znakowych ani przednich lub ukośnych ukośników
Przypadki testowe
kryteria1 = „mójhome / parter / + / temperatura”
kryteria2 = „+ / parter / #”
(„abc”, „ab”) => false
(„abc”, „abc”) => true
(„abc / de”, „abc”) => false
(„mójhome / parter / salon / temperatura”, kryteria1 ) => true
(„mójhome / parter / kuchnia / temperatura”, kryteria 1) => true
(„mójhome / parter / salon / jasność”, kryteria 1) => false
(„mójhome / pierwsze piętro / salon / temperatura”, kryteria1) = > false
(„garaż / parter / lodówka / temperatura”, kryteria 1) => false
(„mójhome / parter / salon / temperatura”, kryteria2) => true
(„mójhome / parter / kuchnia / jasność”, kryteria2) => true
(„garaż / parter / lodówka / temperatura / więcej / specyficzne / pola ”, kryteria2) => prawda
(„ mójhome / pierwsze piętro / salon / temperatura ”, kryteria2) => fałsz
(„mójhome / piwnica / róg / temperatura”, kryteria2) => false
(„muzyka / kei $ ha / najnowsze”, „+ / kei $ ha / +”) => true
a/b/c
nie spełnia kryteriówa/b
, więc jestem skłonny powiedzieć Nie .