[Moscow.pm] Вставка в спиоск в определенное место

Andrei andrei.protasovitski на gmail.com
Вт Дек 8 01:25:43 PST 2009


Если вместо чисел в поле sort использовать строки, а вместо '<=>' брать
'cmp', то все очень легко разруливается добавлением символа 'a' в конец
строки.

На бейсике все программировали? Все помним, почему строки через 10
нумеровались? :)

7 декабря 2009 г. 13:28 пользователь Олег Малёваный <deer_oleg на mail.ru>написал:

> Всем добрый день!
>
> Никак не могу придумать алгоритм
>
> Суть такая:
> есть список объектов. У которых есть поле - порядок сортировки
> например, можно изобразить это так
> %a = (a=>0,b=>4,c=>10);
> то есть объект a имеет индекс 0, объект b имеет индекс 4, с имеет 10
> номер сортировки от 0 до 10
>
> есть ещё один объект.
> $s = (d=>1);
> Его нужно вставить в список, не нарушив предидущий порядок, и чтобы индексы
> не пересекались. Если порядки сортировки совпадают, то надо вставить перед
> элементом в списке.
> Поясню на примерах:
>
> # исходный "массив"
> %a = (a=>0,b=>4,c=>10);
> $s = (d=>1);
> # результат
> %b = (a=>0,b=>4,c=>10, d=>1); #все просто
>
> # исходный "массив"
> %a = (a=>0,b=>4,c=>10);
> $s = (d=>0);
> # результат
> %b = (d=>0, a=>1,b=>4,c=>10); #"d" встает на место "a", а "a" двигается в
> право
> # если "a" занимает чьето место, то и она должна тот элемент подвинуть и
> т.д.
>
>
> # исходный "массив"
> %a = (a=>0,b=>4,c=>10);
> $s = (d=>10);
> # результат
> %b = (a=>0,b=>4,c=>10, d=>9); # у "d" уменьшается индекс
> # если "d" занимает чьето место, то должна тот элемент подвинуть и т.д.
>
> # исходный "массив"
> %a = (a=>0,b=>4,c=>10);
> $s = (d=>4);
> # результат
> %b = (a=>0,b=>5,c=>10, d=>4);
> # или такой
> %b = (a=>0,b=>4,c=>10, d=>3);
> # тут нет разницы куда встанет "d" на место "b" или перед ним
>
> Вот что то даже не приходит в голову с чего начать.
> В конечном итоге там список будет, а не хеш (я его для простоты нарисовал)
> типа такого
> @a = (
>        {
>                name => a,
>                sort => 0,
>        },
>        {
>                name => b,
>                sort => 4,
>        },
>        {
>                name => c,
>                sort => 10,
>        },
>  );
> Может есть что то стандартное для этих целей? Или мысль кто подкинет
> полезную :)
>
> ------
> С Уважением, Олег Малёваный
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Andrei Protasovitski
< andrei[dot]protasovitski[at]gmail[dot]com >
Diemen, Netherlands
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20091208/c59c88b0/attachment.html>


Подробная информация о списке рассылки Moscow-pm