Rebmu, 91 자
Catch-22로 인해이 답변의 URL을 얻으려면 게시해야합니다. :-/ 알았어요.
paTSrd http://codegolf.stackexchange.com/a/28154[th<a name="28154">th<code>cpCto</code>]prC
Rebmu는 Rebol의 방언이며 모두 읽을 수 있습니다 . 여기에 해당하는 Rebol은 다음과 같습니다.
parse to-string read http://codegolf.stackexchange.com/a/28154 [
thru <a name="28154">
thru <code>
copy c to </code>
]
print c
Rebol의 PARSE는 RegEx에 대한 일종의 문맹 퇴치입니다. 입력의 파서 위치를 시작합니다 (구조 블록 ... 이진 데이터 ... 또는 문자열 유형을 포함한 모든 시리즈 일 수 있음) . 규칙은 구문 분석 위치가 이동하는 방식에 대한 언어입니다.
태그와 URL은 실제로 언어에서 문자열입니다. 그러나 그들은 "맛이 나는"것이며, Rebol이 동적으로 입력되면 그 유형을 확인할 수 있습니다. 예를 들어 READ는 URL 맛이있는 문자열을 제공하면 스키마 처리기로 보내서 읽기를 수행해야한다는 것을 알고 있습니다. (이 경우 HTTP에 등록 된 것). 기본적으로 UTF-8 바이트를 반환하므로 to-string을 사용하여이를 디코딩하고 일반 유니 코드 문자열로 일련의 코드 포인트를 얻습니다.
구문 분석 방언의 경우 태그 유형이 발생하는 것은 마치 태그처럼 보이는 문자열 인 것처럼 일치합니다. THRU는 "다음 규칙이 일치 할 때까지 건너 뛰고 일치 위치의 끝에 일치 위치를 배치합니다"를 의미하는 명령입니다. (TO는 일치하는 유사체이지만 요소 앞에 구문 분석 위치를 남겨 둡니다).
그래서 우리는 과거를 따라 압축합니다 <a name="28154">
. 그런 다음의 다음 어커런스를 지나서 압축 <code>
위치는 이제 바로 다음에 위치합니다 >
. 그런 다음 PARSE의 COPY 명령을 사용하면 데이터를 다른 규칙으로 복사 할 수 있습니다.이 경우 규칙은 [TO </code>]
...이므로 변수 C에 들어가기 직전까지 모든 것을 처리합니다 <
.
쿨 ? :-)
기술적으로는 예를 들어 TO "</"
3 문자를 절약 하여 더 많은 것을 면도 할 수 있습니다. </code>
단지 끝 태그 와 일치 할 필요가 없습니다 </
. 시작 태그에 대해서도 비슷한 주장을 할 수있었습니다. 그러나 Rebmu는 문맹 골프 에 관한 것입니다. 처음에는 이상하게 생각될 지라도!
업데이트 : /body
트릭은 가방에서 벗어 났지만 비슷하게 그대로 두겠습니다. 왜냐하면 이것이 교육 방식이 더 교육적이라고 생각하기 때문입니다.