Obbiettivo
Usando il linguaggio di programmazione che preferisci, scrivi il programma più breve per eliminare i commenti da una stringa che rappresenta un programma C.
Ingresso
La stringa può essere considerata come qualsiasi forma di input, ma può anche essere considerata come variabile.
Istruzioni
Devono essere rimossi due diversi tipi di commenti:
- commenti multilinea , che iniziano
/*
e finiscono con*/
- commenti a riga singola , che iniziano
//
e terminano con interruzioni di riga in stile Linux (LF,\n
)
I commenti nelle stringhe non devono essere eliminati. Ai fini di questa sfida, devi solo considerare "
le stringhe delimitate. In particolare, è possibile ignorare la possibilità di '
letterali di caratteri delimitati. Puoi anche ignorare le trigrafi e le continuazioni di linea ( /\<LF>*...
).
Esempi
Ingresso:
#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;
}
Produzione:
#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;
}
Ingresso:
/*
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.*/
Produzione:
#include <string>
int main(int argc, char** argv)
{
string foo = "";
int butNotThis = 42;
int bar = 4 * 3;
return 0;
}
// this comment will be removed
quali è appena scomparso. Qualche regola per quello?
printf("\"/* This will stay too */\"\n");
apparso nel dovrebbe diventare codice?