Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 17.09.2015
Сообщений: 11

Получить диапазон из последовательности чисел

14.03.2016, 09:02. Показов 3122. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть Enumerable.Range(Int32, Int32) , генерирует последовательность по диапазону.

Нужна функция, которая по последовательности сгенерирует строку диапазона. Если 2 числа рядом, то диапазон не пишется.
Последовательность отсортирована.

Пример:
вход 1,2,3,4,7,9,13,14,16,17,18,19
выход 1-4,7,9,13,14,16-19
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2016, 09:02
Ответы с готовыми решениями:

Найти среднее арифметическое чисел последовательности попадающих в заданный диапазон
1. С клавиатуры вводится последовательность чисел. Количество чисел заранее не известно, но может быть очень большим. Числа...

Получить количество всех простых чисел, входящих в диапазон
Помогите пожалуйста.Даны натуральные числа a; b (1 \leq a \leq b \leq 1000) . Получить количество всех простых числе входящих в диапазон...

Разделить выражение на диапазон чисел и получить результат вектором
Может не очень грамотно назвал тему. Нужно в результате расчета значения P.вх.n получить вектор со значениями от 1 до n. В том что я...

2
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
14.03.2016, 16:45
Лучший ответ Сообщение было отмечено Winter13 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
string JoinRange(IEnumerable<int> range)
{
    StringBuilder sb = new StringBuilder();
    int firstIndex = 0, firstValue;
    while (firstIndex < range.Count())
    {
        firstValue = range.ElementAt(firstIndex);
        IEnumerable<int> r = range.Skip(firstIndex).TakeWhile((value, index) => { return value == firstValue + index; });
        if (r.Count() > 2)
        {
            sb.AppendFormat("{0}-{1},", r.First(), r.Last());
            firstIndex += r.Count();
        }
        else
        {
            sb.AppendFormat("{0},", range.ElementAt(firstIndex));
            firstIndex++;
        }
    }
    sb.Remove(sb.Length - 1, 1);
    return sb.ToString();
}
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
14.03.2016, 18:44
Как вариант (за один обход):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
IEnumerable<string> ToRange(IEnumerable<int> sequence)
{
    if (sequence == null)
        throw new ArgumentNullException(nameof(sequence));
 
    var iter = sequence.GetEnumerator();
    if (!iter.MoveNext())
        yield break;
 
    int first = iter.Current, last = first;
    while (iter.MoveNext())
    {
        if (iter.Current == last || iter.Current - last > 1)
        {
            yield return Range(first, last);
            first = iter.Current;
        }
 
        last = iter.Current;
    }
 
    if (last - first == 1)
    {
        yield return first.ToString();
        yield return last.ToString();
    }
    else yield return Range(first, last);
}
 
string Range(int first, int last)
{
    return first == last ? first.ToString() : $"{first}-{last}";
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.03.2016, 18:44
Помогаю со студенческими работами здесь

Диапазон чисел - какой диапазон у каждой переменной
все int, можете написать какой диапазон у каждой переменной типа а1= a1 = rand()%7; b1 = rand()%6+4; a2 = rand()%7; b2 =...

Получить сумму чисел последовательности
Помогите пожалуйста с написанием программы. Пользователь вводит последовательность целых чисел, признаком окончания последовательности...

Получить количество четных чисел в последовательности
Даны натуральное число n, целые числа а1, … , аn. Получить количество четных среди a1, ..., аn

Получить и распечатать две последовательности чисел
такая задача:Получить и распечатать последовательности чисел a1,... , an, b1,..., bn, a1 = b1=1, a2 = b2=2, где ai = (i2 + a(i-1)), bi =...

Массив: получить сумму заданной последовательности чисел
Задача: Пользователь вводит количество чисел, которое он будет вводить, а затем эти числа. Вывести сумму этих чисел. Мое решение: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru