IBM PC AT、YouTube(ビデオを参照)、Wikipedia(記事を参照)、およびSesame Street から学んだように:
手紙H
はアルファベットの中で最も容赦ない手紙です!
(実際にコードページ437の 2つの要素で構成されている場合でも、実際にはそのように無慈悲です。)
エイリアンのように、ええと... エイリアン、ビーストはたまらなく卵の近くに来る人すべてを執pursueに追い求めます。彼らには理由はありません。滅びないようにするには、それらをつぶさなければなりません。
このシナリオでは、あなたはあなたの最後の生命まで落ちており、卵のない地形で平野の獣に会ったと仮定します(Wikipediaのスクリーンショットのように)。数字キーパッドはなく、直接上下左右に移動することしかできません...しかし、獣には明らかに1つがあり、ターン中に斜めに移動できます。
ビーストの選択肢の中からの移動の選択は、プレイヤーからの距離を最小にするものになります。距離が等しければ、タイブレークは左+上より右+下を優先して行われますが、明確にするための曖昧さ除去マトリックスは...
1 3 4
2 H 5
6 8 7
獣は眠ることはありませんが、幸いにもプレイヤーより少し遅いです。彼らは1ターンおきに移動します(2ターン目に交替を開始することにより、プレーヤーに有利なスタートを与えます)。移動が可能であれば、プレイヤーからさらに遠ざかるかに関係なく、移動する必要があります。
閉じた隙間に座っていた可動壁の列を移動すると、獣をつぶします。これらの普通の獣は、頭に2ポイントの価値があります。
入力
列と行でマップのサイズを示す整数のペア。
入力の行の行数。各列サイズは、固体壁(
#
)、可動壁(~
)、獣(H
)、プレイヤー(O
)、またはスペースのみを含みます。プレイヤーが移動しようとしたことを示すU、D、L、R、または単に待機するWの入力。ブロックされている可動壁を押し込もうとすることは合法的な入力であり、アクションを起こさないことに注意してください。
出力
aHHHH!
獣がプレイヤーを殺した場合...またはプレイヤーが獣を残さずに勝った場合は何もありませんスコア
(注:デバッグや娯楽のために、各ステップで状態を出力できるようにしたい場合がありますが、ここに投稿するには長すぎます。)
明確化
マップは、固体の壁で囲まれていることが保証されています。
誰が順番に移動するかは、結果にとって重要です。したがって、プレイヤーは常に最初に移動し、画面上を左から右にスイープしている場合、獣には最初のマップ位置に基づいた順序が与えられます。(行1の獣は行2の獣の前に移動し、同じ行の2つの獣は、列番号が最も小さいものが他方の前に移動します)
斜めに動く獣は、壁の間を絞る必要があるかどうかに関係なく、開いている隣接する斜めのスペースに移動できます。
プレイヤーは、もう一方の端にスペースまたは獣がある限り、任意の数の可動壁を一列に押すことができます。しかし、壁の間に固定されていない獣に壁の列を押し込もうとすると、獣は壁として扱われ、移動は許可されません。
ターン中の獣の移動の決定は、ターン開始時のプレイヤーの位置に基づきます。「プレーヤーまでの距離」の望ましい最適化は、「カラスが飛ぶように」計算によるものです。正方形の中心からプレーヤーの正方形の中心までを測定した場合と同じ結果が得られる近似は問題ありません。
優先順位の高いビーストがスポットを奪ったために、ビーストがそのターンで最初に好まれた動きをすることができない場合、その場所にとどまるのではなく、次の最良の選択をします(動きがまだ可能である場合)。
サンプルケース
シンプルクラッシュ
入力
5 3
#####
#O~H#
#####
R
出力
2
優先マトリックス->死
入力
5 5
#####
#O #
# ~ #
# H#
#####
WWDW
出力
aHHHH!
0
優先マトリックス->勝利
入力
5 5
#####
#O #
# ~ #
# H#
#####
WRD
出力
2
死神を待つ
入力
5 5
#####
#O #
# ~ #
# H#
#####
WWW
出力
aHHHH!
0
ウィキペディアのシナリオで成功した敗北
入力
40 23
########################################
#~ ~ ~~ ~ ~ ~~ ~ ~~ ~ ~ ~~ #
#~~ ~ ~~ ~ ~ ~~ ~ #
#~# ~~ ~~~~ ~ ~~~~ ~ ~~~ ~#
# ~ ~ ~ ~~ #~~ ~ #
#~~ ~~~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~~~ H ~ #~ #
# O~ ~ # ~~~ ~ ~ ~~ ~ ~ ~~ #
# ~ ~H~~ ~~ ~ # ~~ ~ #
# ~~ ~ ~~~ ~~ ~~~~ ~ ~#
#~ ~ ~~~ ~ ~ ~ ~ ~~ ~~#
# ~ # ~ ~~ ~~~ ~ ~ ~ # ~#
#~ ~ ~~ ~ ~ H ~~ ~~ ~ ~ ~~~ #
# ~ ~ ~ ~ ~ ~~~ ~ #
# ~~ ~ ~ ~~ ~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~ ~~ #
#~ ~ # ~~~~ ~ ~~~H # ~ #
# ~ ~ ~ ~ ~ ~~ ~ #
# ~ ~ #~ ~ ~~ ~ ~ ~#
# ~~ ~ ~ ~~ ~ ~ #
# ~~~ ~ ~~ ~ ~ ~ ~ #
# ~ ~ ~ ~~ ~ ~ ~ #
########################################
RRRUWWWRRRURWWWWRDRRWWRDWWWWD
出力
8
私から提供されたマップ、@ bobbelによる移動と出力、自分と@Allbeertによる裏付け。
受賞基準
これはゴルフに適していると思うので、人々が文句を言わない限り、私はコードゴルフのルールを使います。
追加クレジット
画像に似た倍幅文字を使用した再生可能なUnicode実装!