Contexte
MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie basé sur la publication-abonnement ( Wikipedia ) standard ISO .
Chaque message a un sujet, comme les exemples suivants:
myhome/groundfloor/livingroom/temperature
USA/California/San Francisco/Silicon Valley
5ff4a2ce-e485-40f4-826c-b1a5d81be9b6/status
Germany/Bavaria/car/2382340923453/latitude
Les clients MQTT peuvent s'abonner aux rubriques de message à l'aide de caractères génériques:
- Niveau unique:
+
- Tous les niveaux à partir de:
#
Par exemple, l'abonnement myhome/groundfloor/+/temperature
produirait ces résultats (non-conformités en gras ):
✅ myhome / rez-de-chaussée / salon / température
✅ myhome / rez-de-chaussée / cuisine / température
❌ myhome / rez-de-chaussée / salon / luminosité
❌ myhome / rez -de- chaussée / salon / température
❌ garage / rez-de-chaussée / réfrigérateur / température
Alors que l'abonnement +/groundfloor/#
produirait ces résultats:
✅ myhome / rez-de-chaussée / salon / température
✅ myhome / rez-de-chaussée / cuisine / luminosité
✅ garage / rez-de-chaussée / réfrigérateur / température / plus / spécifique / champs
❌ myhome / premier étage / salon / température
❌ myhome / sous - sol / coin / température
Plus d'infos ici .
La tâche
Implémentez une fonction / un programme acceptant deux chaînes et renvoyant un booléen. La première chaîne est le sujet sujet, la seconde est le sujet critère. La rubrique Critères utilise la syntaxe d'abonnement détaillée ci-dessus. La fonction est vraie lorsque le sujet correspond aux critères.
Règles pour cette tâche:
- Les sujets sont ASCII
- Il n'y a pas de champs de critères au-delà du
#
caractère générique - Les caractères génériques n'apparaissent pas dans les sujets
- Nombre de champs thématiques> = nombre de champs critères
- Il n'y a aucun champ de 0 caractère ni barre oblique avant ou arrière
Cas de test
critères1 = "ma maison / rez-de-chaussée / + / température"
critères2 = "+ / rez-de-chaussée / #"
("abc", "ab") => false
("abc", "abc") => true
("abc / de", "abc") => false
("myhome / rez-de-chaussée / salon / température", critère1 ) => true
("myhome / rez-de-chaussée / cuisine / température", critères1) => true
("myhome / rez-de-chaussée / salon / luminosité", critères1) => false
("myhome / rez-de-chaussée / salon / température", critères1) = > false
("garage / rez-de-chaussée / réfrigérateur / température",
critère1 ) => faux ("myhome / rez-de-chaussée / salon / température",
critère2 ) => true ("myhome / rez-de-chaussée / cuisine / luminosité", critère2) => true
("garage / rez-de-chaussée / réfrigérateur / température / plus / spécifique / champs ",
critère2 ) => vrai (" ma maison / rez-de-chaussée / salon / température ", critère2) => faux
("ma maison / sous-sol / coin / température", critère2) => faux
("musique / kei $ ha / dernier", "+ / kei $ ha / +") => vrai
a/b/c
ne correspondrait pas aux critèresa/b
, donc j'ai tendance à dire non .