|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Maxim Y. Zinyakov 2:5065/21 25 Sep 2000 14:05:04 To : Oleg Ivanilov Subject : Помогите, плз!.. --------------------------------------------------------------------------------
24 Sep 00 21:51, you wrote to All:
OI> # Есть два массива, с равным количеством эл-ов. (dates и places)
OI> # Hадо устроить проверку - если в первом массиве есть одинаковые
OI> эл-ты, то
OI> # во втором массиве об`еденить соответствующие элементы в один через
OI> ", "
OI> # При этом в первом массиве все одинаковые эл-ты об`единить в один.
=== CUT ===
@arr1 = qw(1 2 3 3 4 5 5 6 6 6);
@arr2 = qw(11 22 33 44 55 66 77 88 99 12);
#^^^ это твои массивы
while ($i<=$#arr1+1) {
if ($combined{$arr1[$i]}){
$combined{$arr1[$i]}.=', '.$arr2[$i]
}
else {$combined{$arr1[$i]}=$arr2[$i]};
$i++;
};
#^^^ создаем хеш: ключ - эл. первого массива, значение - соотв. эл.
#второго при этом делается проверка, если такой элемент уже существует,
#то к нему значение добавляется по заданной схеме.
foreach $key (sort keys %combined){
print "$key : $combined{$key}\n" if ($combined{$key});
};
#^^^ получаем необходимый хеш, и любуемся на него.
=== CUT ===
если же тебе надо разнести все полученное по массивам обратно, что, по-моемцу не
имеет смысла, то можно сделать следующее:
=== CUT ===
splice @arr1,0,$#arr1+1;
splice @arr2,0,$#arr2+1;
#^^^обнуляем массивы
foreach $key (sort keys %combined){
$arr1[$key]=$key;
$arr2[$key]=$combined{$key};
};
#^^^ раскладываем все куда надо
# HО! эта раскладка будет работать только если елементы первого массива - целые
#натуральные числа... иначе, она не имеет смысла.
=== CUT ===
Удачи!
*Maqs.* [max@surt.sochi.ru]
--- GoldED/LNX 3.0.1
* Origin: WARNING! System paused: waiting for the miracle... (2:5065/21)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/181339cf5fa4.html, оценка из 5, голосов 10
|