【ITニュース解説】The 4-Digit Puzzle for Critical Thinkers

2025年09月10日に「Medium」が公開したITニュース「The 4-Digit Puzzle for Critical Thinkers」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

4桁の数字を並べ替え、最大値と最小値の差を求める操作を繰り返すと、必ず「6174」になる「カプレカー数」という数学パズルを紹介。このアルゴリズムは、プログラミング初心者の論理的思考力を鍛える良い題材となる。

出典: The 4-Digit Puzzle for Critical Thinkers | Medium公開日:

ITニュース解説

コンピュータの世界で重要なのは、定められた手順に従って正確に処理を実行する能力である。今回は、一見すると不思議な数学パズルに見えるが、その根底にはプログラミングやシステム開発に不可欠な論理的思考が隠されている「カプレカー操作」という概念について解説する。この操作を理解することは、アルゴリズム的思考を養うための優れた訓練となる。

カプレカー操作とは、インドの数学者D.R.カプレカーによって発見された、特定の4桁の数字に関するアルゴリズムである。その手順は非常にシンプルだ。まず、4桁の数字を一つ選ぶ。ただし、4つの桁がすべて同じ数字、例えば「1111」や「3333」といったものは対象外となる。少なくとも2種類以上の数字が含まれている必要がある。次に、選んだ数字の各桁を並べ替えて、最も大きい数と最も小さい数を作る。例えば、「3524」という数字を選んだ場合、これを並べ替えて作れる最大の数は「5432」、最小の数は「2345」となる。もし選んだ数字が「0837」のように0を含む場合、最小の数を作る際には「0378」のように先頭に0が来てもよい。そして、作成した最大の数から最小の数を引き算する。先の例で言えば、「5432 - 2345」を計算し、結果として「3087」を得る。この一連の流れがカプレカー操作の1ステップである。

この操作の最も興味深い点は、引き算で得られた新しい数字に対しても、同じ操作を繰り返していくと、最終的に必ず「6174」という特定の数字に行き着くことである。この「6174」は「カプレカー定数」と呼ばれている。先ほどの例を続けてみよう。最初の計算結果は「3087」だった。この数字で再び同じ操作を行う。各桁を並べ替えると、最大の数は「8730」、最小の数は「0378」となる。引き算を行うと「8730 - 0378 = 8352」となる。さらに、この「8352」で操作を続ける。最大の数は「8532」、最小の数は「2358」なので、「8532 - 2358 = 6174」となる。ここでついに「6174」に到達した。一度「6174」に到達すると、以降はこの操作を繰り返しても結果は変わらない。「6174」の桁を並べ替えると、最大の数は「7641」、最小の数は「1467」となり、その差は「7641 - 1467 = 6174」となるため、同じ数字がループし続けることになる。どのような4桁の数字(すべての桁が同じものを除く)から始めても、最大で7回の操作を繰り返すうちに、この「6174」という定数に必ずたどり着くことが知られている。

この一連のプロセスは、システムエンジニアを目指す者にとって重要な教訓を含んでいる。第一に、これは「アルゴリズム」そのものである。アルゴリズムとは、ある問題を解決するための明確に定義された手順の集合体を指す。カプレカー操作は、「4桁の数字を選ぶ」「並べ替えて最大値と最小値を作る」「引き算する」「結果が6174でなければ繰り返す」という、コンピュータが実行可能な一連の命令で構成されている。プログラミングとは、まさにこのようなアルゴリズムをコンピュータが理解できる言語で記述する作業に他ならない。この操作を実際にプログラミングしてみることは、初心者にとって非常に良い練習となる。数字の各桁を分離する方法、配列やリストを使って数字を並べ替えるソート処理、そして特定の条件が満たされるまで処理を繰り返すループ構造など、プログラミングの基本的な要素がすべて詰まっているからだ。また、最初に設定した「すべての桁が同じ数字は除く」という条件は、システム開発における「例外処理」の考え方にも通じる。予期せぬ入力に対してシステムが誤作動しないよう、あらかじめルールを定めておくことの重要性を示唆している。

カプレカー定数「6174」の探求は、単なる数学的な遊びではない。それは、複雑に見える現象も、単純な規則の繰り返しによって説明できることを示している。そして、その規則を正確に定義し、手順通りに実行する思考プロセスは、システム開発の根幹をなすものである。システムエンジニアの仕事は、曖昧な要求を明確な仕様に落とし込み、それをアルゴリズムとして構築し、コンピュータ上で実現することである。カプレカー操作のような論理パズルに触れることは、このような問題解決能力とアルゴリズム的思考を鍛えるための絶好の機会となる。一見無関係に見える数学の世界に、システム開発に通じる普遍的な論理が隠されていることを理解することは、技術者としての視野を広げる上で非常に有益である。