JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでパンデジタル数(0〜9をすべて含む数)を判定する方法

パンデジタル数とは?

パンデジタル数(pandigital number)とは、0から9までのすべての数字が少なくとも1回ずつ含まれている数のことです。本記事では、数値を表す文字列を引数として受け取り、その文字列がパンデジタル数であれば true、そうでなければ false を返すJavaScript関数の実装方法を解説します。

実装のアプローチ

判定の考え方はシンプルです。まず0〜9の数字をすべて格納した配列を用意し、入力文字列に含まれる数字を見つけるたびに、配列から該当要素を削除していきます。文字列の走査が完了した時点で配列が空になっていれば、すべての数字が含まれていたことになり、その文字列はパンデジタル数であると判断できます。重複した数字が出現した場合でも、すでに削除済みの要素はスキップされるため、正しく動作します。

コード例

以下は、パンデジタル数をチェックするJavaScriptのコードです。

const numStr1 = '47458892414';
const numStr2 = '53657687691428890';
const isPandigital = numStr => {
    let legend = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
    for(let i = 0; i < numStr.length; i++){
        if(!legend.includes(numStr[i])){
            continue;
        };
        legend.splice(legend.indexOf(numStr[i]), 1);
    };
    return !legend.length;
};
console.log(isPandigital(numStr1));
console.log(isPandigital(numStr2));

出力結果

コンソールには以下のように出力されます。

false
true

コードの解説

最初の例「47458892414」には0、3、6などの数字が含まれていないため、false が返されます。一方、2つ目の例「53657687691428890」は0〜9のすべての数字を少なくとも1回ずつ含んでいるため、true が返されます。この実装では、includes() メソッドで配列内に数字が存在するかを確認し、splice() メソッドで該当要素を削除しています。これにより、各数字の使用状況を効率的に管理しながら、パンデジタル数を簡単に判定できます。

  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 =

  2. JavaScriptで桁の和が回文数かどうかを判定する関数を作る方法

    問題概要今回は、数値 num を第1引数(唯一の引数)として受け取る JavaScript 関数を作成します。この関数は、num の各桁の数字を合計した値が回文数(palindrome number)である場合に true を返し、そうでない場合は false を返す必要があります。例えば、関数への入力が次のようだったとします。const num = 781296;このとき、期待される出力は以下の通りです。const output = true;出力の解説781296 の各桁の和を計算すると、7 + 8 + 1 + 2 + 9 + 6 = 33 となります。33 は左右から読んでも同じ値になる