チェス盤のサイズと騎士の初期位置を考慮して、k
移動後に騎士がチェス盤の内側になる確率を計算します。
注意:
騎士は、等しい確率で8つの可能なすべての動きをします。
騎士がチェス盤の外に出ると、内部に戻ることはできません。
入力
入力は次の形式のカンマ区切りです:
l,k,x,y
ここl
で、チェス盤の長さと幅k
、ナイトの移動数、ナイトx
の初期位置のx位置、ナイトの初期位置のy
y位置です。0,0
は、ボードの左下隅であり、ボードのl-1,l-1
右上隅であることに注意してください。
アルゴリズム:
ナイトの初期座標から始めます。この位置で可能なすべての動きを行い、これらの動きに確率を掛けます。各動きが関数を再帰的に呼び出すと、終了条件が満たされるまでこのプロセスを続けます。終了条件は、ナイトがチェス盤の外にある場合、この場合は0を返すか、必要な移動数が使い果たされた場合、この場合は1を返します。
再帰の現在の状態は、現在の座標とこれまでに実行されたステップ数にのみ依存していることがわかります。したがって、この情報を表形式で記憶できます。
クレジット
このチャレンジはもともと、CC BY-NC-ND 2.5 INライセンスの下で公開されたcrazyforcode.comのブログ投稿からのものです。少し変更して、少し難しくしました。