Курс по Raku / Приложение 🆕 / Работа с данни / Списъци, масиви и хешове / Exercises / Най-честият елемент

Решение: Най-честият елемент

Ето едно възможно решение на задачата.

Код

my @values = <a b a c a b>;

my %count;
%count{$_}++ for @values;

say %count.sort(-*.value)[0].key;

🦋 Намерете програмата във файла most-common.raku.

Изход

a

Коментари

  1. След преброяването на всяка стойност в %count сортирането на двойките по -*.value слага най-честата отпред; [0].key тогава връща този елемент.

  2. Raku може да преброи вместо вас с Bag, който брои колко пъти се появява всяка стойност. Тогава .max(*.value) избира двойката с най-голям брой, а .key е самият елемент:

    my @values = <a b a c a b>;
    
    say @values.Bag.max(*.value).key; # a

    Цялото преброяване е едно извикване на метод и няма изричен хеш за управляване.

Навигация в курса

Най-честият елемент   |   Съединете два списъка в хеш