27 std::vector<unsigned> numbers(input_numbers);
28 std::sort(numbers.begin(), numbers.end());
29 unsigned end_number=numbers.back();
30 if(numbers.front()==end_number)
33 std::stringstream number_range;
35 auto start_number = numbers.front();
37 for(std::vector<unsigned>::const_iterator it = numbers.begin();
41 const auto number = *it;
42 const auto next = std::next(it);
45 if(next != numbers.end() && *next <= number + 1)
49 if(start_number != numbers.front())
52 if(number == start_number)
54 number_range << number;
56 else if(number == start_number + 1)
58 number_range << start_number <<
',' << number;
62 number_range << start_number <<
'-' << number;
65 if(next != numbers.end())
70 return number_range.str();