JavaScriptで偶数番目と奇数番目の桁の合計差を計算する方法
JavaScriptでは、数値を受け取り、偶数番目の位置にある桁の合計と奇数番目の位置にある桁の合計の差を返す関数を書く必要があります。
ここでの「位置」とは、最下位の桁(一の位)をインデックス0として、右から左へ数えたものです。偶数インデックスの桁は加算し、奇数インデックスの桁は減算し、最後に絶対値を取得します。
実装例
この処理を実現するコードは以下の通りです。
const num = 123456;
const alternateDifference = (num, res = 0, ind = 0) => {
if(num){
if(ind % 2 === 0){
res += num % 10;
}else{
res -= num % 10;
};
return alternateDifference(Math.floor(num / 10), res, ++ind);
};
return Math.abs(res);
};
console.log(alternateDifference(num));
出力結果
コンソールへの出力は以下のようになります。
3
コードの解説
この関数は再帰処理を用いて実装されており、仕組みは以下の通りです。
num % 10によって、現在の最下位の桁を取り出します。- インデックス
indが偶数の場合はその桁を加算し、奇数の場合は減算します。 Math.floor(num / 10)で数値を1桁ずつ削りながら、インデックスを増やして再帰呼び出しを行います。- すべての桁を処理し終えたら、
Math.abs()で結果の絶対値を返します。
例えば num = 123456 の場合、右から順に「6 − 5 + 4 − 3 + 2 − 1」という計算が行われ、最終的に 3 という結果が得られます。
-
JavaScriptで数値の各桁の数字を一つずつ分割表示する方法
はじめに この記事では、ユーザーが入力した数値を検証し、有効な数値であればその各桁の数字を画面に一つずつ表示するJavaScriptプログラムの作り方を解説します。 動作イメージ ページ上のボタンをクリックすると入力ダイアログが開き、そこに数値を入力してOKを押すと、入力された数値の各桁が一行ずつ画面に出力される仕組みです。 例えば、入力が次のような場合—— 43354 画面には次のように表示されます。 4 3 3 5 4 完成コード HTML <!DOCTYPE html> <html> <head> &n
-
JavaScriptで単調増加する桁を持つ、指定した数以下の最大の数を求める方法
単調増加する桁(Monotonically Increasing Digits)とは 整数が「単調増加する桁」を持つとは、隣り合う任意の2つの桁 x と y の間に、常に x <= y が成り立つことを指します。たとえば 1234 や 2299 は左から右へ向かって桁が増加(または同じ)ため条件を満たしますが、332 のように「3 → 3 → 2」と減少が含まれる数は単調増加とはみなされません。 問題 今回求められているのは、数値 num を第一引数(かつ唯一の引数)として受け取るJavaScript関数を記述することです。 この関数は、num 以下の数の中から、単調増加する桁を持つ