sfondo
MQTT (trasporto di telemetria di accodamento messaggi) è un protocollo di messaggistica basato su pubblicazione e sottoscrizione ( Wikipedia ) standard ISO .
Ogni messaggio ha un argomento, ad esempio i seguenti esempi:
myhome/groundfloor/livingroom/temperatureUSA/California/San Francisco/Silicon Valley5ff4a2ce-e485-40f4-826c-b1a5d81be9b6/statusGermany/Bavaria/car/2382340923453/latitude
I client MQTT possono iscriversi agli argomenti dei messaggi utilizzando i caratteri jolly:
- Livello singolo:
+ - Tutti i livelli in poi:
#
Ad esempio, l'abbonamento myhome/groundfloor/+/temperatureprodurrebbe questi risultati (non conformità in grassetto ):
✅ myhome / piano terra / soggiorno / temperatura
✅ myhome / piano terra / cucina / temperatura
❌ myhome / piano terra / soggiorno / luminosità
❌ myhome / primo piano / soggiorno / temperatura
❌ garage / piano terra / frigorifero / temperatura
Considerando che l'abbonamento +/groundfloor/#produrrebbe questi risultati:
✅ myhome / piano terra / soggiorno / temperatura
✅ myhome / piano terra / cucina / luminosità
✅ garage / piano terra / frigorifero / temperatura / altro / specifico / campi
❌ myhome / firstfloor / soggiorno / temperatura
❌ casa / seminterrato / angolo / temperatura
Maggiori informazioni qui .
L'obiettivo
Implementare una funzione / programma che accetta due stringhe e restituisce un valore booleano. La prima stringa è l'argomento soggetto, la seconda è l'argomento criteri. L'argomento dei criteri utilizza la sintassi dell'abbonamento descritta sopra. La funzione è vera quando il soggetto soddisfa i criteri.
Regole per questa attività:
- Gli argomenti sono ASCII
- Non ci sono campi criteri oltre il
#carattere jolly - I caratteri jolly non vengono visualizzati negli argomenti
- Numero di campi tematici> = numero di campi criteri
- Non ci sono campi a 0 caratteri né barre in avanti o in coda
Casi test
criteri1 = "myhome / groundfloor / + / temperature"
criterio2 = "+ / groundfloor / #"
("abc", "ab") => false
("abc", "abc") => true
("abc / de", "abc") => false
("myhome / groundfloor / livingroom / temperature", criterio1 ) => true
("myhome / groundfloor / kitchen / temperature", criterio1) => true
("myhome / groundfloor / livingroom / luminosità", criterio1) => false
("myhome / firstfloor / livingroom / temperature", criterio1) = > false
("garage / piano terra / frigorifero / temperatura", criteri1) => false
("casa / piano terra / soggiorno / temperatura", criteri2) => vero
("casa / piano terra / cucina / luminosità", criteri2) => vero
("garage / piano terra / frigorifero / temperatura / altro / specifici / campi ", criterio2) => vero
(" casa / primo piano / soggiorno / temperatura ", criterio2) => falso
("myhome / seminterrato / angolo / temperatura", criterio2) => false
("music / kei $ ha / latest", "+ / kei $ ha / +") => true
a/b/cnon corrisponderebbe ai criteria/b, quindi sono propenso a dire di no .