Tujuan
Ganti semua komentar dalam C, C ++, atau Java Code dengan komentar // Do the needful
.
Spesifik
Tantangan pengkodean ini sederhana. Ambil sebagai masukan nama file. File input harus berisi C, C ++, atau kode Java. Kode harus memuat satu atau lebih komentar. Komentar dapat berupa satu baris /* */
atau //
dibatasi, serta beberapa baris /* */
dibatasi. Output dari program harus identik dengan input kecuali semua komentar harus dikonversi // Do the needful
.
Misalnya jika file inputnya adalah:
#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);
}
Output dari program harus dibaca
#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);
}
Mencetak gol
Ini adalah kontes popularitas. Anda mendapatkan dua orang ekstra ditambahkan ke skor Anda jika tidak ada kata-kata berikut muncul dalam program Anda dalam variasi kasus: {"do", "the", "needful"}
. Skor adalah jumlah suara ditambah bonus jika berlaku.
Tunjangan
Jika komentar muncul dalam string literal, Anda dapat mengubahnya // Do the needful
juga. Lagi pula ... Anda tidak akan pernah memiliki cukup kebutuhan.
/* ... */
mendahului non-komentar pada suatu baris?
char str[]="/**///";
atau urutan komentar mulai /*
muncul dalam /*
komentar, atau garis miring terbalik muncul dalam //
komentar, atau //
komentar dalam /**/
komentar?
"d" + "o"
,"t" + "he"
dan"need" + "ful"
? Juga, apakah pengajuan harus dapat menangani setiap C valid, C ++ atau kode Java? Itu cukup keras dan sama dengan menulis lexer untuk ketiga bahasa (saya sedang memikirkan literal komentar dalam string dan sebaliknya.) Jika demikian, bagaimana dengan perpustakaan lexer pihak ketiga?