Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Форум группы: Зеркала Винграда > Измерим все


Автор: diadiavova 29.3.2012, 23:39
Эта тема должна стать родоначальницей тем-измерялок на Винграде. Что конкретно будет описывать каждый голосующий - не важно. Это может быть рост, вес, размер зарплаты, какого-нибудь органа smile , номер дома или этаж. Одним словом - все что угодно. Далее будет вычислено(точно) среднее арифметическое и тогда мы узнаем если не чем живет винград, то по крайней мере измерим эту величину. В других измерялках можно будет конкретизировать.

Правила голосования просты: для того, чтобы указать числовое значение мы действуем по принципу двоичных флажков. То есть, если надо обозначить скажем число 748, мы отмечаем чекбоксы
4, 8. 32, 64, 128, 512. В сумме они дадут именно 748.

Подсчет среднего арифметического осуществляется тоже довольно просто: каждое значение умножается на количество голосов, отданных за него, все это складывается и результат делится на количество проголосовавших.

Выбирать флажки при голосовании естественно не просто, поэтому я соорудил пару инструментов, которые могут облегчить процесс. 

Первый инструмент не потребует ничего
http://pishitiepisma.narod.ru/mypages/checkboxset.xml
Там в текстовое поле надо ввести число, нажать кнопку и все нужные чекбоксы будут отмечены(защита от дурака есть, но она минимальная). Потом надо будет просто отметить в опросе те же самые чекбоксы.

Если это делать лень, то для пользователей файрфокса можно воспользоваться таким расширением
https://addons.mozilla.org/ru/firefox/addon/greasemonkey/
Оно позволяет выполнять в браузере собственные скрипты. Я написал для описанной задачи две команды, одна запускает окошко в которое надо ввести число и отмечает чекбоксы на странице. Другая подсчитывает результат и вставляет отчет в поле сообщения.

Если у кого-то есть это расширение или он не прочь поставить, то вот код скрипта

Код

// ==UserScript==
// @name           topic actions
// @namespace      vingrad
// @description    Действия на страницах топиков.
// @include        http://forum.vingrad.ru/forum/topic-*
// @include        http://forum.vingrad.ru/forum/act-ST/*
// @require        https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js
// @run-at         document-end
// ==/UserScript==


GM_registerMenuCommand("Отметить чекбоксы", function(){
    var num =parseInt( prompt("Какое число надо отобразить?"));
    if(typeof num == "number" && num < Math.pow(2, $("input[name ^='poll_vote']").length) && num > 0)
    {
        $("input[name ^='poll_vote']").each(function(index, element){
            element.checked = num & Math.pow(2, index);  
        });
    }
    else 
    {
        window.alert("Указанное значение не является числом или выходит за пределы допустимого диапазона.");
        $("input[name = 'chkbx']").each(function(ind,item){item.checked = false;});
    }

});


GM_registerMenuCommand("Вычислить статистику.", function(){
    var rows = $("#poll_form > table[summary='table5'] > tbody > tr");
    var result = 0;
    var itemrows = rows.filter(function(index, row){return index > 0 && index < rows.length - 2;}).map(function(){
            var first = $(this).children().first();
            var second = $(this).children("td").children("b");
            return parseInt(first.text()) * parseInt(second.text().trim());
        }).each(function(ind,elem){result += elem});
    var q = parseInt( $("#poll_form > table[summary='table5'] > tbody > tr td.votetext[colspan='3']").get(1).innerHTML.split(": ")[1]);
    result /= q;
    
    var stattext = "[quote]Статистика голосования.\r\n\r\n"+
            "Всего проголосовавших: " + q + "\r\n" +
            "Среднее арифметическое: " + result + "[/quote]";
    //window.alert(stattext);
    $("#Post_area").get(0).value += stattext;

});
Посмотрим, что из этого получится smile 

Автор: LSD 30.3.2012, 10:19
Ялазин где? smile 

