Giới thiệu
Tôi có rất nhiều đá ASCII. Chúng được xây dựng với dấu gạch ngang, đường ống, Vs, dấu mũ, dấu ngoặc góc, dấu gạch chéo và khoảng trắng. Thí dụ:
/--\
| |
| |
\--/
Tôi muốn ăn mòn chúng, như thế này:
/\
/ \
\ /
\/
Tất cả các góc đã trở nên tròn hơn. Một ví dụ phức tạp hơn:
/----\
| \------\
| |
| |
\------------/
/--\
/ \------\
| \
\ /
\----------/
Sau một sự xói mòn khác, nó sẽ trở thành
/\
/ \------\
< \
\ /
\--------/
Và một cái khác:
/\------\
< \
\ /
\------/
Thử thách
Thách thức của bạn là viết một chương trình có thể làm xói mòn đầu vào một lần. Bạn có thể giả sử chỉ có một tảng đá và bạn có thể cho rằng đó là một vòng khép kín. Đầu vào sẽ chỉ chứa các ký tự /\ -| <> ^V \n
và sẽ có khoảng trắng ở cuối để tạo hình chữ nhật. Chương trình có thể nhận đầu vào từ STDIN và xuất ra STDOUT hoặc có thể là một hàm. Ở cuối mỗi hàng là một ký tự dòng mới. Xói mòn phải tuân theo các quy tắc được nêu dưới đây (Lưu ý: trong các ví dụ đá không hoàn thành, điều này là để dễ giải thích). Đầu ra phải có cùng định dạng với đầu vào, có cùng kích thước với đầu vào. Tuy nhiên, dấu cách có thể được bỏ qua.
Các dấu gạch chéo sẽ lan đến các đường ống và dấu gạch ngang và di chuyển qua.
/---
|
|
/--
/
|
/-
/
/
Nếu hai dấu gạch chéo hợp nhất với nhau, ký tự thích hợp <>^V
được sử dụng.
/-----\
| |
| |
| |
\-----/
/---\
/ \
| |
\ /
\---/
/-\
/ \
< >
\ /
\-/
^
/ \
< >
\ /
V
Nếu một phần của đá có thể hợp nhất, nó sẽ. Lưu ý: nếu một phần có thể hợp nhất nhưng phần khác không thể (nghĩa là /\
trong dòng thứ hai của ví dụ), thì phần có thể hợp nhất sẽ (xem ví dụ).
/\
/\-^-/\-/ \--
|
<
|
/
\
|
/
/
\
\
|
|
/-------/\--
/
|
|
|
|
|
|
/
\
|
|
|
Cuối cùng, tất cả các tảng đá sẽ trở thành không có gì.
<> ^ /\
V \/
Các trường hợp thử nghiệm
Bài kiểm tra 1:
/----\
| \------\
| |
| |
\------------/
/--\
/ \------\
| \
\ /
\----------/
/\
/ \------\
< \
\ /
\--------/
/\------\
< \
\ /
\------/
/-----\
< \
\ /
\----/
/---\
< \
\ /
\--/
/-\
< \
\ /
\/
^
< \
\/
Bài kiểm tra 2:
/----\
| |
| |
| |
| |
\----/
/--\
/ \
| |
| |
\ /
\--/
/\
/ \
/ \
\ /
\ /
\/
/\
/ \
\ /
\/
/\
\/
Bài kiểm tra 3:
^ /\
/\--/\--/ \--/ \-\
\ |
| |
/ |
\ |
| |
| |
/ |
< |
\ |
| |
| |
/ |
/ |
\ |
\-----------------/
/-------^----/\-\
/ \
| |
| |
| |
| |
| |
| |
< |
| |
| |
| |
| |
/ |
\ /
\---------------/
/-------------\
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
\ /
\ /
\-------------/
/-----------\
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
\ /
\ /
\ /
\-----------/
/---------\
/ \
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
\ /
\ /
\ /
\ /
\---------/
/-------\
/ \
/ \
/ \
/ \
/ \
| |
| |
| |
| |
\ /
\ /
\ /
\ /
\ /
\-------/
/-----\
/ \
/ \
/ \
/ \
/ \
/ \
| |
| |
\ /
\ /
\ /
\ /
\ /
\ /
\-----/
/---\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\---/
/-\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\-/
^
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
\ /
\ /
\ /
V
^
/ \
/ \
\ /
\ /
V
^
/ \
\ /
V
^
V
Chấm điểm
Đây là môn đánh gôn , vì vậy chương trình có số byte nhỏ nhất sẽ thắng!
Sơ hở tiêu chuẩn không được phép.
"\x20\x20\x20\x20\x20\x20/\\\n/-\\\x20\x20/\x20\x20\\-\\\n|\x20\x20\\/\x20\x20\x20\x20\x20|\n\\---------/\n"