今週初め、私たちはどのように 、コメント用に難解な言語フォーマット。今日は、その逆を行います。よくコメントされた難解なコードを解析し、コメントを解析して、コードだけを返すプログラムまたは関数を作成する必要があります。前の課題からのいくつかの例を使用して、ここによくコメントされたコードがどのように見えるかを示します:
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
、2行目の2列目にあるため、折りたたむと、1行目の2列目になります。同様に、c
1行目の3列目に配置され、d
に配置され、4行目に配置されます。すべてのキャラクターについてこれを繰り返して、これを取得します:
abcdefghijklmnop
重要な注意:コメントを削除し、すべてのスペースを削除し、すべての行を結合することが簡単な解決策のようです。これは有効なアプローチではありません!元のコードにはスペースが含まれている可能性があるため、このアプローチではスペースが削除されます。たとえば、これは完全に有効な入力です。
hello #Line one
#Line two
world! #Line three
対応する出力は次のとおりです。
hello world!
チャレンジ:
コメント付きコードを入力として受け取り、すべてのコメントが解析されたコードを出力または返すプログラムまたは関数を作成します。コードの末尾にスペースを入れずに出力する必要がありますが、1つの末尾の改行を使用できます。コメント文字は常にとなり#
、コメントが始まる前に常に1つの余分なスペースがあります。#
うではない入力のコメントセクションに表示されます。チャレンジをより簡単に保つために、あなたがしないいくつかの入力があります処理。
コードの同じ列に2つの文字がないと仮定できます。たとえば、これはこのルールに違反する入力です。
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
。