Một ngôn ngữ giả định dùng ký tự # để bắt đầu chú thích dòng đơn: mọi ký tự kể từ # cho đến hết dòng hiện tại (KHÔNG bao gồm ký tự xuống dòng \n) đều bị coi là chú thích. Tuy nhiên mã nguồn có thể chứa các chuỗi ký tự nằm giữa cặp dấu nháy đơn '...' (không lồng nhau); bên trong một chuỗi ký tự, dấu # KHÔNG được coi là bắt đầu chú thích.
Quy tắc nhận biết chuỗi ký tự khi quét từ trái sang phải (ngoài chuỗi):
' → bắt đầu vào bên trong chuỗi.\ (dấu gạch chéo ngược) thì ký tự \ và ký tự NGAY SAU nó luôn được giữ nguyên và không được xét đến (dùng để escape, ví dụ \' không kết thúc chuỗi).' (không phải do escape) → kết thúc chuỗi, trở lại chế độ quét thông thường.' nhưng không bao giờ gặp dấu ' đóng tương ứng cho đến hết dữ liệu vào (chuỗi không đóng), thì toàn bộ phần còn lại của dữ liệu vào được coi là vẫn nằm trong chuỗi — trong trường hợp này mọi dấu # phía sau đều KHÔNG bị coi là chú thích.Yêu cầu: xóa bỏ toàn bộ phần chú thích (dấu # và mọi ký tự sau nó đến hết dòng, không xóa ký tự xuống dòng), GIỮ NGUYÊN mọi ký tự khác (kể cả khoảng trắng, số dòng, nội dung chuỗi) rồi in ra kết quả.
Ví dụ: với dữ liệu vào (ký tự cuối 'a#b' có một dấu cách theo sau trước khi in ra)
x = 'a#b' # comment
y = 1
vì # đầu tiên nằm trong chuỗi 'a#b' nên được giữ nguyên; # thứ hai nằm ngoài chuỗi nên bắt đầu chú thích và bị xóa đến hết dòng. Kết quả in ra:
x = 'a#b'
y = 1
(dòng đầu kết quả có một dấu cách ở cuối, ngay trước ký tự xuống dòng, vì phần bị xóa chỉ tính từ # trở đi).
Toàn bộ dữ liệu vào là mã nguồn cần xử lý (có thể nhiều dòng), đọc đến hết stdin/EOF.
In ra chính xác mã nguồn sau khi đã loại bỏ phần chú thích theo quy tắc trên, không thêm hay bớt bất kỳ ký tự nào khác so với dữ liệu vào (ngoài phần chú thích bị xóa).
Ví dụ:
Đầu vào:
Đầu ra:
Đầu vào:
x = 'a#b' # comment
y = 1
Đầu ra:
x = 'a#b'
y = 1
Đang tải editor...