|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 28, 2003 19:31:58 Народ. Вопрос. Имеем массив в Перле, нечто вроде @array :) Массив содержит ряд чисел. Где-то так: 1,3,5,5,5,3,1,5,5,5,5,3,3,7,9,10 и т.п. Вопрос - как мне убрать всю избыточность? Т.е. оставить только: 1,3,5,7,9,10 Сортировка рояли не играет. Могу и отсортировать перед удалением :) Проблема в том, что, если я работаю с одним-единственным массивом и использую функцию splice для удаления - индексы массива автоматически пересчитываются. Т.е. я не знаю, где я нахожусь. В принципе, можно просто-напросто выводить в другой массив, но мне хоцца в одном и изящно :) |
|
|
Дата: Июл 28, 2003 22:12:06 Пока от вас дождешься... Я, вроде, сделал. Я уж не знаю, насколько оно криво вышло, но, кажись, работает.
my $i=0;
while(defined $taxon[$i])
{
my $n = $i + 1;
while (defined $taxon[$n])
{
if ($taxon[$i] == $taxon[$n])
{
splice(@taxon, $n, 1);
$n--;
}
$n++;
}
$i++;
}
|
|
|
Дата: Июл 28, 2003 22:20:05 Пока от вас дождешься... Какой нетерпеливый, однако! :) Мне не очень нравится $n-- и потом $n++. Мож лучше так: if ($taxon[$i] == $taxon[$n])
{ splice(@taxon, $n, 1); }
else { $n++; }
|
|
|
Дата: Июл 28, 2003 22:41:50 · Поправил: volodya Да, ты прав. Это изящнее. Ща буду гонять... Погонял. Нравится :) |
|
|
Дата: Июл 29, 2003 12:03:17 · Поправил: bsl_zcs %z = map { $_=>0 } @taxon; @taxon = keys %z; |
|
|
Дата: Июл 29, 2003 12:12:57 volodya ЭЭЭэээххх :))) Вот дурацкие массивы эти Перла :))) ЩАЗ придумаю тебе вариант с сортировкой!!! |
|
|
Дата: Июл 29, 2003 12:40:05 volodya ааааааааааааааааааааааа Меня пробило!!!!!!!!!!!!!!! 03 Кроче массив отсортирован..... Не сбивайте, и сам собъюсь... :) Всё это можно сделать и на Perl (я проверил), но пример на PHP...
$n = size($array);
// Ну надо же было что-то засунуть?
// Вообще эту строчку можно убрать, чувствую что да..
// Но так я всё перепутаю...
$save = $array[$n];
foreach($i=0;$i>$n;$i++)
{
//БАНЗАЙ!!!
//Типа берём элемент и вытаскиваем его из массива
// Эта функция должна быть в Perl
$value = shift($array);
// Одна строчка... :)))
if($save != $value)
{
push($array,$value);
$save = $value;
}
}
Господи, А как ыб это на асме выглядело!!! Единственный минус.. Массив нужно отсортировать :((( |
|
|
Дата: Июл 29, 2003 12:43:22 volodya Да и ещё по идеее, если Перл это как нужно слобает этот метод будет хорошо для тех случаев, когда мы имеем длинные последовательности одинаковых элементов... Иначе.. |
|
|
Дата: Июл 29, 2003 13:38:50 Если бы это был PHP можно было одной функцией дело решить :) array_unique |
|
|
Дата: Июл 29, 2003 13:41:17 Eddy Я знаю.. |
|
|
Дата: Июл 29, 2003 16:44:52 > Если бы это был PHP можно было одной функцией дело решить :) Господа, извините что вмешиваюсь, :) но bsl_zcs уже привел вам весьма эффективное в духе перла решение поставленной задачи. Причем решение длиной в две строчки.. Смысл в том чтобы засунуть этот массив в виде ключей в хэш - в результате чего одинаковые элементы самоуничтожатся. А дальше просто получить список оставшихся уникальных ключей. |
|
|
Дата: Июл 29, 2003 19:14:35 bsl_zcs Супер! Просто супер. |
|
|
Дата: Июл 29, 2003 19:18:20 2Sten: ;) |
|
|
Дата: Июл 30, 2003 01:10:05 bsl_zcs А ты пару статей по алгоритмам для васма написать не хочешь? |
|
|
Дата: Июл 30, 2003 19:37:38 · Поправил: Безпощадный даос volodya Вот думаю, быть или не быть? :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.096 |