이것은 동일한 이름을 가진 이전에 삭제 된 도전 과제를 기반으로합니다.
소개
입력에 XML과 같은 1 개의 태그 가 모두 적절하게 열리고 닫히고 올바른 순서로 있는지에 따라 참 또는 거짓 값을 반환하는 프로그램을 작성해야합니다 . 다음을 입력으로 고려하십시오.
<Apple>
태그가 올바르게 닫히지 않아 잘못된 값을 반환합니다. 이:
<Apple></Apple>
반대로 올바르게 닫혀 있기 때문에 정확한 값을 반환합니다. 프로그램은 또한 중첩 된 태그가 올바른 위치에 있는지 확인해야합니다. 예를 들어, 이것을 입력으로 사용하십시오.
<mango><Apple></mango></Apple>
모든 태그가 올바르게 닫히지 만 올바른 순서는 아닙니다 . 프로그램은 올바른 태그 계층 및 중첩을 확인해야합니다.
정의
규칙과 가정에 들어가기 전에 몇 가지 사항을 정의하겠습니다.
꼬리표
기본 XML 스타일 태그 예를 들면 다음과 같습니다 <Apple>
.. 그들은 너무, 최고의 공간 후행 (그렇지 않으면이 무효 falsey의) 대부분에서 하나를 가질 수 < Apple >
와 <Apple>
동일합니다. 태그는 같은 속성을 포함 할 수 있습니다 foo="bar"
(필수 따옴표, 그렇지 않으면 무효 falsey과)를 , 그리고 속성 이름은 영숫자 문자 또는 포함 할 수 있습니다 _
, :
, -
,와 .
. 속성 이름에는 속성 값도 필요하지 않으며 값은 "
큰 따옴표로 묶기 전에는 아무 것도 포함 할 수 없습니다 . 닫는 태그에는 속성이 없어야하며 태그에는 줄 바꿈이 없어야합니다.
태그 이름
태그 이름은 태그 이름입니다. 예를 들어 <Apple>
의 태그 이름은 Apple
입니다. 태그 이름은 속성 이름과 동일한 문자를 포함 할 수 있으며 대소 문자를 구분합니다. 이 수단 <Apple>
이다 없습니다 <apple>
.
자체 결산 태그
<Apple />
or 와 같이 닫히는 일반 태그입니다 <Apple/>
(동일합니다). 슬래시와 태그 이름 사이의 공백이 허용됩니다.
일반 텍스트
무엇이든을 포함 할 수 있으며 묶여되지 않는 문자의 문자열 <
과 >
.
"간단한"태그
여는 태그, 닫는 태그 또는 자체 닫는 태그입니다.
규칙
- 출력물은 반환되거나 인쇄 될 수 있으며 원하는 방식으로 입력 할 수 있습니다.
- 입력은 태그, 일반 텍스트 또는 둘 다로 구성된 문자열입니다.
프로그램은 기능 또는 전체 작업 프로그램이 될 수 있습니다
일반 텍스트는 어디에나있을 수 있습니다. 입력 이 일반 텍스트 로만 구성된 경우 프로그램은 정확한 값을 반환해야합니다.
프로그램에 중첩 태그를 인식해야합니다. 태그가 태그에 중첩 된 경우 일반 XML처럼 상위를 닫기 전에 중첩 된 태그를 닫아야합니다. 그렇지 않으면 잘못된 값이 반환되어야합니다.
가정
- 입력이 항상 하나 이상의 "간단한"태그라고 가정 할 수 있습니다
- 입력이 항상 위에 정의 된 태그의 형식을 따르는 것으로 가정 할 수 있습니다
테스트 사례
팔시
<apple>
<apple></Apple>
<apple></mango>
<apple><mango>
<a><b></a></b>
Text<ul><li></li><ul />
<pear attr=foo></pear attr=foo>
<Ketchup flavor=spicy></Ketchup>
<Ap ple></Apple>
Truthy
Text
<Apple />
<Apple></Apple>
< Apple ></ Apple>
<mango><Apple/></mango>
<mango>Text<div class="bar">More text \o/</div></mango>
<food group="fruit">Fruits:<orange :fruit-variety="clementine" /><pear _fruit.type="asian" /></food>
<example foo="abcdefghijklmnopqrstuvwxyz1234567890-/:;()$&@.,?!'" noValue>Any characters allowed! (0.0)</example>
채점
이것은 code-golf 이므로 바이트 단위의 가장 짧은 코드가 이깁니다. 표준 허점 은 평소와 같이 금지되어 있습니다.
1 참고 : 이것은 실제 XML이 아니라 다른 챌린지 규칙을 가진 의사 XML입니다. 태그 및 속성 이름은 사양과 다릅니다.
< : : :><:/><: :=":=:" ::></:>< /:>
?