【JavaScript】2つの数値の対応する桁の絶対差(桁距離)を計算する方法
本記事では、2つの数値を受け取り、それらの「桁距離」を返すJavaScript関数の実装方法を解説します。
桁距離とは?
桁距離(digit distance)とは、2つの数値の対応する各桁同士の差の絶対値を合計したものです。
具体例
たとえば、345 と 678 という2つの数値を考えます。この場合、桁距離は次のように計算されます。
|3-6| + |4-7| + |5-8| = 3 + 3 + 3 = 9
つまり、この2つの数値の桁距離は 9 となります。
コードの実装
それでは、実際にこの処理を行う関数を実装してみましょう。基本的なアプローチは以下の通りです。
- 両方の数値を文字列に変換する
- 各桁を順番に取り出し、差の絶対値を計算して加算する
- 最終的な合計値を返す
サンプルコード
const num1 = 345;
const num2 = 678;
const digitDistance = (a, b) => {
const aStr = String(a);
const bStr = String(b);
let diff = 0;
for (let i = 0; i < aStr.length && i < bStr.length; i++) {
diff += Math.abs(+(aStr[i] || 0) - +(bStr[i] || 0));
}
return diff;
};
console.log(digitDistance(num1, num2));
コードのポイント
String()を使って数値を文字列に変換することで、インデックスで各桁にアクセスできます。Math.abs()によって差の絶対値を取得し、負の値になるのを防いでいます。+(aStr[i] || 0)の部分は、桁が存在しない場合に0として扱うための安全策です。桁数が異なる数値同士でもエラーなく動作します。- ループ条件は短い方の文字列の長さまでに制限しているため、桁数の異なる入力にも対応できます。
実行結果
コンソールには以下の出力が表示されます。
9
このように、シンプルなループ処理だけで2つの数値の桁距離を効率的に求めることができます。アルゴリズムの練習問題やコーディングテストでもよく見られるパターンなので、ぜひマスターしておきましょう。
-
JavaScriptで数値の各桁の数字を一つずつ分割表示する方法
はじめに この記事では、ユーザーが入力した数値を検証し、有効な数値であればその各桁の数字を画面に一つずつ表示するJavaScriptプログラムの作り方を解説します。 動作イメージ ページ上のボタンをクリックすると入力ダイアログが開き、そこに数値を入力してOKを押すと、入力された数値の各桁が一行ずつ画面に出力される仕組みです。 例えば、入力が次のような場合—— 43354 画面には次のように表示されます。 4 3 3 5 4 完成コード HTML <!DOCTYPE html> <html> <head> &n
-
数Nの先頭X桁と末尾X桁の絶対差を求める方法
ここでは、整数 N の先頭X桁と末尾X桁の絶対差を求める方法を解説します。解き方の流れは以下のとおりです。まず数値の桁数を求め、剰余演算子(%)を使って末尾X桁を取り出します。その後、10で割る操作を繰り返して先頭X桁以外の桁をすべて取り除き、最後に両者の差の絶対値を計算して結果を返します。 例として、N = 568424、X = 2 の場合を考えてみましょう。先頭2桁は「56」、末尾2桁は「24」であるため、差は 56 − 24 = 32 となります。 アルゴリズム diffFirstLastDigits(N, X) begin p := 10^X last := N mod