Objetivo
Substitua todos os comentários em C, C ++ ou Java Code pelo comentário // Do the needful
.
Específicos
Esse desafio de codificação é simples. Tome como entrada o nome de um arquivo. O arquivo de entrada deve conter código C, C ++ ou Java. O código deve conter um ou mais comentários. Os comentários podem ser delimitados por uma única linha /* */
ou //
delimitados por várias linhas /* */
. A saída do programa deve ser idêntica à entrada, exceto que todos os comentários devem ser convertidos em // Do the needful
.
Por exemplo, se o arquivo de entrada for:
#include <iostream.h>
int result; // the result of the calculations
char oper_char; // the user-specified operator
int value; // value specified after the operator
/* standard main function */
int main()
{
result = 0; // initialize the result
// Loop forever (or till we hit the break statement)
while (1) {
cout << "Result: " << result << '\n';
/* This code outputs display and requests
input from the user */
cout << "Enter operator and number: ";
cin >> oper_char;
cin >> value;
if (oper_char = '+') {
result += value;
} else {
cout << "Unknown operator " << oper_char << '\n';
}
}
return (0);
}
A saída do programa deve ler
#include <iostream.h>
int result; // Do the needful
char oper_char; // Do the needful
int value; // Do the needful
// Do the needful
int main()
{
result = 0; // Do the needful
// Do the needful
while (1) {
cout << "Result: " << result << '\n';
// Do the needful
cout << "Enter operator and number: ";
cin >> oper_char;
cin >> value;
if (oper_char = '+') {
result += value;
} else {
cout << "Unknown operator " << oper_char << '\n';
}
}
return (0);
}
Pontuação
Este é um concurso de popularidade. Você ganha dois votos extras adicionados a sua pontuação se nenhuma das seguintes palavras aparece em seu programa em qualquer variação caso: {"do", "the", "needful"}
. Pontuação é o número de votos mais bônus, se aplicável.
Subsídios
Se os comentários aparecerem em literais de string, é aceitável convertê-los // Do the needful
também. Afinal ... você nunca pode ter o suficiente necessário.
/* ... */
precede um não comentário em uma linha?
char str[]="/**///";
ou uma sequência de início de comentário /*
aparece em um /*
comentário ou uma nova barra invertida aparece em um //
comentário ou um //
comentário em um /**/
comentário?
"d" + "o"
,"t" + "he"
e"need" + "ful"
? Além disso, o envio precisa ser capaz de lidar com qualquer código C, C ++ ou Java válido ? Isso é bastante duro e equivale a escrever um lexer para os três idiomas (estou pensando em literais de comentários em strings e vice-versa.) Se sim, o que dizer das bibliotecas lexer de terceiros?