Предсказываем самый популярный класс в Diablo III с помощью bash

Я уже довольно давно жду выхода Diablo III и время от времени почитываю различные ресурсы посвященные этой игре. Недавно близзард запустил сайт по третей диабле вместе с форумами(http://eu.battle.net/d3/). И на русском форуме и на английском одна из самых популярных тем: «За какого персонажа начнете играть?». В самих темах иногда находятся извращенцы, которые читают каждый пост и выписывают на бумажку результаты, но ведь у нас есть «Unix-way», так почему бы им не воспользоваться.

Обычно я выкладываю сам скрипт под спойлер, но сегодня у меня получилось под 300 строк, так что просто качаем его по этой ссылке, а в самой статье упомяну только, как работает скрипт. Также будут небольшие вставки кода, для тех кто пишет пишет свой скрипт и хочется посмотреть на примеры.

Можно скачать скрипт прямо из терминала:

wget http://dl.dropbox.com/u/24844052/tuksik/dstats
chmod +x dstats
./dstats

Принцип работы bash скрипта следующий:
Мы вводим сколько страниц в темах http://eu.battle.net/d3/en/forum/topic/2586648681 и http://eu.battle.net/d3/en/forum/topic/2586648681.
Скрипт начинает скачивать все страницы используя цикл while [ $p -gt 0 ]; do, где $p количество страниц в теме. Сама скачка идёт через wget в файл с именем $p.
Так как в Witch Doctor и Demon Hunter существуют пробелы, нам нужно от них избавится. Для этого используется программа sed(Пример: sed -i 's/витч доктор/витч_доктор/g' $p.ru)
Теперь когда всё скачали и убрали лишние пробелы можно приниматься за подсчёт слов:

while [ $p -gt 0 ]; do
for n in $(cat $p.ru);
do
if [[ $n == *Войн* ]] ||
[[ $n == *войн* ]] ||
[[ $n == *Воин* ]] ||
[[ $n == *воин* ]] ||
[[ $n == *Барб* ]] ||
[[ $n == *Barb* ]] ||
[[ $n == *barb* ]] ||
[[ $n == *барб* ]] ||
[[ $n == *Варвар* ]] ||
[[ $n == *варвар* ]]; then
b=$((b+1))
fi
done
p=$((p-1))
done

Этот кусок bash скрипта прогонит все страницы русскоязычной темы и посчитает сколько раз упоминалось слово варвар в той или иной формулировке.

И в конце считаем процентное соотношение классов в диабло 3.
Вначале узнаём сколько всего было участников опроса:
let "s=$b+$m+$d+$c+$k"
И теперь высчитываем сам процент:
let "bp=$b*100/$s"
echo "Варвар=" $bp'%' '('$b')'

Вот и всё. В результате получается примерно так:

Конечно имеются сильная погрешность, ведь довольно часто люди пишут вроде: «Буду играть за варвара, варвара и только варвара» и скрипт посчитает, что 3 человека проголосовало за Барбариана. Но основная цель статьи не привести точную статистику, а лишь показать возможности bash в linux.

Поделись статьёй с друзьями

Или просто поиграйся с кнопочками

Добавить комментарий