Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2014, 22:39   #1
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию Форматирование последовательности чисел

Здравствуйте. Имеется массив чисел, например:
PHP код:
$numbers = array (12345678); 
Необходимо представить это в виде строки:
1-8

При этом, если будет такой массив:
PHP код:
$numbers = array (12567810); 
тогда формировать строку:
1-2, 5-8, 10

Как можно реализовать?

Последний раз редактировалось ATL; 11.02.2014 в 23:14.
ATL вне форума Ответить с цитированием
Старый 12.02.2014, 00:49   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Нужно написать скрипт. В цикле перебираем если текущий элемент больше чем на единицу, то в строку добавляем начало и конец последовательности, идём дальше, пока все не переберем , плюс варианты когда последовательность из одной цифры.

Кстати А если последовательность будет не увеличивающаяся - то какой алгоритм?
ADSoft вне форума Ответить с цитированием
Старый 12.02.2014, 01:31   #3
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

ADSoft, последовательность всегда увеличивается.
ATL вне форума Ответить с цитированием
Старый 12.02.2014, 07:15   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

покажите свои наработки, мы подскажем если что не так....
а то сильно смахивает на "сделайте за меня"
ADSoft вне форума Ответить с цитированием
Старый 12.02.2014, 13:54   #5
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

ADSoft, не мог сразу придумать правильную логику, по этому сразу не написал то, что имел на тот момент Решилось как-то так:
PHP код:
public function portsFormat($array) {
        
$fl 0;
        
$string $array[0];
        for (
$i 1$i count($array); $i++) {
            if (
$array[$i] - $array[$i-1] == 1) {
                
$fl 1;
                continue;
            } else {
                if (
$fl == 1)
                    
$string .= "-" $array[$i-1] . ", " $array[$i];
                else
                    
$string .= ", " $array[$i];
                
$fl 0;
            }
        }
        if  (
$fl == 1$string .= "-" $array[$i-1];

        return 
$string;
    } 
ATL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С\С++ Дана последовательность чисел. Найти количество различных чисел в этой последовательности yuliyayuliya Помощь студентам 1 14.04.2011 06:30
Определить k-ую цифру последовательности Фибоначчи и последовательности натуральных чисел. Med Помощь студентам 1 20.03.2009 11:40
Ввод последовательности чисел POPOV Общие вопросы Delphi 5 16.02.2008 22:13
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных Белка Помощь студентам 3 27.10.2007 11:53
Форматирование чисел Gorin Общие вопросы Delphi 11 26.09.2007 10:30