Автор Тема: максимальный элемент....  (Прочитано 3597 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
максимальный элемент....
« : 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->
  • {\'val\'};

------------------------------------------------------------------

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

есть пердложения по улучшению кода?
And no religion too...

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
максимальный элемент....
« Ответ #1 : 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

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
максимальный элемент....
« Ответ #2 : 01 Декабря 2005, 19:12:23 »
Green Kakadu
:) нужно вывести одно обозначение валюты...
And no religion too...

Оффлайн Kannabismus

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
максимальный элемент....
« Ответ #3 : 01 Декабря 2005, 19:13:05 »
Да уж, сильно заколдовал :)

; my %hash
; $hash{$_}++ for @arr
; print ((undef) = (sort {$hash{$b} <=> $hash{$a}} keys %hash)[0])

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
максимальный элемент....
« Ответ #4 : 01 Декабря 2005, 19:29:24 »
Kannabismus
о! уже лучше... :)
ещё предложения?
And no religion too...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28