Автор Тема: Счёт совпадений.  (Прочитано 4718 раз)

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

Оффлайн kaska

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
Счёт совпадений.
« : 27 Ноября 2005, 20:31:13 »
Здравствуйте, второй день сижу с женой и не могу придумать ;) Видимо жена отвлекает...

Есть переменная $name = "Павлик Вовик Костик Женечка Павлик Костя Павлик"

загвоздка: необходимо посчитать повторения и пересортировать переменную по кол-ву повторений через запятую. Т.е. в переменной 3 (три) раза втречается "Павлик", 2 (два) раза встречается "Костик", 1 (один) - "Женечка", 1 (один) - "Вовик". Таким образом переменная $name преобразуется в $sort_name = "Павлик,Костик,Вовик,Женечка".

Кто-нибудь сможет помочь?

Оффлайн Regestor

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://xsystem.ru/
Счёт совпадений.
« Ответ #1 : 27 Ноября 2005, 21:30:50 »
kaska
Не ленись, это достаточно простая задача... которую можно решить изучив такие лольские книги как "Перл за 24 часа"

Почитай про: splite, Циклы, Массивы, Хеши....

Оффлайн Kannabismus

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Счёт совпадений.
« Ответ #2 : 28 Ноября 2005, 04:23:37 »
$name = "Павлик Вовик Костик Женечка Павлик Костя Павлик";
my %hash = map { $_ => $hash{$_}++ } split(/\\s/,$name);
my $sort_name = join (\',\', sort {$hash{$b} <=> $hash{$a}} keys %hash);

Оффлайн kaska

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
Счёт совпадений.
« Ответ #3 : 28 Ноября 2005, 13:45:49 »
Спасибо - жена в восторге :D

Оффлайн kaska

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
Счёт совпадений.
« Ответ #4 : 28 Ноября 2005, 14:28:07 »
Итересно, а в интернете где-нить про Хеш можно почитать? Просто возникла потребность ограничить вывод не всех имен, а только 3 (трёх) самых-самых ;) $sort_name = "Павлик,Костик,Вовик";

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Счёт совпадений.
« Ответ #5 : 28 Ноября 2005, 15:00:23 »

Оффлайн kaska

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
Счёт совпадений.
« Ответ #6 : 28 Ноября 2005, 16:06:01 »
Я так понимаю, что нужно всё сделать через цикл, но как в цикл помещать имена (или ключи) из хэша по отдельности?

т.е. я делаю

$i=1;
while ($i < 3) {
...
}

а что в цикле?

Оффлайн kaska

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
Счёт совпадений.
« Ответ #7 : 29 Ноября 2005, 13:57:00 »
А может быть это через foreach сделать? :insane:

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Счёт совпадений.
« Ответ #8 : 29 Ноября 2005, 14:10:19 »
Купите книжку, хоть даже "перл за 24 часа".
The documentations is your friend

 

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