Алгоритм расчета репутации на форуме.

izx

Новичок
Алгоритм расчета репутации на форуме.

Пишу движок форума, на котором каждый пользователь имеет репутацию (целое число)
Каждый пользователь может поставить плюс к репутации другого участника.
Если пользователь ставит +, то у другого участника репутация увеличивается на число равное 10% от репутации того, который поставил оценку.
Но возникла проблема зацикливания этого алгоритма, если два пользователя каждый друг другу поставят «Плюс»
Первый увеличивает репутацию второму на 10% от своей, а второй увеличивает репутацию первому на 10% от своей. В итоге репутации растет в цикле до бесконечности.
Как остановить этот замкнутый круг я решения не вижу.
Есть вариант при постановке «Плюса» увеличивать репутацию просто на одну единицу, но это не интересно, так как хочется что бы пользователи с более высокой репутацией при постановке «Плюса» сильнее бы ее меняли.

Кто уже сталкивался с подобными задачами, подскажите, как вы решали эту проблему?
 

zerkms

TDD infected
Команда форума
разрешить пользователю "плюсовать" другого лишь единожды
 

Alexandre

PHPПенсионер
Но возникла проблема зацикливания этого алгоритма, если два пользователя каждый друг другу поставят «Плюс»
Первый увеличивает репутацию второму на 10% от своей, а второй увеличивает репутацию первому на 10% от своей. В итоге репутации растет в цикле до бесконечности.
установить ограничение, ты не можешь поднять репутацию другого более чем n-раз за определенное время (например месяц)
 

izx

Новичок
Автор оригинала: zerkms
разрешить пользователю "плюсовать" другого лишь единожды
Такое ограничение есть.
Но проблемы оно не решает.
Объясняю еще раз ситуацию.
Два пользователя каждый другому поставили «Плюс» по одному разу.
Шаг 1
Алгоритм рассчитывает репутацию первого участника и увеличивает ее на 10% от репутации второго.
Шаг 2
Алгоритм рассчитывает репутацию второго участника и увеличивает ее на 10% от репутации первого.

Переход на Шаг 1

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

Фанат

oncle terrible
Команда форума
бред какой-то.
откуда переход на шаг 1-то возьмется?
алгоритм рассчитывает репутацию не в момент постановки плюса, а динамически, при каждом показе?
 

asterisk

Новичок
имеем:
1ый юзер - 140 реп
2ый юзер - 160 реп

при клике на "+" 1го 2ым юзером получаем:
1ый юзер - 156 реп [+10%]
2ый юзер - 160 реп

где тут
до бесконечности.
?

ps. единственным минусом в этой схема видится возможность увеличения каунтера на 10% с перебором собственного значения репутации.
 

izx

Новичок
Автор оригинала: *****
бред какой-то.
откуда переход на шаг 1-то возьмется?
алгоритм рассчитывает репутацию не в момент постановки плюса, а динамически, при каждом показе?
Да у меня так и было сделано.
Рассчитывалась репутация при каждом показе репутации.
Наверное это не правильно, нужно ее рассчитывать только при постановке +
Всем спасибо за помощь.
Когда долго сидишь за компом, то интеллект постоянно уменьшается и на простой задаче мозг заклинивает.
Наварное со мной так и вышло.

2 дня назад реализовал на форуме репутацию.
Потом смотрю, а у юзеров она уже перевалила за 100 000.
Оказывается причина в том что она пересчитывалась при каждом показе репутации и росла
 

Angerslave

Новичок
izx, уже утро, засиделся за компом? :)
Нужно либо таблицу репутации создать, где хранить всю инфу о репутациях, либо хранить там только блокировки, а репутацию хранить в поле в таблице юзверей.
 
Сверху