JavaScriptで整然数(Tidy Number)を判定する方法を解説
整然数(Tidy Number)とは?
整然数(Tidy Number)とは、各桁の数字が左から右へ非減少順(前の桁より小さくなる箇所がない並び)になっている数のことです。
整然数の例
489 → 整然数(4 ≤ 8 ≤ 9) 234557 → 整然数(2 ≤ 3 ≤ 4 ≤ 5 ≤ 5 ≤ 7) 34535 → 整然数ではない(5 → 3 で減少しているため)
この記事では、引数として受け取った数値が整然数かどうかを判定するJavaScript関数を実装していきます。
実装のアプローチ
判定には再帰処理を使用します。数値の最下位の桁から順に取り出しながら隣接する桁同士を比較し、途中で一度でも「左の桁が右の桁より大きい」という減少が見つかれば、その数は整然数ではないと判断できます。
コード例
const num = 234789;
const isTidy = (num, last = 10) => {
// 桁が残っている間は再帰的にチェックを続ける
if (num) {
// 現在の最下位の桁が、直前にチェックした桁より大きければ整然数ではない
if (num % 10 > last) {
return false;
}
// 最下位の桁を取り除いて再帰呼び出し
return isTidy(Math.floor(num / 10), num % 10);
}
// すべての桁を問題なくチェックできたら true を返す
return true;
};
console.log(isTidy(num));コードのポイント
- last = 10:初期値を 10 にすることで、最初の比較(一番右の桁との比較)が必ず条件を満たすようになります。
- num % 10:数値の最下位の桁を取り出します。
- Math.floor(num / 10):最下位の桁を切り捨て、残りの桁を次の再帰呼び出しに渡します。
- num が 0(すべての桁を処理し終えた状態)になった時点で true を返します。
出力結果
コンソールには以下のように表示されます。
true
この例では、234789 の各桁が 2 → 3 → 4 → 7 → 8 → 9 と単調に増加しているため、true が返されます。もし途中で減少する桁が存在すれば、即座に false が返される仕組みです。
-
JavaScriptで1からnまでのすべての数値で割り切れる最小の数値を求める方法
問題 数値 n を引数として受け取る JavaScript 関数を作成する必要があります。この関数は、1 から n までのすべての整数で割り切れる最小の正の整数を求めて返します。 実は、この問題は数学における「最小公倍数(LCM)」を求める問題と同じです。1 から n までのすべての数値の最小公倍数こそが、求めるべき答えとなります。 例 n = 10 の場合を考えてみましょう。2520 という数値は、1・2・3・…・10 のすべての数値で余りなく割り切ることができる、最も小さい数値です。 以下のコードを見てみましょう − const num = 11; const smallestDivis
-
JavaScriptで数値に序数接尾辞(st・nd・rd・th)を追加する方法
問題JavaScriptで関数を作成する必要があります。この関数は、数値 num を最初の(唯一の)引数として受け取ります。関数の役割は、英語の序数表記のルールに従って、数値に「st」「nd」「rd」「th」という接尾辞を追加することです。具体的なルールは以下の通りです。一の位が1で終わる数値には「st」を使用します(例:1st、発音はfirst)一の位が2で終わる数値には「nd」を使用します(例:92nd、発音はninety-second)一の位が3で終わる数値には「rd」を使用します(例:33rd、発音はthirty-third)上記ルールの例外として、下二桁が11・12・13となる数値に