Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Найти нетипичные значения? хеш массивов


Автор: Suppir 24.6.2010, 10:01
Добрый день!

Помогите с решением следующей задачки. Имеем массив строк:

ааа = 1
ааа = 1
ааа = 2
ааа = 1
ааа = 1

ббб = 7
ббб = 7 
ббб = 1
ббб = 7

Как видите, строке "ааа" обычно соответствует символ "1", а строке "ббб" обычно соответствует символ "7".

Необходимо для каждой строки (ааа и ббб) найти нетипичные значения. Т.е. необходимо обнаружить пары "ааа = 2" и "ббб = 1".

Предполагаю, что необходимо построить хеш массивов:
ключ "ааа", которому соответствует массив значений: 1, 1, 2, 1, 1,
ключ "ббб", которому соответствует массив значений: 7, 7, 1, 7
А потом перебрать массив значений для каждого ключа и найти нетипичные.

Только реализовать это чудо никак не получается :(

Автор: arto 24.6.2010, 10:45
while (<>) {
    chomp;
    my ($k,$v) = split "\\s*=\\s*";
    push @{ $hash{$k} },$v;
}

Автор: Suppir 24.6.2010, 11:32
arto, ты в них разбираешься? А как потом найти в этой структуре нетипичные значения?

Автор: dva300 24.6.2010, 12:52
Цитата(Suppir @ 24.6.2010,  11:32)
arto, ты в них разбираешься? А как потом найти в этой структуре нетипичные значения?

задача примитивная. включай мозГ  smile 
по итогам операций выше получишь N массивов в которых тебе просто надо посчитать одинаковые елементы и вывести в порядке убывания.
 

Автор: arto 25.6.2010, 06:33
посчитайте частоты

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)