Алгоритм перевода диапазона в префиксы номеров АТС - C#
Формулировка задачи:
Есть диапазон телефонных номеров, а в АТС используются префиксы телефонных номеров. Придумать "с наскоку" алгоритм перевода диапазона в префиксы не удалось, помогите пожалуйста.
Например, диапазон
123456000-123789999
должен быть преобразован в список префиксов:123456 123457 123458 123459 12346 12347 12348 12349 1235 1236 12370 12371 12372 12373 12374 12375 12376 12377 12378
Решение задачи: «Алгоритм перевода диапазона в префиксы номеров АТС»
textual
Листинг программы
static IEnumerable<uint> ToMasks(uint start, uint end)
{
while (start <= end)
{
uint mask = 0, pow = 0;
for (int i = 0;; i++)
{
pow = (uint)Math.Pow(10, NumberLength - i);
mask = start / pow;
if (mask * pow + pow - 1 <= end && mask * pow >= start)
{
yield return mask;
break;
}
}
start = (mask + 1) * pow;
}
}