[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 было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20091208/c59c88b0/attachment.html>
Подробная информация о списке рассылки Moscow-pm