JavaScriptで虚数単位i(イオタ)のn乗の値を求める方法
問題
数値 n を受け取り、虚数単位 i の n 乗(in)の値を返すJavaScript関数を作成する必要があります。
ここで、虚数単位 i は次のように定義されます。
i = (-1)1/2
したがって、i のべき乗は以下のように4を周期として循環します。
i1 = i i2 = -1 i3 = -i i4 = 1(以降繰り返し)
解決のアプローチ
i のべき乗は4回ごとに同じ値に戻るため、巨大な指数を実際に計算する必要はありません。そこで、剰余演算子(%)を使って n を 4 で割った余り を求め、その結果に応じて答えを判定します。
- n % 4 === 0 → 「1」
- n % 4 === 1 → 「i」
- n % 4 === 2 → 「-1」
- n % 4 === 3 → 「-i」
コード例
以下が実際のコードです。
const num = 657;
const findNthPower = (num = 1) => {
switch(num % 4){
case 0:
return '1';
case 1:
return 'i';
case 2:
return '-1';
case 3:
return '-i';
};
};
console.log(findNthPower(num));
出力
i
解説
この例では num = 657 であり、657 ÷ 4 の余りは 1 となるため、関数は「i」を返します。つまり、i657 = i という結果になります。
この手法のポイントは、指数がどれほど大きな数であっても、一度の剰余演算と switch 文だけで定数時間 O(1) で答えを導き出せることです。複素数ライブラリを使わずに済むため、シンプルかつ高速に処理できます。
-
JavaScriptで<text>要素の値を変数に抽出する方法
JavaScriptで要素の値を変数に抽出するにはSVGの<text>要素のテキスト値を変数に抽出したい場合は、textContentプロパティを使用します。基本的な書き方は以下の通りです。document.getElementById(yourTextIdValue).textContentgetElementById()メソッドで対象の要素をIDから取得し、そのtextContentプロパティを参照することで、要素内のテキストを文字列として変数に格納できます。textContentとinnerHTMLの違いなお、SVG要素の場合はinnerHTMLよりもtextContentを
-
SeleniumでJavaScriptコードの戻り値を取得する方法
Selenium WebDriverを使用すると、JavaScriptコードの戻り値を取得することができます。SeleniumはexecuteScriptメソッドを利用してJavaScriptコマンドを実行でき、実行したいJavaScriptコマンドはこのメソッドの引数として渡します。 JavaScriptコードから値を返す際にはreturnキーワードを使用します。また、JavaScriptを操作するためには、import org.openqa.selenium.JavascriptExecutorというインポート文を追加する必要がある点にも注意してください。 構文 JavascriptEx