배경
MQTT (Message Queuing Telemetry Transport)는 ISO 표준 발행-구독 기반 메시징 프로토콜 ( Wikipedia )입니다.
각 메시지에는 다음 예와 같은 주제가 있습니다.
myhome/groundfloor/livingroom/temperature
USA/California/San Francisco/Silicon Valley
5ff4a2ce-e485-40f4-826c-b1a5d81be9b6/status
Germany/Bavaria/car/2382340923453/latitude
MQTT 클라이언트는 와일드 카드를 사용하여 메시지 주제를 구독 할 수 있습니다.
- 단일 레벨 :
+
- 모든 레벨 이후 :
#
예를 들어, 서브 스크립 션 myhome/groundfloor/+/temperature
은 다음과 같은 결과를 생성합니다 (굵지 않은 굵은 체 ).
✅ myhome / groundfloor / 거실 / 온도
✅ myhome / groundfloor / 주방 / 온도
❌ myhome / groundfloor / 거실 / 명도
❌ myhome / firstfloor / 거실 / 온도
❌ 차고 / groundfloor / 냉장고 / 온도
구독 +/groundfloor/#
은 다음과 같은 결과를 생성합니다.
✅ 인 MyHome / groundfloor에 / 거실 / 온도
✅ 인 MyHome / groundfloor에 / 부엌 / 밝기
✅ 주차장 / groundfloor에 / 냉장고 / 온도 / 이상 / 별 / 필드
❌ 인 MyHome / firstfloor / 거실 / 온도
❌ 인 MyHome / 지하 / 코너 / 온도
자세한 내용은 여기를 참조하십시오 .
작업
두 개의 문자열을 수락하고 부울을 리턴하는 함수 / 프로그램을 구현하십시오. 첫 번째 문자열은 주제 주제이고 두 번째 문자열은 기준 주제입니다. 기준 주제는 위에서 자세히 설명한 구독 구문을 사용합니다. 주제가 기준과 일치 할 때 기능은 진실합니다.
이 작업에 대한 규칙 :
- 주제는 ASCII입니다
#
와일드 카드 이외의 기준 필드가 없습니다- 와일드 카드는 주제 주제에 나타나지 않습니다
- 주제 필드 수> = 기준 필드 수
- 0 자 필드 나 선행 또는 후행 슬래시가 없습니다.
테스트 사례
기준 1 = "myhome / groundfloor / + / 온도"
기준 2 = "+ / groundfloor / #"
( "abc", "ab") => false
( "abc", "abc") => true
( "abc / de", "abc") => false
( "myhome / groundfloor / livingroom / temperature", 기준 1 ) => true
( "myhome / groundfloor / 부엌 / 온도", 기준 1) => true
( "myhome / groundfloor / 거실 / 밝기", 기준 1) => false
( "myhome / firstfloor / 거실 / 온도", 기준 1) = > false
( "차고 / 지상층 / 냉장고 / 온도", 기준 1) => false
( "myhome / 지상층 / 거실 / 온도", 기준 2) => true
( "myhome / 지상층 / 주방 / 밝기", 기준 2) => true
( "차고 / 지상층 / 냉장고 / 온도 / 기타 / 특정 / 필드 ", 기준 2) => true
("myhome / 1 층 / 거실 / 온도 ", 기준 2) => 거짓
( "myhome / 지하실 / 코너 / 온도", 기준 2) => false
( "music / kei $ ha / latest", "+ / kei $ ha / +") => true
a/b/c
는 기준a/b
에 맞지 않기 때문에 아니오 라고 말하는 경향이 있습니다.