6 个版本
0.1.5 | 2023 年 2 月 11 日 |
---|---|
0.1.4 | 2022 年 7 月 7 日 |
0.1.2 | 2022 年 6 月 23 日 |
#16 in #digits
每月 22 次下载
7KB
75 行
卡普雷卡尔常数计数器
卡普雷卡尔常数(6174 & 495)是无用的但有趣的数学现象。
快速入门
你想要的是 crate 中的函数 kaprekar::calculate_four(XXXX)
,它接受一个四位不同整数的数。
还有一个三位常数(495),你可以通过输入三位数字来计算 kaprekar::calculate_three(XXX)
。
例如。
use kaprekar;
...
let answer = kaprekar::calculate_four(1234);
// answer == 3
...
工作原理
- 取任意四位数字,其中所有数字都不相同(例如 1832 或 9015,而不是 4444 或 0000)
- 按升序和降序排列数字(8321 和 1238)并求和
- 重复此过程,直到达到 6174
将此过程应用于 6174 将得到 6174。
此函数接受一个四位非重复数字的输入,并返回达到 6174 的迭代次数。
此相同原理适用于三位数。
例如,提供 993 将通过相同的过程,但收敛的数字是 495。
如果你提交了一个无效的整数(无论是重复的,还是对于 calculate_four
超过四位,对于 calculate_three
超过三位),它将返回一个错误。
该库的工作原理
- 验证输入(即正确数量的不同整数)
- 实例化计数器变量
- 调用一个递归函数执行以下计算: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
表示输入超出了范围或者所有数字都是重复的。