Bạn là một người quản lý dự án. Một ngày nọ, một trong những lập trình viên của bạn phát điên ( không phải lỗi của bạn ) và lấy tất cả các biểu thức trong cơ sở mã và thêm dấu ngoặc ngẫu nhiên vào chúng, trước khi thoát ra tại chỗ, nói về sự bất tài của bạn ( cũng không phải lỗi của bạn ). Đây sẽ là một sửa chữa dễ dàng, tuy nhiên, vì một số lý do bạn không sử dụng kiểm soát sửa đổi ( hoàn toàn không phải lỗi của bạn ). Và vì một số lý do, không ai trong số các lập trình viên khác muốn trải qua mọi biểu thức để sửa các dấu ngoặc không khớp ( nhân tiện, đó không phải là lỗi của bạn ). Lập trình viên những ngày này, bạn nghĩ cho chính mình. Bạn sẽ phải tự làm điều đó. Kinh dị! Những nhiệm vụ như vậy được cho là ở bên dưới bạn ...
Đầu vào sẽ là một dòng duy nhất, sẽ chứa một số dấu ngoặc trái ( ( [ {
) và dấu ngoặc phải ( ) ] }
). Nó cũng có thể, nhưng không phải lúc nào cũng chứa các bình luận ( /* */
) và chuỗi ký tự ( " "
hoặc ' '
) và các số, chữ cái hoặc ký hiệu khác nhau.
Sẽ có ít nhất một dấu ngoặc (bên ngoài một bình luận hoặc chuỗi ký tự) không có sự đối lập (bên ngoài một bình luận hoặc chuỗi ký tự). Ví dụ, một sai lầm }
mà không có {
trước. Một ví dụ khác: một (
cái không có )
sau đó. Chương trình của bạn sẽ thay thế bằng một khoảng trống số lượng dấu ngoặc tối thiểu cần thiết để làm cho dấu ngoặc khớp với nhau.
Ví dụ:
(4 + (2 + 3))]
==> (4 + (2 + 3))
(dấu ngoặc vuông ở cuối)
][][[]]
==> [][[]]
(dấu ngoặc vuông ở đầu)
("Hel(o!"))
==> ("Hel(o!")
(dấu ngoặc đơn ở cuối)
( /* )]*/
==> /* )]*/
(dấu ngoặc đơn ở đầu)
{()]
==> ()
(dấu ngoặc nhọn và dấu ngoặc vuông)
- Có thể lấy đầu vào từ bất kỳ cách nào thuận tiện nhất (STDIN, đối số dòng lệnh, đọc từ tệp, v.v.)
- Nếu có nhiều hơn một cách để giải quyết sự không phù hợp với cùng số lần xóa, thì có thể chấp nhận được.
- Sẽ chỉ có sự không phù hợp trong ngoặc. Chuỗi ký tự và bình luận sẽ luôn luôn được hình thành chính xác.
- Tiêu đề đến từ chủ đề SO này
- Sẽ không bao giờ có bất kỳ trích dẫn nào trong các bình luận, trích dẫn trong trích dẫn, bình luận trong các bình luận, hoặc bình luận trong các trích dẫn.
Đây là mã golf, vì vậy số byte tối thiểu sẽ thắng. Đặt câu hỏi trong ý kiến nếu đặc điểm kỹ thuật không rõ ràng.
("foo (\") bar")
) không?
{{(})
phải là { }
hoặc tương đương, vì kịch bản mở đầu ngụ ý rằng mã đang hoạt động để bắt đầu và {(})
được tính là dấu ngoặc không khớp trong mọi ngôn ngữ lập trình mà tôi biết (nghĩa là "gây ra sự ngưng trệ" ??). Nhưng, sau đó, tôi đã viết một câu trả lời, vì vậy tôi thiên vị.