2
ダイナマイト付きマウス
あなたはマウスです。あなたのマウスの友人はすべて捕らえられており、無意識であり、入口/出口が1つしかない迷路に閉じ込められています。あなたはたまたま迷路の完全な地図を持っているので、あなたは急いでそれらをすべて安全に運ぶために解決策を計画することができます。ただし、迷路はセキュリティシステムで保護されており、しきい値に1000達するとアラートをトリガーし、あなたを捕らえて救助ミッションに失敗させます。 迷路の以前の調査から、踏み込んだ各正方形(つまり、水平方向または垂直方向の移動- マウスは斜めに移動できない)が1セキュリティシステムのカウンターに追加されます。ただし、重量(ダイナマイトのブロックまたは無意識のマウスフレンド)を運んでいる2場合は、追加の圧力を検出するため、代わりに追加されます。入り口/出口の広場にはこのセキュリティシステムがないため、カウンターに追加されません。 入り口に持ってきたダイナマイトは無制限にあるので、壁を爆破して友達を解放できます。しかし、あなたはそうすることに注意する必要があります。なぜなら、各爆発は50脳震盪の圧力からカウンターに加わるからです。さらに、一度に持ち運ぶことができるのは、1匹のマウスまたは1ブロックのダイナマイトです。ダイナマイトの各ブロックは1つの壁スペースのみを爆発させることができるため、複数の壁が連続して存在する場合は、手に手を入れて入り口まで戻ってさらに手に入れる必要があります。 実例 迷路が次のようになっているとします: ###### #M# E# ###### cカウンターに使用します。私たちは、から始まりE、N-トランスダイナマイトを運んでいる間1つの平方左に移動しますc=2。壁を爆発させるためにダイナマイトを爆発させc=52ます。手ぶらで2つの正方形を左に移動してを取得c=54し、マウスの正方形の上に立っています。私たちは友人を選び、3つの正方形をExitに戻しますが、最後の正方形はセンサーを持たないためカウントされません。そのため、背中に何かがある2つの正方形だけです。つまり、最後のマウスで出口に到達すると、c=58は未満で1000あり、ミッションは成功します。 チャレンジ 入力された迷路が与えられると、マウスヒーローであるあなたが、上記で概説した制約内ですべての閉じ込められたマウスを正常に救出できるかどうか、またはミッションが失敗であるかどうかを出力します。 入力 受け入れ可能な形式(複数行の文字列、文字列の配列など)の2D迷路。 この挑戦のために、私は#内壁と外壁の両方M、ネズミの友達、そしてE入り口に使用します。 入口が内壁にすぐ隣接することはありません(常に少なくとも1つのスペースが自由に移動できます)。 一貫性がある限り、任意の印刷可能なASCII文字に置き換えることができます。これはない、あなたが使用することを選択した場合に限り、あなたが一貫性(例えばを維持するように、外壁対内壁のための2つの異なるシンボルを使用できるようにする@代わりに、内壁のために、そして休暇#外装のため、すべての内壁がなければなりません@し、すべての外壁#)。 迷路は常に完全に壁に囲まれていますが、必ずしも長方形ではありません。必要に応じて、長方形の入力を作成するために迷路にスペースが埋め込まれていると想定できます(オプション)。 迷路には、ダイナマイトなしでは到達できないセクションがある場合があります。 迷路の外壁をダイナマイトすることはできません。 出力 truthy / falseyの値。「はい、マウスは他のすべてのマウスを救出できます」の場合は真実、「いいえ、アラームシステムが作動します」の場合は偽です。 ルール 完全なプログラムまたは機能のいずれかが受け入れられます。 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。 例 空白行で区切られた真実の例。 ##### #M E# ##### ###### #M# E# ###### ######## #E # M# # # # # # # # …