Мой отец, доктор Шрирам Чаутхайвале, страстный математик, специализирующийся на ведической математике и истории индийской математики. Его исследования включают интерпретацию загадочных древних рукописей и перевод их на современный математический язык / обозначения. Иногда он бросает мне вызов за преобразование утомительных математических уравнений / формул в компьютерную программу. Это не только помогает ему проверять сделанные вручную вычисления, но и ускоряет процесс проверки. В этой статье рассказывается об интересной математической концепции, называемой постоянной Капрекара (число 6174), и о том, как мы решили связанную проблему с помощью компьютерной программы.

Константа Капрекара

Число 6174 известно как постоянная Капрекара в честь индийского математика Д. Р. Капрекар . Эта константа особенная, потому что любое четырехзначное число (в котором все четыре цифры НЕ идентичны) может быть преобразовано в постоянную Капрекара за конечные шаги. Ниже приведены шаги для получения постоянной Капрекара.

  1. Возьмем четырехзначное число: например. 2435
  2. Переставьте цифры так, чтобы получилось наибольшее и наименьшее числа: 5432 и 2345.
  3. Вычтите меньшее число из большего: 5432–2345 = 3087
  4. Повторяйте шаги 2–3, пока не получите 6174
  5. С 3087 года: 8730–0378 = 8352
  6. Из 8352: 8532–2358 = 6174

Д. Р. Капрекар заметил, что любое 4-значное число можно преобразовать в 6174 максимум за 7 итераций вышеуказанного алгоритма.

Эта концепция хорошо известна в мире математики. Фактически, некоторые веб-сайты, такие как HackerRank, использовали это как задачу программирования. Однако мы хотели узнать ответ на очень конкретный вопрос. Давайте погрузимся в это!

Постановка задачи

Поняв константу Капрекара, давайте попробуем разобраться в проблеме, которую мы пытались решить. Как упоминалось выше, любое число от (0–9999) может быть преобразовано в постоянную Капрекара максимум за 7 итераций. Мы хотели копнуть немного глубже и разбить числа на 7 сегментов, каждый из которых представляет количество необходимых итераций. Это утомительный процесс, если его нужно проделать вручную для всех 9999 номеров. Поэтому мы решили прибегнуть к помощи компьютера. Ниже приведена реализация проблемы на Python.

Код

Ввод: числа от 1 до 9999.

(Примечание. Несмотря на то, что этот метод работает для четырехзначного числа, мы можем преобразовать числа с меньшими цифрами, добавив ведущие нули. Например, 1 = ›0001)
Вывод:
Блок 1: Числа, для которых требуется 1 итерация = ›[…….]
Блок 2: Числа, для которых требуется 2 итерации =› […….]
Блок 3: числа, для которых требуется 3 итерации = ›[…….]
Блок 4: числа, для которого требуется 4 итерации = ›[…….]
Блок 5: числа, для которого требуется 5 итераций =› […….]
Блок 6: числа, для которого требуется 6 итераций = ›[…….]
Блок 7: числа, для которого требуется 7 итераций =› […….]

Результаты

Вот распределение номеров для каждого ведра от 1 до 7.

Вывод

Алгоритм / код выглядит довольно просто для реализации. Однако это определенно помогло математику быстро завершить свою работу. Разве весь смысл программиста не в том, чтобы решать проблемы, чтобы облегчить чью-то жизнь?