数値のムーンサム(月の和)を求める方法 – JavaScript
ムーンサムとは?
「ムーンサム(Lunar Sum、月の和)」とは、2つの数値の合計を計算する際に、通常のように対応する桁同士を足し合わせるのではなく、各桁を比較してより大きい方の数字を採用するという特殊な計算方法です。
例を見てみましょう。
a = 879 と b = 768
(この問題では、両方の数値が同じ桁数であるものとします。)
この場合、a と b のムーンサムは次のようになります。
879
これは、各桁を比較すると「8 > 7」「7 > 6」「9 > 8」となり、それぞれ大きい方の数字が採用されるためです。
JavaScriptでの実装
ここでは、2つの数値を受け取ってそのムーンサムを返すJavaScript関数を作成します。
実装の手順は以下のとおりです。
- それぞれの数値を文字列に変換する
- 同じ位置の桁を1つずつ比較し、大きい方の値を取得する
- 結果を上の桁から順につなぎ合わせて最終的な数値を組み立てる
実際のコードは以下のようになります。
const num1 = 6565;
const num2 = 7385;
const lunarSum = (num1, num2) => {
const numStr1 = String(num1);
const numStr2 = String(num2);
let res = 0, temp;
for(let i = 0; i < numStr1.length; i++){
temp = Math.max(+numStr1[i], +numStr2[i]);
res = (res*10) + temp;
};
return res;
};
console.log(lunarSum(num1, num2));
コードの解説
String()で数値を文字列化することで、インデックスを使って各桁に簡単にアクセスできます。ループ内ではMath.max()を使って同じ位置の桁を比較し、大きい方の値を取得します。その後、res = res * 10 + tempという計算を繰り返すことで、結果の数字を左から順に組み立てていきます。
実行結果
このコードを実行すると、コンソールには次の出力が表示されます。
7585
入力「6565」と「7385」の場合、各桁を比較すると 7・5・8・5 となるため、ムーンサムは「7585」になります。
-
JavaScriptで目標の平均値を達成するために必要な数値を求める方法
この記事では、JavaScriptを使って「配列にあと1つ数値を追加したときに、その平均値が指定した目標値と一致するような数」を求める方法を解説します。 問題の概要 数値の配列と、単一の数値(目標平均値)を受け取るJavaScript関数を作成します。 この関数は、その数値を配列に追加することで、配列全体の平均が第2引数で指定された値と等しくなるように、追加すべき数値を返す必要があります。 解決の考え方 平均値の定義に立ち返ると、答えは簡単な算術で導き出せます。 まず現在の配列の合計値を求めます。 新しい要素を1つ追加すると、配列の長さは「元の長さ + 1」になります。 目標平均 × 新しい
-
JavaScriptで数列の和を計算する方法
問題次のような級数の和を考えてみましょう。$$seq(n,\:p)=\displaystyle\sum\limits_{k=0}^{n}(-1)^{k}\times\:p\:\times 4^{n-k}\:\times\frac{2n-k}{k}$$この問題では、数値 n と p を引数として受け取り、seq(n, p) の計算結果を返すJavaScript関数を作成することが求められます。この級数は以下の要素で構成されています。(-1)k: kが偶数なら正、奇数なら負となる交互符号p: 固定の係数4n-k: 4の冪乗(2n-k)/k: kに応じて変化する倍率解決策forループを使って k =