本周初,我们学习了如何格式化深奥的语言进行评论。今天,我们要做相反的事情。我需要您编写一个程序或函数来解析一些注释良好的深奥代码并解析出注释,仅返回代码。使用上一个挑战中的一些示例,下面是经过注释的代码:
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!
您可以按照自己喜欢的任何合理格式进行输入,例如,字符串列表,带换行符的单个字符串,二维字符列表等。最短的答案以字节为单位!
hello world!
您所显示的那样)?另外,您声明:“ #
不会出现在输入的注释部分。 ”,但是它可以出现在代码片段本身中吗?
do {stuff} while (condition);
按顺序do while (condition); #Explainything
进行说明{stuff} #Explainything
。