Forum Webscript.Ru
Программирование => Perl => Тема начата: 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->
------------------------------------------------------------------
но ИМХО как то не спортивно получилось...
есть пердложения по улучшению кода?
-
#!/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);
-
Green Kakadu
:) нужно вывести одно обозначение валюты...
-
Да уж, сильно заколдовал :)
; my %hash
; $hash{$_}++ for @arr
; print ((undef) = (sort {$hash{$b} <=> $hash{$a}} keys %hash)[0])
-
Kannabismus
о! уже лучше... :)
ещё предложения?