JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. JavaScriptで合計が指定値と一致するトリプレットをすべて見つける方法

    この記事では、数値の配列を第1引数として、目標値となる数値を第2引数として受け取り、合計が目標値と一致するすべてのトリプレット(3つの数の組み合わせ)を配列にまとめて返すJavaScript関数の作り方を解説します。トリプレットを構成する3つの要素は、配列内で隣接している必要はなく、離れた位置にある要素同士の組み合わせでも問題ありません。入力例と期待される出力たとえば、次のような配列と数値が与えられたとします。const arr = [4, 2, 0, 1, 2, 6, 8, 3, 2, 5];const num = 8;この場合、出力される配列は次のようになります。const output

  2. JavaScriptで配列に存在しない最小の正の整数を見つける方法

    JavaScriptでは、整数の配列を第一引数(唯一の引数)として受け取る関数を作成する必要があります。この関数の役割は、配列に存在しない最小の正の整数を見つけて返すことです。問題の例たとえば、入力配列が次のような場合を考えてみましょう。const arr = [4, 2, -1, 0, 3, 9, 1, -5];このとき、期待される出力は次のとおりです。const output = 5;理由は簡単です。1、2、3、4はすでに配列内に存在していますが、5は配列に含まれていないため、存在しない最小の正の整数となります。なお、負の数(-1、-5)や0は正の整数ではないため、答えの候補からは除外され

  3. JavaScriptでソート済みの2次元配列を二分探索アルゴリズムで検索する方法

    この記事では、数値の配列の配列(2次元配列)を第1引数に、検索対象の数値を第2引数として受け取るJavaScript関数を作成します。各サブ配列(内側の配列)には昇順にソートされた数値が格納されており、さらに前のサブ配列のどの要素も、後続のサブ配列のどの要素よりも大きくならないものとします。つまり、2次元配列全体が行ごとにも全体としても昇順に並んでいる状態です。この関数は二分探索(バイナリサーチ)アルゴリズムを使用し、ソートされた配列の中から指定された要素を効率的に検索します。要素が存在する場合は true を、存在しない場合は false を返します。入力例たとえば、入力配列が次の場合を考え

  4. JavaScriptで配列から1要素を削除して奇数・偶数インデックスの合計を等しくする方法の数を求める

    数値の配列を唯一の引数として受け取るJavaScript関数を作成することを目標としましょう。 この関数は、配列から1つの要素を削除したときに、奇数インデックスの要素の合計と偶数インデックスの要素の合計が等しくなるような削除方法を探します。さらに、条件を満たすすべてのユニークな削除方法の個数をカウントして返す必要があります。 具体例で理解する 入力配列が次の場合を考えてみます。 const arr = [2, 6, 4, 2]; このときの出力は 2 になります。これは、インデックス1の「6」とインデックス3の「2」の、2つの要素がそれぞれ削除対象として条件を満たすためです。 6 を削除した

  5. JavaScriptで3種類の要素のみを含む配列を線形時間O(n)でソートする方法

    次のような、-1、0、1 の3種類の値だけが任意の頻度で含まれる数値配列を考えてみましょう。const arr = [1, 1, 0, -1, 1, 0, -1, 1, 0, 0, 1];このような配列を引数として受け取り、余分な配列を使わずに(インプレースで)ソートするJavaScript関数を作成します。ただし、重要な条件が1つあります。それは、関数が線形時間 O(n) で動作すること、つまり配列をたった1回の走査でソートを完了させなければならないという点です。解決のポイント:3つのポインタを使った領域分割この問題は、有名な「オランダ国旗問題(Dutch National Flag Pro

  6. JavaScriptでソート済みの区間配列に新しい区間を挿入する方法

    区間とは何かこの記事では、「区間(インターバル)」を、2つの数値からなる配列のうち、最初の数値が必ず2番目の数値よりも小さいものとして定義します。例えば、以下はすべて有効な区間です。[4, 6], [2, 3], [6, 8], [2, 7], [1, 8]問題の概要ここで、各区間の開始時刻(各区間の最初の要素)に基づいてソートされた区間の配列があると仮定します。さらに、この配列内の区間は互いに重なり合っていないものとします。つまり、隣り合う任意の2つの区間については、次の関係が常に成り立ちます。[m, n], [x, y] のときm < n < x < yしたがって、条件を

  7. 【JavaScript】配列の数値を組み合わせて最大の数を作る方法

    今回は、数値の配列を第一引数(唯一の引数)として受け取るJavaScript関数を作成します。この関数の役割は、配列内の数値を最適な順序で連結し、それらの数値から作り得る最大の数値を文字列として返すことです。 具体例 例えば、入力配列が次のような場合を考えてみましょう。 const arr = [5, 45, 34, 9, 3]; このとき、期待される出力は以下の通りです。 const output = 9545343; 注目すべき点として、単純に数値の大小で降順ソートするだけでは不十分なケースがあることが挙げられます。例えば「45」と「5」を比較すると、数値としては45の方が大きいですが、連

  8. JavaScriptの配列で特別な条件を満たす要素ペアを見つける方法

    課題の概要 JavaScriptでは、次の3つの引数を受け取る関数を作成する課題があります。 arr → 整数の配列 m → 正の整数 n → 正の整数 この関数の目的は、配列内に次の両方の条件を満たす2つの要素(a1・a2と呼びます)が存在するかどうかを判定することです。 値の条件: a1とa2の値の絶対差がn以内であること 位置の条件: a1とa2のインデックス(添字)の絶対差がm以内であること 言い換えれば、「値が近く、かつ配列上の位置も近いペア」が存在するかを調べる処理です。この種の問題は、一定範囲内にある近接重複(nearby duplicate)を検出する問題としてよく

  9. JavaScriptで引用データからh指数(h-index)を計算する方法

    ある研究者が一定期間に受けた被引用数を表す正の整数の配列があるとします。ここでは、このような配列を引数として受け取り、配列が表す引用データに基づいてその研究者のh指数(h-index)を求めるJavaScript関数を作成する必要があります。h指数(h-index)とは?h指数は、研究者の業績を測る指標の一つです。ある研究者がキャリアの中で合計N本の論文を発表したと考えます。このとき、N本のうちh本の論文がそれぞれ少なくともh回引用されており、残りのN − h本の論文がそれぞれh回以下しか引用されていない場合、その研究者のh指数はhであると定義されます。具体例引用数の配列が次のようになっている

  10. 【JavaScript】配列を交互に並べ替えるソート関数の実装方法

    交互ソートとは? JavaScriptで、数値の配列を唯一の引数として受け取る関数を作成することを考えます。この関数の目的は、配列内の要素を交互(alternating)な順序に並べ替えることです。 ここでいう「交互」とは、次のようなパターンを意味します。 たとえば、配列arrが4つの要素を持っているとすると、関数は配列の要素を次の条件を満たすようにシャッフルしなければなりません。 arr[0] < arr[1] > arr[2] < arr[3] つまり、「小さい→大きい→小さい→大きい…」という波形のような並びを目指します。なお、1つの配列に対して条件を満たす答えは複数

  11. JavaScriptで重複要素を含む2つの配列の共通部分を効率的に求める方法

    はじめにJavaScriptでは、2つの数値配列(arr1とarr2)を受け取り、それらに共通するすべての要素を集めた新しい配列を作成する関数が必要になることがあります。ここで重要なのは、同一の要素が両方の配列に複数回存在する場合、その出現回数分だけすべてのインスタンスを結果に含めなければならないという点です。単純な重複排除型の積集合とは異なり、各要素の出現の出現頻度を正しく扱う必要があります。入力例と期待される出力const arr1 = [1, 2, 2, 4, 4, 5, 6];const arr2 = [3, 2, 4, 2, 4, 9];この場合、出力は次のようになります。const

  12. JavaScriptで同じ文字が隣接しないように文字列を並べ替える方法

    JavaScriptで、文字列を第一引数(唯一の引数)として受け取る関数を作成することを考えます。この関数の役割は、文字列に含まれる各文字を並べ替え、同一の文字が隣り合わないように再配置することです。そのような組み合わせが少なくとも1つ存在する場合は、結果となる文字列を返します。もし条件を満たす並べ方が存在しない場合は、空文字列()を返します。具体的な例を見てみましょう。入力文字列が次の場合:const str = add;関数の出力は次のようになります:const output = dad;アルゴリズムの考え方この問題を解くポイントは以下の通りです。まず各文字の出現回数をハッシュマップでカウ

  13. 【JavaScript】偶数と奇数をそれぞれ偶数番目・奇数番目のインデックスに並べ替える方法

    問題の概要 数値の配列を受け取り、その要素を並べ替えるJavaScript関数を作成する必要があります。関数に入力される配列には、次の2つの特別な性質があります。 配列の長さは必ず偶数である。 配列内の偶数の個数と奇数の個数は常に等しい(つまり、どちらも配列の長さの半分と一致する)。 この関数は、配列の要素をシャッフルし、すべての偶数が偶数番目のインデックス(0, 2, 4…)に、すべての奇数が奇数番目のインデックス(1, 3, 5…)に配置されるようにしなければなりません。 なお、この問題には正解が複数存在する場合があります。そのため、正しい答えのどれか1つを見つけられれば十分です。

  14. JavaScriptでASCII文字列を16進数に変換する方法

    JavaScriptでは、文字列として与えられたASCIIコードを、対応する16進数(ヘックス)コードへ変換する関数を簡単に実装できます。本記事では、文字列を受け取り、その各文字に対応する16進数コードを連結して返す関数の作り方を解説します。変換の仕組み例えば、入力となるASCII文字列が次の通りだとします。const str = 159;この場合、各文字の文字コードを16進数に変換すると、出力は「313539」になります。具体的な対応関係は以下の通りです。1 の文字コードは 49(10進数)→ 31(16進数)5 の文字コードは 53(10進数)→ 35(16進数)9 の文字コードは 57(

  15. JavaScriptで文字列からアルファベット以外の文字をすべて削除する方法

    JavaScriptでは、文字列を受け取り、そこからアルファベット(英字)以外の文字をすべて取り除いた新しい文字列を作成して返す関数が必要になる場面があります。ただし、文字列に含まれる空白(スペース)は削除せず、そのまま残すものとします。 処理の例 たとえば、入力文字列が以下の場合を考えてみましょう。 const str = he@656llo wor?ld; このとき、期待される出力は次のとおりです。 hello world 実装コード 以下が実際のコード例です。 const str = he@656llo wor?ld; // 英字または半角スペースかどうかを判定する関数 const i

  16. JavaScriptで直角三角形の斜辺を計算する方法

    JavaScriptで直角三角形の斜辺を求める今回は、2つの数値を受け取るJavaScript関数を作成します。1つ目の引数は直角三角形の底辺の長さ、2つ目の引数は高さ(垂直な辺)の長さを表します。関数は、これらの値をもとに斜辺の長さを計算して返します。斜辺の長さは、有名な「三平方の定理(ピタゴラスの定理)」を使って求められます。斜辺² = 底辺² + 高さ²例たとえば、底辺が8、高さが6の場合、斜辺は次のように計算できます。底辺 = 8、高さ = 68² + 6² = 64 + 36 = 100√100 = 10したがって、この場合の出力は 10 になります。コード例以下が実際のコードです。

  17. JavaScriptで数値をインド式通貨表現(Lakh・Crore対応)の英単語に変換する関数の作成方法

    はじめに本記事では、小数点以下2桁までの浮動小数点数を受け取り、その数値をインド式通貨表現(英語の単語)に変換するJavaScript関数の実装方法を解説します。インドの数値体系では、欧米とは異なり「Thousand(千)」以降、「Lakh(ラーク=10万)」、「Crore(クロール=1,000万)」という独自の位取り単位が使用されます。そのため、一般的な英語の数値変換ロジックとは別の処理が必要になります。実装イメージ例えば、入力として次の数値が与えられた場合を見てみましょう。const num = 12500;このとき、期待される出力は以下のとおりです。const output = Twel

  18. JavaScriptで文字列の全組み合わせを生成する関数の書き方

    今回は、文字列を唯一の引数として受け取り、その文字を組み合わせて作れるすべてのパターンを配列として返すJavaScript関数の作り方を解説します。たとえば「Delhi」という文字列が渡されれば、「D」「De」「Deh」…「Delhi」のように、各文字を選ぶ・選ばないを組み合わせた全31通りの文字列が生成されます。仕組みのポイントこの実装の核となるのはビット演算です。まず文字列を1文字ずつに分解して配列に格納し、0から 2n−1(nは文字数)までの整数を順に走査します。各整数を2進数のビットパターンとみなし、ビットが立っている位置に対応する文字だけを連結することで、重複なくすべての組み合わせを

  19. JavaScriptで文字列に含まれる母音の数を数えて返す方法

    ここでは、アルファベットを含む可能性のある文字列を引数として受け取り、その文字列の中に存在する母音(a・e・i・o・u)の個数を数えて返すJavaScript関数の作成方法を解説します。実装のポイントは以下の通りです。大文字・小文字の違いを吸収するため、toLowerCase()で文字列をすべて小文字に変換します。母音の一覧「aeiou」を判定基準(legend)として用意します。文字列を1文字ずつループで走査し、母音リストに含まれる文字であればカウントを増やします。サンプルコード以下が実際のコード例です。 {    str = str.toLowerCase(); &nb

  20. JavaScriptでn次の単位行列を生成する方法

    単位行列とは単位行列(Identity Matrix)とは、対角成分(左上から右下にかけての斜めの要素)がすべて「1」であり、それ以外の要素がすべて「0」である n × n の正方行列のことです。線形代数において非常に重要な行列で、行列の乗算における「1」のような役割を果たします。例えば、3次の単位行列は以下のように表されます。const arr = [     [1, 0, 0],     [0, 1, 0],     [0, 0, 1] ];今回は、数値 n を引数として

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:35/297  20-コンピューター/Page Goto:1 29 30 31 32 33 34 35 36 37 38 39 40 41