このスペースとXのグリッドが、奇妙な形の空の角氷トレイの断面を表していると仮定します。
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
のない列はX、水を保持できないトレイの穴または隙間を表し、無限の容量の流しに流れ込みます。グリッドの左端または右端から落ちる水も、この無限のシンクに流れ込みます。
蛇口をトレイの上に置き、すべてのコンパートメントの水位が安定するまで水で満たす場合、満たされる正確なコンパートメントは、水流がトレイの上に配置された正確な場所に依存します。(はねのない、薄くて安定した水の流れを想定してください。)
たとえば、蛇口Fが一番左のグリッド列の上にある場合
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
水はXその列の最上部に落ちて左右に広がり、左半分が下の流しにこぼれ、右半分が2×1コンパートメントを満たします。コンパートメントが満たされると、水流の右半分は流し台に流れ込むだけで、どこでも水位は本質的に安定しています。
蛇口をオフにすると、トレイは次のようになります:(~水として)
X X X
X~~X X XX X XX X
XXXXXX XXXXXXXXXXXXX
同様に、蛇口を次のように配置すると:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
左端の2つのコンパートメントがいっぱいになりますが、残りの水は排出されます。
X X X
X~~X~X XX X XX X
XXXXXX XXXXXXXXXXXXX
このように蛇口を配置すると:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
ストリームの左半分は流し台に流れ込みますが、右半分は最終的に右端の3つのコンパートメントを満たします。これは、平らな面で水が水平方向に移動できる距離に制限がないためです。
X X~X
X X X XX~X~~XX~~~X
XXXXXX XXXXXXXXXXXXX
ただし、次のように配置されます。
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
すべての水が流れ出し、コンパートメントは満たされません。
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
チャレンジ
スペースX、およびの長方形のグリッドを取り込むプログラムまたは関数を記述しますF。一番上の行には常にが含まれ、Fそうでない場合はスペースのみが含まれます。X各列の」sは(もしあれば)グリッドの基部から実線アップに拡張する、すなわちない洞窟やオーバーハングが存在しないであろう。
上記のように、蛇口Fができることを水で満たした後、グリッドを印刷または返却し~ます。F出力の一番上の行を残します。
蛇口列から離れたグリッドは最小で1×1になります。
F Xサポートする必要がある最小の入力です。
入力は、完全なテキスト長方形として入力されます。入力および出力では、先頭と末尾のスペースが重要です。例えば、入力
F X X XXXX結果になるはずです
X~~X XXXX(先頭と末尾のスペースに注意してください)
入力または出力に単一の末尾の改行があることは問題ありません。
あなたは、任意の4つの異なる使用することができ、印刷可能なASCII文字、スペースの代わりに文字を
X、F、~。
バイト単位の最短コードが優先されます。
大きな例:
入力:
F
X X
X X X
X XXX X X X X X
X X XXXXXXX X XXX XXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX
出力:
X~~~~~~~~~~~~~X
X~~~~~~~~~~~~~X~X
X~~~~~~~~~~~~XXX~~~~~~~X~~~~X~X~~~~~~~~~~~X X
X~~~X~~~~~XXXXXXX~~~~~~X~~~~XXX~~~~~XXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX
zip()<3 を使用する絶好の機会