三角グリッドキックを使用している間、三角グリッドにはポリオミノに相当するものがあることを指摘しておきます。それらはポリダイヤモンドと呼ばれ、それらのエッジに沿って正三角形を互いに接着することによって形成された形状です。この課題では、三角グリッドのどのサブセットがポリダイヤモンドであるか、およびそれらに穴があるかどうかを決定します。穴が開いたポリダイヤモンドを作るのに必要な三角形は9つだけなので、コードはできるだけ短くする必要があります。
グリッド
入力にはマーティンの三角グリッドレイアウトを使用します。
三角形の中心がほぼ長方形のグリッドを形成し、左上の三角形が「上を向いている」ことに注意してください。次に、このグリッドのサブセットを記述することができます。次に、含まれる三角形と含まれない三角形を示す長方形の「星図」を指定します。たとえば、次のマップ:
** **
*****
穴を含む最小のポリダイヤモンドに対応します:
穴
上記の例のように穴(領域ではない領域によって全ての側で囲まれポリイアモンドの一部含まポリイアモンドあるが)トポロジー的に言えば、ない単に接続します。
チャレンジ
上記の「スターマップ」を入力として受け取り、三角グリッドの示されたサブセットが単純に接続されたpolyiamondである場合にのみ、真実を出力する関数またはプログラムを記述します。
その他の例
*** ***
*******
ポリダイヤモンドに対応
単純に接続されています。
* *
** **
***
ポリダイヤモンドに対応
単純に接続されています。
** **
*** **
****
非ポリダイヤモンドに対応
それがポリダイヤモンドであったとしても、単純に接続されることはありません。
入力仕様
- 入力は、アスタリスク、スペース、および改行のみで構成されます。
- 入力の最初の文字は常にスペースまたはアスタリスクになります(グリッドの左上隅にある上向きの三角形に対応)。
- 最初と最後の行には常に少なくとも1つのアスタリスクがあります。
- 最初の行の後の行が空にならないという保証はありません。行内の2つの改行が正当な入力に表示される場合があります。
- 行の長さはすべて同じである必要はありません。
当選条件
これはcode-golfなので、バイト単位の最短の回答が優先されます。
テストケース
真実の地図:
1) *
2) *
*
3) **
4) *** ***
*******
5) * *
** **
***
6) *
**
*
7) **
***
****
8) ****
** *
*****
9) ***********
** ** **
**** ** **
**
************
偽の地図:
1) *
*
*
2) * *
3) *
*
4) **
**
5) ***
***
6) ** **
*****
7) ** **
*** **
****
8) *
*
9) *****
** *
*****
AV VA\nVAVAV
なく、たとえば、** **\n*****
として表示することをお勧めします。マーティンのASCII図の1つを既に編集しました。