グリッド内で動くボールが与えられた場合、ボールはどの正方形に到達しますか?


7

mxnグリッドが与えられます。無次元のボールがグリッドの1つの正方形の中心に配置され、4つの方向(北東、北西、南東、または南西)のいずれかで動き始めます。ボールはボードの端に到達するまで動き続け、その時点でボールは物理法則に従って跳ね返ります。

ボールがすべてのマスに届かない例。

m、n、ボールの初期位置と方向(NE / NW / SE / SW)が与えられた場合、ボールが指定されたターゲットグリッドの正方形(x0、y0)に到達するかどうかを判断できますか?

ボールの動きを徹底的にたどることによって質問に答えることは可能ですが、もっと簡単なより効率的な方法はありますか?関連文献へのポインタも大歓迎です。


4
これらのタイプの問題に取り組む標準的な方法は、グリッドを無限に拡張することです。壁で跳ね返るボールは、同じグリッドのミラーバージョンに直線で続いているボールと実際に同じです。
Tom van der Zanden、2015年

回答:


6

ボールの動きを徹底的にトレースすることは、プログラムするのが最も簡単であり、効率の観点からも悪くありません。以前に見られたボールのすべての状態のハッシュテーブルを保持する必要があります(ボールの状態は、それが置かれているグリッドの正方形であり、どの方向に向かっているか); 過去の状態を繰り返すことがわかった場合は、それが永久にループし、動きの追跡をこれ以上停止することができます。この方法では、ボールの動きをトレースするのに最大でO(mn) 最悪の場合の時間。

これは、少し単純な代数を使用して「現在の状態を考えると、ボールが次にヒットする壁は何ですか」を計算することでスピードアップできます。にO(1) 時間-それは速くなりますが、簡単ではありません。


数論と、グリッドを無限に拡張するTom Van der Zandenの手法に基づいた、よりエレガントで効率的なソリューションがあります。

ボールが無限のグリッドで直線的に移動する平行宇宙を想像してください。トムが言うように、私たちの宇宙の壁を跳ね返ることは、平行宇宙で直線を続けることと同じです。これが私たちが使用する最初の洞察です。

この洞察の意味を理解しましょう。私たちの宇宙では、ボールはある初期座標で始まります(x0,y0)、NEを移動し、座標に到達するかどうかを知りたい (x,y)。これは無限の宇宙で何を意味しますか?さて、地雷を座標に配置することを想像してください(x,y)(x,2ny)(x,y+2n)(x,4ny)、...、 (2mx,y)(2mx,2ny)、...-特に座標で (2im±x,2jn±y) どこ i,jすべての整数の範囲。その後、ボールは最終的に座標に到達すると主張します(x,y)宇宙でボールが最終的に地雷に当たる場合に限ります。ですから、私たちの問題は、次のように質問することになります。平行宇宙では、ボールが地雷に当たることはありますか?

2番目の洞察は、その理論に答えるために数論を使用できるということです。特に、後t 時間の単位、ボールは位置にあります (x0+t,y0+t)平行宇宙で。整数が存在するかどうかを知りたいt,i,j そのような x0+t=2im±x そして y0+t=2jn±y。これらの方程式を並べ替え、モジュラー演算の言語を使用して、整数が存在するかどうかを尋ねていますt 次の式の両方が成り立つように:

t±xx0(mod2m),t±yy0(mod2n).

これで、数論を適用する準備が整いました。特に、これは中国の剰余定理を適用するために完全に設定されています。定義するg=2gcd(m,n)。次に、上記の連立方程式は、次の場合にのみ整数の解を持ちます。

±xx0±yy0(modg).

つまり、次の4つの条件を確認する必要があります。

  • xx0yy0(modg)
  • xx0yy0(modg)
  • xx0yy0(modg)
  • xx0yy0(modg)

これらの4つの条件のいずれかが成立する場合、上記の連立方程式の解が存在するため、平行宇宙ではボールが地雷に当たります。これら4つの条件のいずれにも当てはまらない場合は、ボールが地雷に当たることはありません。(これらの4つの条件は、ボールが最初にNEを移動する場合の関連条件です。他の方向は、同様の4つの条件のセットで対称的に処理できます。)

元の問題を言い換えると、簡単に実装して実行できる元の問題の解決策が得られます O(1)時間。計算しますg=2gcd(m,n)上記の箇条書きの4つの条件を確認してください。4つの条件のいずれかに当てはまる場合、答えは「はい」です。ボールは最終的にポイントに到達します(x,y)。4つの条件のいずれにも当てはまらない場合、答えは「いいえ」です。ボールはポイントに到達しません。(x,y)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.