874。歩行ロボットシミュレーション
難易度: 中
トピック: 配列、ハッシュ テーブル、シミュレーション
無限 XY 平面上のロボットは、北を向いた点 (0, 0) から開始します。ロボットは、次の 3 種類のコマンドのシーケンスを受け取ることができます:
- -2: 左に90度回転します。
- -1: 右に 90 度回転します。
- 1
グリッドのマス目の一部は障害物です。 i 番目の障害物は格子点障害物[i] = (xi, yi)にあります。ロボットが障害物に遭遇した場合、ロボットは現在の位置に留まり、次のコマンドに進みます。
ロボットが原点から取得する 最大ユークリッド距離を 二乗 で返します (つまり、距離が 5 の場合は 25 を返します)。
注:
- 北とは +Y 方向を意味します。
- 東は +X 方向を意味します。
- 南は -Y 方向を意味します。
- 西とは -X 方向を意味します。
- [0,0] に障害物がある可能性があります。
例 1:
- 入力: コマンド = [4,-1,3]、障害物 = []
- 出力: 25
-
説明: ロボットは (0, 0) から開始します。
- (0, 4) まで北に 4 単位移動します。
- 右折してください。
- 東に 3 ユニット移動して (3, 4) に移動します。
- ロボットが原点からこれまでに到達した最も遠い点は (3, 4) で、その 2 乗は 32 + 42 = 25 単位離れています。
例 2:
- 入力: コマンド = [4,-1,4,-2,4]、障害物 = [[2,4]]
- 出力: 65
-
説明: ロボットは (0, 0) から開始します。
- (0, 4) まで北に 4 単位移動します。
- 右折してください。
- 東に 1 ユニット移動すると (2, 4) の障害物にブロックされます。ロボットは (1, 4) にいます。
- 左折してください。
- 北に 4 単位移動して (1, 8) に移動します。
- ロボットがこれまでに原点から到達した最も遠い点は (1, 8) であり、その 2 乗は 12 + 82 = 65 単位離れています。
例 3:
- 入力: コマンド = [6,-1,-1,6]、障害物 = []
- 出力: 36
- 説明: ロボットは (0, 0) から開始します。
- (0, 6) まで北に 6 単位移動します。
- 右折してください。
- 右折してください。
- 南に 6 ユニット移動して (0, 0) に移動します。
- ロボットが原点から到達した最も遠い点は (0, 6) で、その 2 乗は 62 = 36 単位離れています。
制約:
- 1 4
- コマンド[i]は、-2、-1、または範囲[1, 9]の整数です。
- 0 4
- -3 * 104 i, yi 4
- 答えは 231 未満であることが保証されています
解決策:
一連のコマンドに基づいて無限の 2D グリッド上でロボットの動きをシミュレートし、障害物がある場合はそれを回避する必要があります。目標は、ロボットが原点から到達する最大ユークリッド距離の 2 乗を決定することです。
アプローチ
-
方向処理:
- ロボットは、北、東、南、西の 4 つの方向のいずれかを向くことができます。
- これらの方向はベクトルとして表すことができます。
- 北: (0, 1)
- 東: (1, 0)
- 南: (0, -1)
- 西: (-1, 0)
-
方向転換:
- 左折 (-2) と方向が反時計回りに 90 度変わります。
- 右折 (-1) すると、方向が時計回りに 90 度変わります。
-
動き:
- 移動コマンドごとに、ロボットは現在の方向に一度に 1 ユニットずつ移動します。障害物に遭遇すると、そのコマンドに対して動きを停止します。
-
障害物の追跡:
- 迅速な検索のために障害物リストをタプルのセットに変換し、ロボットが障害物に衝突するかどうかを迅速に判断できるようにします。
-
距離計算:
- ロボットが動作中に到達する原点からの最大二乗距離を追跡します。
このソリューションを PHP で実装してみましょう: 874。歩行ロボットシミュレーション
<?php /** * @param Integer[] $commands * @param Integer[][] $obstacles * @return Integer */ function robotSim($commands, $obstacles) { ... ... ... /** * go to ./solution.php */ } // Test cases echo robotSim([4,-1,3], []) . "\n"; // Output: 25 echo robotSim([4,-1,4,-2,4], [[2,4]]) . "\n"; // Output: 65 echo robotSim([6,-1,-1,6], []) . "\n"; // Output: 36 ?>
説明:
- 方向管理: ベクトルのリストを使用して方向を表すため、移動後の次の位置を簡単に計算できます。
- 障害物検出: 障害物をセットに保存することで、位置が障害物によってブロックされているかどうかを確認するための時間計算量は O(1) になります。
- 距離計算: ロボットが移動する際に到達する最大二乗距離を継続的に更新します。
テストケース
- 提供されているサンプル テスト ケースは、ソリューションを検証するために使用されます。
- 障害物がない [4,-1,3] は 25 を返すはずです。
- [4,-1,4,-2,4] に障害物 [[2,4]] がある場合、65 が返されるはずです。
- 障害物がない場合、[6,-1,-1,6] は 36 を返すはずです。
このソリューションは問題の制約を効率的に処理し、必要に応じて最大距離の二乗を計算します。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
- GitHub
以上が。歩行ロボットシミュレーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1
使いやすく無料のコードエディター
