Nghệ thuật ASCII rất thú vị. Trình soạn thảo văn bản hiện đại rất giỏi trong việc thao tác văn bản. Là ngôn ngữ lập trình hiện đại lên đến nhiệm vụ?
Một nhiệm vụ phổ biến trong thao tác nghệ thuật ASCII là cắt văn bản thành hình chữ nhật giữa hai ký tự. Đây là nhiệm vụ bạn phải thực hiện trong thử thách này.
Chi tiết
Chương trình của bạn sẽ có 3 đầu vào:
- đầu tiên là ký tự 'bắt đầu' của khối - đánh dấu góc trên cùng bên trái
- thứ hai là ký tự 'kết thúc' của khối - đánh dấu góc dưới bên phải
- thứ ba là một số dạng văn bản đa dòng, hoặc một chuỗi, hoặc danh sách các chuỗi, hoặc tên tệp, hoặc bất cứ điều gì
Kết quả sẽ là văn bản nhiều dòng (một lần nữa, trong bất kỳ định dạng nào ở trên) được cắt thành hình chữ nhật giữa các đầu vào đã cho. Lưu ý rằng hai đầu vào đầu tiên có thể không phải là duy nhất.
Trường hợp cạnh
Các hộp phải luôn có thể tích ít nhất là 2. Do đó:
() (
)
là những hộp nhưng đây là:
)( ) (
( )
không (với start = (
và end = )
).
Đầu vào sẽ chỉ chứa một hộp. Do đó, các ký tự bắt đầu và kết thúc chỉ phải xảy ra một lần, trừ khi chúng là cùng một ký tự trong trường hợp chúng phải xảy ra chính xác hai lần.
Ngoài ra, mỗi dòng trong đầu vào phải dài ít nhất là khoảng cách từ điểm bắt đầu của dòng đến cạnh phải của hộp trong đầu vào.
Chương trình của bạn không cần xử lý các đầu vào không hợp lệ; họ có thể dẫn đến hành vi không xác định.
Quy tắc
Quy tắc golf-golf điển hình áp dụng. Mã ngắn nhất sẽ thắng.
Ví dụ
Ngày nắng: start: ( end: ) input:
This is some text
. (but this text
is in a box ).
So only it is important.
Đầu ra:
(but this text
is in a box )
Lưu ý tước bỏ không gian ngang là tốt. Cây nghệ thuật ASCII là 2d.
Ngày mưa: start: ( end: ) input:
This is some text (
But is that even )
really a box?
Đầu ra:
(
)
Bắt đầu / kết thúc giống nhau: start: / end: / input:
Oh, I get how this could be useful
/----------------------------\
| All this text is in a box! |
\----------------------------/
Đầu ra:
/----------------------------\
| All this text is in a box! |
\----------------------------/
Đâu vao không hợp lệ: start: ( end: ) input:
Boxes are rectangular ( so this has
0 volume ) which is illegal.
Đầu vào 2 không hợp lệ: start: ( end: ) input:
(The lines must already be square
so this line that is too short
relative to this end, is illegal)