ソリューションへのリンク
ロボットの動きのシミュレーション:
シミュレーションは、ロボットの初期位置と速度を含むロボット データを解析することから始まります。各ロボットのデータは、x 軸と y 軸に沿った位置と速度の要素であるタプル (p_x、p_y、v_x、v_y) として表されます。
シミュレート機能は、次の式を使用して t 秒後のロボットの新しい位置を計算します。
p_x = (p_x + t * v_x) % width p_y = (p_y + t * v_y) % height
この式はロボットの動きを考慮し、タイム ステップごとに位置を更新し、ロボットがエッジを越えた場合はグリッドを包み込みます (モジュロ演算により)。その後、ロボットは更新された位置でグリッドに戻されます。
象限カウンティング:
t = 100 でロボットをシミュレーションした後、コードはグリッドの 4 つの象限のそれぞれにあるロボットの数をカウントします。グリッドは、それぞれグリッドの幅と高さの半分として計算される middle_row_gap と middle_column_gap に基づいて四分円に分割されます。
100 秒後の各ロボットの位置 (x, y) について、プログラムはロボットがどの象限を占めているかをチェックします。
その後、Math.prod() 関数を使用して 4 象限の合計の積を取得します。
私はこのタスクに関していくつかの仮定を立てました。たとえば、形成される画像は中央/中央に配置されるでしょう。形を作るとき、ロボットはすべて一緒に凝縮され、ツリーを形成する必要があります。
ロボットは予測可能な方法で移動し、時間の経過とともにその位置が特定の形状を形成する可能性があります。 「クリスマス ツリー」パターンを検出するために、プログラムはロボットが木の形に似た密集したフォーメーションを形成する時間を探します。このアプローチは、ロボットがグリッドの特定の領域にいつ集まるかを見つけることに焦点を当てています。
プログラムは、すべてのロボットの周囲に大きな境界ボックスを定義することから始まります。このボックスのサイズは時間の経過とともに徐々に小さくなります。このアイデアは、時間の経過とともに、ロボットがより小さな領域にグループ化されるというものです。
各時間ステップ (ロボットの各位置) について、プログラムはこの縮小ボックス内にロボットが何台いるかを計算します。これは、ボックス内のロボットの数をボックスの面積で割った密度を測定します。ボックス内のロボットの数が増えるほど、密度は高くなります。
プログラムは密度が最も高い時間を追跡します。密度が最大のとき、ロボットは最も密に詰め込まれており、これはロボットが認識可能な形状 (クリスマス ツリー) を形成しているときと考えられます。
この方法が機能するのは、「クリスマス ツリー」パターンによりロボットがグリッドの特定の領域に集まるためです。境界ボックスを縮小し、その領域内のロボットの密度を計算することで、プログラムはロボットがいつこのコンパクトな形状を形成するかを識別できます。密度が最も高いということは、ロボットが最も緊密にグループ化されていることを示しており、これはクリスマス ツリーの形成に対応します。
したがって、密度が最も高いタイム ステップは、ロボットがクリスマス ツリーのパターンを作成するときです。
いつものように、Twitter でお気軽に連絡してチャットしてください
以上がコードデーの到来 : トイレ要塞の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。