Mục tiêu
Thay thế tất cả các nhận xét trong C, C ++ hoặc Mã Java bằng nhận xét // Do the needful
.
Cụ thể
Thử thách mã hóa này là một điều đơn giản. Lấy làm đầu vào tên của một tập tin. Tệp đầu vào phải chứa mã C, C ++ hoặc mã Java. Mã sẽ chứa một hoặc nhiều ý kiến. Các ý kiến có thể là dòng đơn /* */
hoặc //
giới hạn, cũng như /* */
phân cách nhiều dòng . Đầu ra của chương trình phải giống hệt với đầu vào ngoại trừ tất cả các ý kiến nên được chuyển đổi thành // Do the needful
.
Ví dụ: nếu tệp đầu vào là:
#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);
}
Đầu ra của chương trình nên đọc
#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);
}
Chấm điểm
Đây là một cuộc thi phổ biến. Bạn nhận được hai phiếu bầu bổ sung vào điểm số của mình nếu không có từ nào sau đây xuất hiện trong chương trình của bạn trong mọi trường hợp khác nhau : {"do", "the", "needful"}
. Điểm là số phiếu cộng với tiền thưởng nếu có.
Phụ cấp
Nếu các bình luận xuất hiện theo chuỗi ký tự thì cũng có thể chuyển đổi chúng thành // Do the needful
tốt. Rốt cuộc ... bạn không bao giờ có thể có đủ nhu cầu.
/* ... */
trước một bình luận trên một dòng?
char str[]="/**///";
hoặc một chuỗi bắt đầu bình luận /*
xuất hiện trong một /*
bình luận, hoặc một dấu gạch chéo ngược mới xuất hiện trong một //
bình luận, hoặc một //
bình luận trong một /**/
bình luận?
"d" + "o"
,"t" + "he"
và"need" + "ful"
? Ngoài ra, việc đệ trình có phải có khả năng xử lý bất kỳ mã C, C ++ hoặc Java hợp lệ nào không? Điều đó khá khắc nghiệt và có nghĩa là viết một từ vựng cho cả ba ngôn ngữ (Tôi đang nghĩ về những lời bình luận bằng chuỗi và ngược lại.) Nếu vậy, còn thư viện lexer của bên thứ 3 thì sao?