前書き
あなたは同僚と一緒に座って、昼食をとり、あなたが取り組んでいると思われる最新の、おそらく最高のプロジェクトについて同僚に自慢しています。エゴイズムの絶え間ないショーケースにうんざりして疲れて、彼/彼女はあなたが黙ってしまうようにあなたに挑戦を与えます。あなたがエゴイスティックで幸せな幸運な人であることはもちろん受け入れます(あなたはそれぞれの挑戦をすべて受け入れなければならないからです)。挑戦、彼/彼女はそれが説明しているように、与えられた入力に各文字の1以上を含むテキストのブロックのを!@#$^&*
、出力される任意の合理的な形式でのスイッチの座標(ES)/「オン」です。
同僚による$
と、スイッチはであり、次の基準の少なくとも1つを満たす場合にのみ、スイッチは「オン」として分類されます。
すべてに囲まれています
^
。そう...^^^ ^$^ ^^^
「オン」スイッチになります。
すべてに囲まれています
&
。そう...&&& &$& &&&
「オン」スイッチになります。
少なくとも 2つの側面がで完全に覆われてい
*
ます。例えば、*** &$& ***
「オン」スイッチになりますが、
&*& &$& &*&
スイッチはs によって両側が完全に覆われていないため、そうではありません
*
。周囲のどのコーナーにも少なくとも1
!
つまたは1つ@
、あるいはその両方があります。これらのいずれかがコーナーにない場合、これはカウントされません。そう...!&& ^$@ @&!
少なくとも1
!
つまたは@
少なくとも1つのコーナーがあるため、「オン」スイッチになります(上記の場合、2つの有効な!
sと@
3つのコーナーで有効な1つがあります)。そして...&!& ^$@ ^!&
2 sと1 がありますが、どのコーナーにもありませんので、そうではありません。
!
@
1以上が
#
あるないに任意の少なくとも1がない限り、スイッチの周囲側面&
スイッチを取り囲んでいます。つまり、#
側面に少なくとも1つ存在する場合、存在する場合を除き、他のすべてのルールをオーバーライドします&
。したがって:#&* *$* !**
スイッチは「オン」になりますが、aは
#
存在しますが、&
aroundスイッチがあるため、上記のルールの少なくとも1つに従います。ただし、感嘆符が次のように存在しない場合:#&* *$* ***
上記のルールの少なくとも1つに従わないため、スイッチはオフになります。したがって、スイッチがa
#
およびa&
で囲まれている場合でも、これらの規則の1つ以上に従わない限り、スイッチはオフのままです。また、スイッチを有効にするには、sとsの比率が常に 1:1以上でなければなりません。例えば、&
#
#&! *$* **#
無効なスイッチになりますが、これらのルールの1つに従いますが、これは2
#
があり、1のみ&
であり、したがって&
sと#
sの比率が1:1を超えないためです。これを有効にするには&
、#
sと&
sの数のバランスを取るために、任意のエッジに1つ以上の追加のsを追加する必要があります。#&! *$& &*# 3:2 ratio between &s and #s
最後に...
#^^ ^$* @^!
これは「オフ」スイッチになりますが、少なくとも 1 つ以上が含まれ
#
ており、&
バランスを取るためのsがないため、上記のルールの1つ以上に従います。有効なスイッチは入力内のみにあるため、有効な各スイッチは8つの有効な文字で完全に囲まれている必要があります。たとえば、入力全体が次のようになる場合:
$
*$* !$! !!!
スイッチはエッジにあるため、トップ
$
は間違いなく有効なスイッチではありません。したがって、スイッチは8つの有効な文字で完全に囲まれていません。この場合、スイッチは考慮されるべきではありません。ただし、中央のスイッチは完全に有効であり、実際には上記の要件の少なくとも1つを満たしているため、「オン」です。
実証するために、次の文字ブロックを検討してください。
!@#^^$#!@
!@#$$*$&@
@$^!$!@&&
垂直軸y
と水平軸を呼び出して、そのような座標にラベルを付けることができますx
:
y
3 !@#^^$#!@
2 !@#$$*$&@
1 @$^!$!@&&
123456789 x
座標は常に(x,y)
、2次元の座標グリッドに似た形式で返される必要があります。今、どのスイッチがオンになっていますか?さて、最初にそれらすべてを見つけましょう。すでに一番上の行に1つ、一番下の行にもう1つあることがわかります。ただし、これらは8文字で完全に囲まれていないため、自動的にノーオペレーションです。
次は行2にあります。具体的には、次のとおりです。
#^^
#$$
^!$
我々は3つのがあることがわかります$
、それは2つのがあるので、それは、すでに無効である、あなたはおそらく見ることができるように、標識はこの中で、私たちはちょうど真ん中に1に集中したい、と#
ノーとその周りの&
それらのバランスをとるために複数可でる。さらに、これはどのルールにも従わないため、たとえ有効なスイッチであったとしても、とにかく「オフ」になります。
次に行2に別の行があります:
^^$
$$*
!$!
繰り返しますが、中央のスイッチにのみ焦点を当てます。それは持っているので、このスイッチは、「オン」である、少なくとも 1 !
に少なくとも 1コーナー。これの座標は(5,2)
です。
次に、最後のスイッチに移動します。これも2行目にあり、次のように表示されます。
$#!
*$&
!@&
おそらくおわかりのように、これは有効なスイッチでもありますが、#
それを取り巻くものがあります。それに加えて、少なくとも1 つのコーナーに少なくとも1つあるため、スイッチが有効であるだけでなく、「オン」でもあります。このスイッチの座標はです。&
#
!
(7,2)
ついに終わりに達し、テキスト上のブロック全体に2つの「オン」スイッチが見つかりました。それらの座標は(5,2)
andであり(7,2)
、これが最終的な答えであり、出力はどうあるべきかです。ただし、この入力は非常に簡単でした。テキストブロックが取得できるサイズに制限はないため、入力はさらに大きくなる可能性があります。たとえば、入力200x200
はテキストのランダム化されたブロックでさえありえます。
制約
標準の抜け穴は禁止されています。
おそらくこれを組み込むことはできませんが、念のため(Mathematicaを見ると)、これを直接解決する組み込みの使用は禁止されています。
テストケース:
形式で与えられます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]]
^!!#&#&&&#*^#!^!^@!$
&$$^*$^$!#*&$&$#^^&$
近日公開予定
その他の注意事項
- 入力は常に完全なブロック(つまり、長方形または正方形)の形式であると想定できます。
- 入力には、以外の文字はありません
!@#$^&*
。
覚えておいて、これはコードゴルフなので、最短のコードが勝ちます!