ビデオゲームMinecraftは、仮想世界を構成する3D 整数ラティスにさまざまな種類のブロックを配置および削除することをすべて目的としています。各格子点には、ブロックを1つだけ含めるか、空にすることができます(公式には「空気」ブロック)。この課題では、3Dワールドの1つの水平な2Dプレーンと、1つのタイプのブロック、チェストのみを考慮します。
チェストはプレイヤーにアイテムを保存させます。2つのチェストが同じ水平面で直交して隣接している場合、それらのテクスチャはリンクし、2倍の容量を持つダブルチェストが形成されます。ダブルチェストより大きなものは作れません。トリプルチェストもクワッドプルチェストもありません。
チェストブロックは、直交する隣接する4つのポイントがすべて空であるか、ダブルチェストの一部ではないチェストブロックが含まれている場合にのみ、空のラティスポイントに配置できます。これらの配置ルールにより、どのチェストブロックがリンクしてダブルチェストを形成するかについて、あいまいさが生じないことが保証されます。
たとえば、.空のスペースとCチェストであると仮定します:(数字は、単に識別のために空のスペースでもあります。)
.......C..
.1.C2.C3..
........5C
.CC4..CC..
..........
- 4つの隣人が空いているため、チェストをスポット1に配置できます。
- チェストはスポット2に配置できます。これは、隣接するチェストが(まだ)ダブルチェストの一部ではないためです。
- ダブルチェストの形成方法にはあいまいさがあるため、チェストをスポット3に配置することはできません。
- 隣接するチェストは既にダブルチェストの一部であるため、チェストをスポット4に配置することはできません。
- チェストはスポット5に配置できます。斜めに隣接するダブルチェストは何の影響も及ぼしません。
グリッドを超える領域が空であると仮定すると、グリッド.内のすべてを*チェストを配置できるかどうかに変更すると、次のようになります。
******.C**
***C**C.**
*..***..*C
.CC.*.CC.*
*..***..**
もちろん、すべての*スペースが同時にチェストで占められるわけではありませんが、チェストが1つしかない場合は、どのチェストにも置くことができます。
チャレンジ
かかるプログラムや機能書く.とCグリッド、およびすべての変更.には*胸を印刷したり、結果のグリッドを返し、そこに配置することができる場合を。
入力は、stdinまたはファイルから、または関数の文字列引数として指定できます。
、テキストのすなわちA完全な矩形グリッド、少なくとも1つの文字の幅と身長のみを含む-あなたが入力がうまく形成されていると仮定してもよい
.し、C必要に応じて最後の行の後の最後の改行があると仮定してもよい(出力中の1つが存在してもよいです)。入力のチェストの配置が上記のルールと一致していると仮定することができます。どのチェストがダブルチェストを形成するかについてあいまいさはありません。
必要に応じて、任意の三つの異なる使用することができ、印刷可能なASCII文字の代わりに文字を
.、Cと*。改行の代わりに他のものを使用することはできません。
得点
もう少し難しいMinecraft関連のチャレンジについては、Nether Portal Detectionをお試しください。