이번 주 초, 우리는 주석을 달기 위해 난해한 언어의 형식을 지정 하는 방법을 배웠습니다 . 오늘, 우리는 그 반대를 할 것입니다. 잘 짜여진 난해한 코드를 파싱하고 주석을 파싱하여 코드 만 반환하는 프로그램이나 함수를 작성해야합니다. 이전 과제의 몇 가지 예를 사용하여 잘 작성된 코드는 다음과 같습니다.
a #Explanation of what 'a' does
bc #Bc
d #d
e #Explanation of e
fgh #foobar
ij #hello world
k #etc.
l #so on
mn #and
op #so forth
다음은 코드를 추출하기 위해 수행해야 할 작업입니다. 먼저 주석 문자 ( #
), 그 앞의 공백 및 주석 문자 뒤의 모든 것을 제거하십시오 .
a
bc
d
e
fgh
ij
k
l
mn
op
그런 다음 각 줄을 한 줄로 접습니다. 때문에 예를 들어, b
선 두에 두 번째 열에서 우리가 그것을 붕괴되면, 그것은 라인의 두 번째 열에있을 것 하나 . 마찬가지로, 첫 c
번째 줄의 세 번째 열에 d
배치되고 네 번째 줄에 배치됩니다. 모든 캐릭터에 대해 이것을 반복하면 다음과 같이됩니다.
abcdefghijklmnop
중요 사항 : 사소한 해결책은 주석을 제거하고 모든 공간을 제거하고 모든 줄에 참여하는 것 같습니다. 이것은 유효한 접근법 이 아닙니다 ! 원래 코드에는 공백이있을 수 있으므로이 방법으로 공백이 제거됩니다. 예를 들어, 이것은 완벽하게 유효한 입력입니다.
hello #Line one
#Line two
world! #Line three
해당 출력은 다음과 같아야합니다.
hello world!
도전 과제 :
주석 처리 된 코드를 입력으로 사용하고 모든 주석이 구문 분석 된 코드를 출력하거나 반환하는 프로그램 또는 함수를 작성하십시오. 하나의 후행 줄 바꿈이 허용되지만 후행 공백 없이 코드 를 출력해야합니다 . 주석 문자는 항상 #
이며 주석이 시작되기 전에 항상 추가 공간이 하나 있습니다. #
것 없는 입력의 코멘트 섹션에 나타납니다. 챌린지를보다 단순하게 유지하기 위해 처리 할 필요가 없는 입력은 다음과 같습니다.
코드가 같은 열에 두 문자가 없다고 가정 할 수 있습니다. 예를 들어,이 규칙을 위반하는 입력입니다.
a #A character in column one bc #Characters in columns one and two
모든 주석 문자가 동일한 열에 나타나는 것으로 가정 할 수도 있습니다. 예를 들어이 입력은 다음과 같습니다.
short #this is a short line long #This is a long line
이 규칙을 위반합니다. 이것은 또한
#
코드 섹션에 없다는 것을 의미합니다 .마지막으로 선행 또는 후행 공백이있는 코드 섹션을 처리 할 필요가 없습니다. 예를 들어
Hello, # World! #
입력에 인쇄 가능한 ASCII 문자 만 포함되어 있다고 가정 할 수도 있습니다.
예 :
Input:
hello #Line one
#Line two
world! #Line three
Output:
hello world!
Input:
E #This comment intentionally left blank
ac #
h s #
ecti #
on is #
one c #
haracte #
r longer #
than the #
last! #
Output:
Each section is one character longer than the last!
Input:
4 #This number is 7
8 #
15 #That last comment is wrong.
16 #
23 #
42 #
Output:
4815162342
Input:
Hello #Comment 1
world #Comment 2
, #Comment 3
how #Comment 4
are #Comment 5
you? #Comment 6
Output:
Hello world, how are you?
Input:
Prepare #
for... #
extra spaces! #
Output:
Prepare for... extra spaces!
문자열 목록, 줄 바꿈이 포함 된 단일 문자열, 2d 문자 목록 등 원하는 형식으로 입력 할 수 있습니다.
hello world!
있습니까? 또한 " #
입력의 주석 섹션에 " 가 나타나지 않습니다. "라고 말하지만 코드 조각 자체에서 발생할 수 있습니까?
do {stuff} while (condition);
순서대로 설명과 함께 do while (condition); #Explainything
다음 {stuff} #Explainything
.