Forum Webscript.Ru

Программирование => Perl => Тема начата: commander от 01 Декабря 2005, 15:31:18

Название: максимальный элемент....
Отправлено: commander от 01 Декабря 2005, 15:31:18
задачка такая:
есть масив с валютами только ("USD","EUR", "RUR"):
my @arr=("EUR", "USD","USD","RUR","RUR","RUR","RUR","EUR","EUR");

из него нужно выяснить какая валюта чаще всего встречаеться...

решил это следующим образом:
------------------------------------------------------------------
my @arr=("EUR", "USD","USD","RUR","RUR","RUR","RUR","EUR","EUR");
my $cur;
my %arr=("USD"=>0,"EUR"=>1,"RUR"=>2);
map {
$cur->[$arr{$_}]{\'val\'}=$_;
$cur->[$arr{$_}]{\'num\'}++;
}@arr;
$cur=[sort {$b->{num}<=>$a->{num}} @$cur ];
print $cur->
------------------------------------------------------------------

но ИМХО как то не спортивно получилось...

есть пердложения по улучшению кода?
Название: максимальный элемент....
Отправлено: Green Kakadu от 01 Декабря 2005, 19:08:03
#!/usr/bin/perl
use strict;
my %counter=();
my @arr=("EUR", "USD","USD","RUR","RUR","RUR","RUR","EUR","EUR");
foreach my $cur (@arr)
{
   $counter{$cur}++;
}
print join("\\n",  sort {$counter{$b} <=> $counter{$a}} keys %counter);
Название: максимальный элемент....
Отправлено: commander от 01 Декабря 2005, 19:12:23
Green Kakadu
:) нужно вывести одно обозначение валюты...
Название: максимальный элемент....
Отправлено: Kannabismus от 01 Декабря 2005, 19:13:05
Да уж, сильно заколдовал :)

; my %hash
; $hash{$_}++ for @arr
; print ((undef) = (sort {$hash{$b} <=> $hash{$a}} keys %hash)[0])
Название: максимальный элемент....
Отправлено: commander от 01 Декабря 2005, 19:29:24
Kannabismus
о! уже лучше... :)
ещё предложения?