我想创建一个排序算法,该算法采用项目分数(基于赞成/反对票)并根据考虑时间衰减的不可见基础分数对它们进行排序。
从分析哲学的角度来看,我的数学算法并不总是最好的。在以下示例中,解决 InverseTimeRelationship(currentItem.CreationDate) 的简单优雅方法是什么:
class Item()
{
int upvotes;
int downvotes;
int SortScore;
DateTime CreationDate;
}
var currentItem = GetSomeSpecificItemMethod();
int Score = currentItem.upvotes - currentItem.downvotes;
currentItem.SortScore = Score * InverseTimeRelationship(currentItem.CreationDate);
SortItemsBySortScore(Item[]);
InverseTimeRelationship(DateTime CreationDate)
{
//Code To Write
}
希望一天之后,SortScore 会稍微低一点,但是说 2-3 天之后,无论它有多少票,它都会从列表/首页的顶部消失。