ゴール
選択したプログラミング言語を使用して、Cプログラムを表す文字列からコメントを削除する最短のプログラムを作成します。
入力
文字列は任意の形式の入力として使用できますが、変数として使用することもできます。
説明書
次の2種類のコメントを削除します。
- 複数行コメントで始まり、
/*
で終わる*/
//
Linuxスタイルの改行(LF、\n
)で始まり、末尾が単一行のコメント
文字列内のコメントは削除されません。この課題のために、考慮する必要があるのは、"
区切り文字列のみです。特に、'
区切り文字リテラルの可能性は無視できます。3文字表記と行継続(/\<LF>*...
)を無視することもできます。
例
入力:
#include <stdio.h>
int main(int argc, char** argv)
{
// this comment will be removed
if (argc > 1) {
printf("Too many arguments.\n"); // this too will be removed
return 1;
}
printf("Please vist http://this.will.not.be.removed.com\n");
printf("/* This will stay */\n");
printf("\"/* This will stay too */\"\n");
printf("//and so will this\\");
// but not this
printf("just \"ano//ther\" test.");
return 0;
}
出力:
#include <stdio.h>
int main(int argc, char** argv)
{
if (argc > 1) {
printf("Too many arguments.\n");
return 1;
}
printf("Please vist http://this.will.not.be.removed.com\n");
printf("/* This will stay */\n");
printf("\"/* This will stay too */\"\n");
printf("//and so will this\\");
printf("just \"ano//ther\" test.");
return 0;
}
入力:
/*
this shall disappear
*/
#include <string>
int main(int argc, char** argv)
{
string foo = ""/*remove that!**/;
// Remove /* this
int butNotThis = 42;
// But do */ remove this
int bar = 4 /*remove this*/* 3; // but don't remove that 3. */
return 0;//just a comment
}/*end of the file has been reached.*/
出力:
#include <string>
int main(int argc, char** argv)
{
string foo = "";
int butNotThis = 42;
int bar = 4 * 3;
return 0;
}
// this comment will be removed
それらはちょうど消えました。そのためのルールはありますか?
printf("\"/* This will stay too */\"\n");
登場した場所からコードになるはずですか?