#numbers #iteration #constant #digits #order #calculate #descending

bin+lib kaprekar

包含一个查找达到卡普雷卡尔常数的迭代次数的函数

6 个版本

0.1.5 2023 年 2 月 11 日
0.1.4 2022 年 7 月 7 日
0.1.2 2022 年 6 月 23 日

#16 in #digits

每月 22 次下载

MIT 许可证

7KB
75

卡普雷卡尔常数计数器

卡普雷卡尔常数(6174 & 495)是无用的但有趣的数学现象。

快速入门

你想要的是 crate 中的函数 kaprekar::calculate_four(XXXX),它接受一个四位不同整数的数。

还有一个三位常数(495),你可以通过输入三位数字来计算 kaprekar::calculate_three(XXX)

例如。

use kaprekar;

  ...
  let answer = kaprekar::calculate_four(1234);
  // answer == 3
  ...

工作原理

  1. 取任意四位数字,其中所有数字都不相同(例如 1832 或 9015,而不是 4444 或 0000)
  2. 按升序和降序排列数字(8321 和 1238)并求和
  3. 重复此过程,直到达到 6174

将此过程应用于 6174 将得到 6174。

此函数接受一个四位非重复数字的输入,并返回达到 6174 的迭代次数。

此相同原理适用于三位数。

例如,提供 993 将通过相同的过程,但收敛的数字是 495。

如果你提交了一个无效的整数(无论是重复的,还是对于 calculate_four 超过四位,对于 calculate_three 超过三位),它将返回一个错误。

该库的工作原理

  1. 验证输入(即正确数量的不同整数)
  2. 实例化计数器变量
  3. 调用一个递归函数执行以下计算:a. 将整数转换为字符串 b. 将字符串分割成字符向量 c. 将向量重新组织成两个不同的向量,一个是升序,另一个是降序,例如 4123 -> ["4","3","2","1"]["1","2","3","4"] d. 将两个向量分别转换成单独的字符串 e. 将字符串再转换回单独的整数 f. 返回两个整数的差值 g. 如果结果不是6174,则增加计数器,并从步骤3重新开始运行

返回代码

  • 任何 Some(positive_integer) 表示公式进行了多少次迭代。
  • 返回值为 Some(0) 表示给定的输入本身就是6174或495(因此需要0次操作)。
  • 返回值为 None 表示输入超出了范围或者所有数字都是重复的。

无运行时依赖