Arka fon
MQTT (Message Queuing Telemetri Taşımacılığı), ISO standart yayımlama-abone olma tabanlı ileti protokolüdür ( Wikipedia ).
Her iletinin aşağıdaki örnekler gibi bir konusu vardır:
myhome/groundfloor/livingroom/temperature
USA/California/San Francisco/Silicon Valley
5ff4a2ce-e485-40f4-826c-b1a5d81be9b6/status
Germany/Bavaria/car/2382340923453/latitude
MQTT istemcileri joker karakterler kullanarak ileti konularına abone olabilir:
- Tek seviye:
+
- Tüm seviyeler:
#
Örneğin, abonelik myhome/groundfloor/+/temperature
şu sonuçları üretir (uyumsuzluklar kalın harflerle gösterilir ):
✅ myhome / groundfloor / oturma odası / sıcaklık
✅ myhome / groundfloor / mutfak / sıcaklık
❌ myhome / groundfloor / salon / parlaklık
❌ myhome / firstfloor / salon / sıcaklık
❌ garaj / groundfloor / buzdolabı / sıcaklık
Abonelik +/groundfloor/#
şu sonuçları verirken :
✅ myhome / groundfloor / livingroom / temperature
✅ myhome / groundfloor / kitchen / brightness
✅ garaj / groundfloor / buzdolabı / sıcaklık / daha fazla / spesifik / alanlar
❌ myhome / firstfloor / livingroom / temperature
❌ myhome / bodrum / köşe / sıcaklık
Daha fazla bilgi burada .
Görev
İki dizeyi kabul eden ve bir boole döndüren bir işlev / program uygulayın. İlk dize konu başlığı, ikincisi ölçüt konusudur. Ölçüt konusu, yukarıda ayrıntıları verilen abonelik sözdizimini kullanır. Konu ölçütlerle eşleştiğinde işlev doğrudur.
Bu görevin kuralları:
- Konular ASCII
#
Joker karakterin ötesinde herhangi bir ölçüt alanı yok- Joker karakterler konu başlıklarında görünmüyor
- Konu alanı sayısı> = ölçüt alanı sayısı
- 0 karakterli alan yok veya öne eğik çizgi yok
Test senaryoları
ölçüt1 = "evim / zemin kat / + / sıcaklık"
ölçüt2 = "+ / zemin kat / #"
("abc", "ab") => yanlış
("abc", "abc") => true
("abc / de", "abc") => yanlış
("myhome / groundfloor / livingroom / temperature", ölçüt1 ) => true
("myhome / groundfloor / kitchen / temperature",
ölçüt1
) => true
("myhome / groundfloor / livingroom / brightness", ölçüt1 ) => false ("myhome / firstfloor / livingroom / temperature", ölçüt1) = > false
("garaj / zemin katı / buzdolabı / sıcaklık", ölçüt1) => false
("myhome / groundfloor / livingroom / temperature", ölçüt2) => true
("myhome / groundfloor / kitchen / brightness", ölçüt2) => true
("garaj / zemin / buzdolabı / sıcaklık / daha fazla / spesifik / alanlar ",
ölçüt2 ) => true (" myhome / firstfloor / livingroom / temperature ", ölçüt2) => yanlış
("myhome / bodrum / köşe / sıcaklık", ölçüt2) => yanlış
("müzik / kei $ ha / son", "+ / kei $ ha / +") => doğru
a/b/c
ölçütlerle eşleşmiyora/b
, bu yüzden Hayır demeye meyilliyim .