Giới thiệu
Bạn đang ngồi với đồng nghiệp, ăn trưa và khoe với anh ấy / cô ấy về dự án mới nhất và được cho là lớn nhất mà bạn đang thực hiện. Phát ốm và mệt mỏi với việc thể hiện bản ngã liên tục của bạn, anh ấy / cô ấy đưa ra cho bạn một thử thách chỉ để bạn im lặng. Là người ích kỷ và vui vẻ, bạn dĩ nhiên chấp nhận (vì bạn phải chấp nhận từng thử thách). Các thách thức , như anh / cô ấy giải thích đó là, đưa ra một đầu vào của một khối văn bản có chứa 1 hay nhiều của mỗi nhân vật trong !@#$^&*
, đầu ra trong bất kỳ định dạng hợp lý tọa độ của công tắc (es) đó là / là "on".
Theo đồng nghiệp của bạn, công tắc là một $
và công tắc được phân loại là "bật" nếu và chỉ khi nó đáp ứng ít nhất 1 trong các tiêu chí sau:
Nó được bao quanh bởi tất cả
^
. Vì thế...^^^ ^$^ ^^^
dẫn đến một công tắc "bật".
Nó được bao quanh bởi tất cả
&
. Vì thế...&&& &$& &&&
dẫn đến một công tắc "bật".
Nó được bao phủ hoàn toàn trên ít nhất hai mặt với
*
. Ví dụ,*** &$& ***
dẫn đến một công tắc "bật", nhưng
&*& &$& &*&
không, vì công tắc không được bao phủ hoàn toàn ở hai bên bởi
*
s.Có ít nhất 1
!
và / hoặc 1@
ở bất kỳ góc nào xung quanh nó. Điều này không được tính nếu một trong hai không nằm trong một góc. Vì thế...!&& ^$@ @&!
dẫn đến một công tắc "bật", vì có ít nhất 1
!
và / hoặc@
ít nhất 1 trong số các góc (trong trường hợp trên, có 2!
s hợp lệ và 1 hợp lệ@
ở 3 góc). Và ...&!& ^$@ ^!&
không không , mặc dù có 2
!
s và 1@
, vì không ai trong số họ là trong bất kỳ của các góc.1 hoặc nhiều
#
là không trên bất kỳ bên xung quanh việc chuyển đổi, trừ khi ít nhất 1&
bao quanh công tắc. Nói cách khác, nếu có ít nhất 1#
món quà ở một bên, nó sẽ ghi đè tất cả các quy tắc khác, trừ khi có một&
món quà. Vì thế:#&* *$* !**
dẫn đến một công tắc "bật", mặc dù
#
tồn tại, vì có một&
công tắc xung quanh và nó tuân theo ít nhất 1 trong các quy tắc trên. Tuy nhiên, nếu dấu chấm than không có mặt như vậy:#&* *$* ***
Công tắc sẽ tắt, vì nó không tuân theo ít nhất một trong các quy tắc trên. Do đó, mặc dù một công tắc có thể được bao quanh bởi a
#
và a&
, nó vẫn sẽ bị tắt trừ khi nó tuân theo một hoặc nhiều quy tắc này. Ngoài ra, phải luôn có tỷ lệ> = 1: 1 giữa&
s và#
s để công tắc có hiệu lực. Ví dụ,#&! *$* **#
sẽ vẫn là một công tắc không hợp lệ, mặc dù nó tuân theo 1 trong các quy tắc này, vì có 2
#
s, nhưng chỉ có 1&
, và do đó không phải là tỷ lệ> = 1: 1 giữa&
s và#
s. Để làm cho điều này hợp lệ, bạn phải thêm 1 hoặc nhiều&
s vào bất kỳ cạnh nào để cân bằng số lượng#
s và&
s, có thể như vậy:#&! *$& &*# 3:2 ratio between &s and #s
Cuối cùng ...
#^^ ^$* @^!
dẫn đến một công tắc "tắt", mặc dù nó tuân theo 1 hoặc nhiều quy tắc trên, vì nó chứa ít nhất 1
#
xung quanh nó và không có gì&
để làm mất cân bằng.Các công tắc hợp lệ sẽ chỉ được bên trong một đầu vào, và do đó, mỗi hợp lệ
$
phải được bao bọc hoàn toàn bởi bất kỳ 8 của ký tự hợp lệ. Chẳng hạn, nếu toàn bộ đầu vào là:*$* !$! !!!
đỉnh
$
chắc chắn không phải là một công tắc hợp lệ vì công tắc nằm ở một cạnh và do đó công tắc không được bao quanh hoàn toàn bởi 8 ký tự hợp lệ. Trong trường hợp này, chuyển đổi thậm chí không nên được xem xét. Tuy nhiên, công tắc ở giữa là hoàn toàn hợp lệ và thực tế là "bật", vì nó đáp ứng ít nhất một trong các yêu cầu trên.
Để chứng minh, hãy xem xét khối ký tự này:
!@#^^$#!@
!@#$$*$&@
@$^!$!@&&
mà chúng ta có thể gắn nhãn cho tọa độ như vậy, gọi trục dọc y
và trục ngang x
:
y
3 !@#^^$#!@
2 !@#$$*$&@
1 @$^!$!@&&
123456789 x
Các tọa độ phải luôn được trả về theo (x,y)
định dạng, tương tự như lưới tọa độ hai chiều. Bây giờ, công tắc nào được bật? Chà, trước tiên hãy tìm tất cả. Chúng ta có thể thấy rằng có 1 ở hàng trên cùng và một cái khác ở dưới cùng. Tuy nhiên, đó là tự động không có ops, vì chúng không được bao quanh hoàn toàn bởi 8 ký tự.
Tiếp đến là một trong hàng 2. Cụ thể, cái này:
#^^
#$$
^!$
Chúng ta có thể thấy rằng có 3 $
dấu hiệu trong đó, nhưng chúng ta chỉ muốn tập trung vào một dấu hiệu ở giữa, và, như bạn có thể thấy, nó đã không hợp lệ, vì nó có 2 #
giây xung quanh mà không có &
s để cân bằng chúng ngoài. Ngoài ra, điều này thậm chí không tuân theo bất kỳ quy tắc nào, vì vậy ngay cả khi đó là một công tắc hợp lệ, nó sẽ bị "tắt".
Tiếp đến là một số khác trong hàng 2:
^^$
$$*
!$!
Một lần nữa, chỉ tập trung vào công tắc ở giữa. Công tắc này là "bật", vì nó có ít nhất 1 !
trong ít nhất 1 góc. Các tọa độ của cái này là (5,2)
.
Tiếp tục, cuối cùng chúng tôi cũng chuyển sang công tắc cuối cùng. Cái này cũng ở hàng thứ hai và xuất hiện như vậy:
$#!
*$&
!@&
và, như bạn có thể thấy, cái này cũng là một công tắc hợp lệ, mặc dù có một #
xung quanh nó, vì có 2 cái khác &
để mất cân bằng #
. Ngoài ra, nó cũng có ít nhất 1 !
trong ít nhất 1 góc, và do đó, không chỉ công tắc hợp lệ mà còn "bật". Các tọa độ của chuyển đổi này là (7,2)
.
Cuối cùng chúng tôi đã đi đến cuối cùng và đã tìm thấy 2 công tắc "bật" trong toàn bộ khối đó trên văn bản. Tọa độ của chúng là (5,2)
và (7,2)
, đó là câu trả lời cuối cùng của chúng ta, và đầu ra nên là gì. Tuy nhiên, đầu vào này rất đơn giản. Các đầu vào có thể lớn hơn rất nhiều , vì không có giới hạn về mức độ lớn của khối văn bản có thể nhận được. Ví dụ, đầu vào thậm chí có thể là một 200x200
khối văn bản ngẫu nhiên .
Chống chỉ định
Lỗ hổng tiêu chuẩn bị cấm.
Có thể không thể tích hợp sẵn cho việc này, nhưng chỉ trong trường hợp có (nhìn vào Mathicala), việc sử dụng các công cụ tích hợp trực tiếp giải quyết vấn đề này đều bị cấm.
Các trường hợp thử nghiệm:
Đưa ra trong định dạng string input -> [array output]
:
@#$$&^!&!#
@*&!!^$&^@
$!#*$@#@$! -> [[7,3],[9,2]]
*@^#*$@&*#
#^&!$!&$@@#&^^&*&*&&
!^#*#@&^#^*$&!$!*^$$
#^#*#$@$@*&^*#^!^@&* -> [[19,3],[15,3],[8,2]]
#$@$!#@$$^!#!@^@^^*#
@!@!^&*@*@
*$*^$!*&#$
@$^*@!&&&#
**$#@$@@#! -> [[2,8],[5,8],[6,6],[9,3]]
##*&*#!^&^
$&^!#$&^&@
^^!#*#@#$*
$@@&#@^!!&
#@&#!$$^@$
!!@##!$^#!&!@$##$*$#
$^*^^&^!$&^!^^@^&!#!
@*#&@#&*$!&^&*!@*&** -> [[9,4],[9,3]]
^!!#&#&&&#*^#!^!^@!$
&$$^*$^$!#*&$&$#^^&$
Sắp có thêm
Ghi chú bổ sung
- Bạn có thể giả định rằng đầu vào sẽ luôn ở dạng một khối hoàn chỉnh (nghĩa là hình chữ nhật hoặc hình vuông)
- Sẽ không bao giờ có bất kỳ nhân vật nào khác trong đầu vào hơn những nhân vật trong
!@#$^&*
.
Hãy nhớ rằng, đây là một môn đánh gôn để mã ngắn nhất sẽ thắng!