Данная статья представляет собой отчет по одному из упраженений с сайта excercism.io, которое я выполнил чисто из интереса к исскуству и любви к математике.
Число Армстронга – это натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную количеству его цифр.
Реализация проверки числа:
import std.algorithm;
import std.conv;
import std.range;
import std.functional;
auto isArmstrongNumber(int N)
{
return N
.to!string
.map!(a => (a - 48) ^^ (N.to!string.length))
.sum
.binaryFun!"(a - b) == 0"(N);
}
Работает это так: переводим число в строку, затем переводим каждый символ в цифру, вычитая 48 (это код цифры ноль в ASCII) и возводим в степень длины числа, после чего суммируем результат и проверяем его на равенство исходному числу. Если результат суммирования оказался равным исходному числу, то перед нами – число Армстронга.