Автор: diadiavova 30.3.2012, 10:31
Цитата(LSD @  30.3.2012,  11:19 Найти цитируемый пост)
Ялазин где?

Если в расчетах использовать Ялазин, то в результате всегда получается NaN, уж не знаю почему smile 

Автор: LSD 30.3.2012, 11:04
Цитата(diadiavova @  30.3.2012,  11:31 Найти цитируемый пост)
Если в расчетах использовать Ялазин, то в результате всегда получается NaN, уж не знаю почему

И это логично smile Лазин это не число и один Лазин не равен любому другому Лазину.

Автор: diadiavova 30.3.2012, 11:08
Ну вот поэтому в случае, когда надо выделить ялазина придется довольствоваться набором 2, 8, 32. Не ялазин, конечно, но в качестве суррогата сойдет smile 

Автор: JackyFox 30.3.2012, 12:54
Сколько ж у тебя свободного времени, diadiavova. Не завидую.
У меня лично 32, как и положено.  smile 

Автор: diadiavova 30.3.2012, 14:36
Цитата(JackyFox @  30.3.2012,  13:54 Найти цитируемый пост)
Сколько ж у тебя свободного времени, diadiavova. Не завидую.

Я не совсем понял твою мысль: ты проводишь в интернете меньше времени чем я или проводишь его с большей пользой? smile

Добавлено через 26 секунд
Цитата(JackyFox @  30.3.2012,  13:54 Найти цитируемый пост)
У меня лично 32, как и положено. 

Ну это смотря на что или на кого положено smile

Добавлено через 5 минут и 58 секунд
А вообще да - 32 обычно хватает smile 

Автор: JackyFox 30.3.2012, 14:44
Цитата(diadiavova @  30.3.2012,  14:36 Найти цитируемый пост)
Я не совсем понял твою мысль

Завидую

Автор: diadiavova 30.3.2012, 14:48
Цитата(JackyFox @ 30.3.2012,  15:44)
Цитата(diadiavova @  30.3.2012,  14:36 Найти цитируемый пост)
Я не совсем понял твою мысль

Завидую

Завидуешь тому, что я не вполне понял или тому, что таки понял хоть что-то? smile

Добавлено через 12 минут и 20 секунд
Цитата
Статистика голосования.

Всего проголосовавших: 4
Среднее арифметическое: 535

Автор: diadiavova 4.4.2012, 08:52
Чот никто ничо не измеряет smile

Автор: Zloxa 5.4.2012, 09:26
Рамки опроса слишком тесны для моего ответа: 65536+32768+2048+128+16+4 smile

Автор: neweraser 5.4.2012, 09:39
А что, один я выбрал все чекбоксы, а потом прочитал топик?  smile 

Автор: LSD 5.4.2012, 10:55
Цитата(neweraser @  5.4.2012,  10:39 Найти цитируемый пост)
А что, один я выбрал все чекбоксы, а потом прочитал топик?

Нет. Это же логично, воспользоваться всеми возможностями smile 

Автор: diadiavova 5.4.2012, 14:49
Цитата(Zloxa @  5.4.2012,  10:26 Найти цитируемый пост)
Рамки опроса слишком тесны для моего ответа: 65536+32768+2048+128+16+4

Вообще-то в опросе предполагался честный ответ smile 
Цитата(LSD @  5.4.2012,  11:55 Найти цитируемый пост)
Нет. Это же логично, воспользоваться всеми возможностями

Логично отвечать точно smile

Добавлено через 46 секунд
Цитата
Статистика голосования.

Всего проголосовавших: 7
Среднее арифметическое: 729.1428571428571

Автор: Freyzer 10.4.2012, 11:32
А у нас все банкоматы загнулись, можно программно высчитать когда заработают?  smile 

Автор: diadiavova 11.4.2012, 15:14
Ну что ж, итог таков
Цитата
Статистика голосования.

Всего проголосовавших: 8
Среднее арифметическое: 638.5
Уж даже и не знаю, хорошо это или плохо smile 

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