Forum Webscript.Ru
Программирование => Perl => Тема начата: Aramis от 03 Октября 2005, 11:22:48
-
Здравствуйте,
никак не могу разобраться с этой задачей:
необходимо посчитать количество одинаковых элементов в массиве.
те есть массив, например:
@dot=qw(1 2 3 6 7 2 1 1 2 6 1);
необходимо вывести такую статистику:
единиц - 4 штуки,
двоек - 3 штуки и тп
при этом надо учесть, что сам массив произвольного размера и количество повторяющихся элементов неизвестно.
Единственно что пришло в голову - скопироваnь массив и сравнивать каждый элемент массива со всеми элементами его копии. Но этот вариант крайне ресурсоёмкий. Наверняка есть какое-то более простое решение.
Специалисты, помогите пожалуйста.
Спасибо большое заранее.
-
my $cnt = {};
$cnt->{$_}++ foreach @dot;
use Data::Dumper;
print Dumper($cnt);
-
Many thanx,
всё работает :-)
а вот ещё один вариант подсказали:
my @dot=qw(1 2 3 6 7 2 1 1 2 6 1);
my %hash;
$hash{$_}++ for @dot;
print "$_ => $hash{$_}\\n" for sort keys %hash;