JavaScriptで配列を2分割し、部分配列の積の和を求める方法
問題の概要
JavaScriptで、長さN(Nは正の偶数)の数値配列を受け取り、その配列をそれぞれN/2個の要素を持つ2つの部分配列(左側と右側)に分割する関数を作成する必要があります。
次に、各部分配列内の要素の積を計算し、得られた2つの結果を合計して返します。
具体例
入力配列が以下の場合を考えてみましょう。
const arr = [1, 2, 3, 4, 5, 6]
この場合、出力は次のようになります。
(1 * 2 * 3) + (4 * 5 * 6) = 6 + 120 = 126
実装コード
この処理を実装したコードが以下です。配列のreduce()メソッドを使い、インデックスが配列長の半分未満かどうかで要素を振り分けながら、左右それぞれの積を計算しています。
const arr = [1, 2, 3, 4, 5, 6];
const subArrayProduct = arr => {
const { length: l } = arr;
const creds = arr.reduce((acc, val, ind) => {
let { left, right } = acc;
if(ind < l/2){
left *= val;
}else{
right *= val;
}
return { left, right };
}, {
left: 1,
right: 1
});
return creds.left + creds.right;
};
console.log(subArrayProduct(arr));コードの解説
- 初期値の設定:
reduce()の初期値として、leftとrightの両方を1(乗算の単位元)に設定します。これにより、掛け算の結果が正しく計算されます。 - 配列の分割: 各要素のインデックス(
ind)と配列長の半分(l/2)を比較することで、前半の要素はleftに、後半の要素はrightに順次掛けていきます。 - 結果の返却: ループ完了後、
creds.left(前半の積)とcreds.right(後半の積)を足し合わせて最終結果を返します。
実行結果
上記のコードをコンソールで実行すると、次の出力が得られます。
126
このように、reduce()メソッドを活用すれば、配列を分割しながら一度の走査で積の和を効率的に求めることができます。
-
【JavaScript】数値の各桁の「和」と「積」の差を求める方法
本記事では、JavaScript を使って、ある数値の各桁の合計(和)と各桁の乗算結果(積)の差を求める方法を解説します。最終的には、その差の絶対値を返す関数を作成します。 課題の内容 数値 n を引数として受け取る JavaScript の関数を作成します。この関数の役割は、次のとおりです。 数値を構成するすべての桁の合計を計算する 数値を構成するすべての桁の積を計算する 両者の差の絶対値を返す 例えば、数値が 434312 の場合、各桁の合計は「4 + 3 + 4 + 3 + 1 + 2 = 17」、各桁の積は「4 × 3 × 4 × 3 × 1 × 2 = 288」となり、差の絶対値
-
JavaScriptで合計が指定値と一致するバイナリ部分配列の個数を数える方法
問題最初の引数としてバイナリ配列 arr を、2番目の引数として数値 target を受け取る JavaScript 関数を作成します。この関数の役割は、配列 arr 内に存在する連続する部分配列のうち、要素の合計が target と一致するものの個数を数え、その結果を返すことです。たとえば、関数への入力が次の場合を考えてみましょう。入力const arr = [1, 0, 1, 0, 1]; const target = 2;出力const output = 4;出力の説明条件を満たす部分配列は、次の4つです。[1,0,1] [1,0,1,0] [0,1,0,1] [1,0,1]解法のアプロ