Tôi cứ nghe rằng suy nghĩ bên ngoài chiếc hộp là một mục tiêu đáng để đạt được, nhưng làm thế nào tôi có thể biết nếu tôi thực hiện thành công?
Để giải quyết vấn đề nan giải này, tôi đã viết một bộ chuyển đổi Brainwave-to-ASCII mà theo lý thuyết sẽ tạo ra các kết quả đầu ra như
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
hoặc là
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
Điều này làm cho nó khá dễ dàng để biết liệu người ta có suy nghĩ bên ngoài hộp hay không. ( #
Không phải là một phần của đầu ra và đại diện cho các dòng mới.)
Tuy nhiên, do lỗi đôi khi chỉ một phần nhỏ hơn của đầu ra được trả về:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
Nhiệm vụ
Vui lòng giúp tôi tự động phân loại đầu ra của bộ điều khiển Brainwave-to-ASCII bằng cách viết chương trình hoặc chức năng đọc phần lặp lại và trả về dù thinking
có trong hộp, bên ngoài nó hay không thể biết được từ đầu vào.
Đầu vào
Một tập hợp các chuỗi có cùng độ dài dưới dạng danh sách hoặc được phân tách bằng các dòng mới chứa
- chuỗi
thinking
hoặc tiền tố hoặc hậu tố hợp lệ của chúng - các ký tự
+-|
tạo thành một hộp hình chữ nhật hoặc các phần hợp lệ của nó - không gian
- KHÔNG
#
, những điều đó chỉ được bao gồm trong thử thách để đánh dấu các đầu của dòng đầu vào.
Đầu ra
- một truthy giá trị nếu
thinking
là ngoài vòng cấm địa - một falsy giá trị nếu
thinking
là trong hộp - một giá trị thứ ba khác biệt có thể có giá trị nếu không thể xác định được từ đầu vào cho dù
thinking
có trong hộp hay không
Ví dụ
Sự thật:
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
| | #
+---------+ #
thinking #
#
+#
|#
|#
inking |#
thinking #
-------+ #
++ # (thinking is not in the box, so it must be outside)
++ # (this is also the smallest possible box)
+ #
t#
+----+# (The box is not wide enough to contain "thinking")
---# (The box is not high enough to contain "thinking")
---#
Là đầu vào chuỗi:
" \n +------+ \n | | thinking \n | | \n | | \n +------+ \n "
" | | \n +---------+ \n thinking "
" \n +\n |\n |\ninking |"
"thinking \n-------+ "
" ++ \n ++ "
"+ \n t"
"+----+"
"---\n---"
"g++"
"k\n+"
Giả mạo:
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
+---------------#
| #
| #
| thinking #
| #
king | #
------+ #
+---#
|thi#
+---#
-#
n#
-#
Là đầu vào chuỗi:
" \n +------------+ \n | thinking | \n | | \n +------------+ \n "
" +---------------\n | \n | \n | thinking "
" | \nking | \n------+ "
"+---\n|thi\n+---"
"-\nn\n-"
Có lẽ:
thinking#
g|#
think#
-----#
| |# (box large enough to possibly contain the string)
| |#
+--#
| #
# (empty input)
Là đầu vào chuỗi:
"thinking"
"g|"
"|t"
"-\ni"
"h\n-"
"think\n-----"
"| |\n| |"
" +--\n | "
""
Quy tắc
- Đây là môn đánh gôn , vì vậy hãy cố gắng sử dụng càng ít byte càng tốt.
- Các thể giá trị có thể được chọn tự do miễn là nó khác với giá trị truthy / falsy và là như nhau cho tất cả có lẽ-đầu vào. Nó cũng có thể là một lỗi.
- Bạn có thể giả sử rằng đầu vào luôn hợp lệ (ví dụ: không chứa ký tự nào khác ngoài
+-ghiknt|
, không quá một hộp, ...).
+\n+
, hộp quá nhỏ cho một từ