csharp高级练习题:Codewars风格排名系统【难度:4级】:
写一类称为用户被用来计算用户将通过一个类似于Codewars用途排名系统进展的量.
商业规则:
- 用户开始于秩-8,可以进步一路8.
- 没有0(零)排名.接下来的排名后-1 1.
- 用户将完成的活动.这些活动也有行列.
- 每次用户完成排名活动的用户等级进度更新基于活动的等级的关
- 从完成的活动赚取的进步是相对于什么用户当前的等级是相对于活动的等级
- 用户的排名进步在零开始了,每个时代的进步达到100用户的级别升级到一个新的水平
- 任何剩余的进步赢得而在此前的排名将朝着下一个等级的进步被应用(不抛出任何进展的距离).唯一的例外是,如果有留下来走向进步没有其他等级(一旦你达到等级8没有更多进展).
- 用户不能超过8级的进展.
- 等级值的唯一可接受的范围为-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8.任何其他值应该提出一个错误.
进度打进像这样:
- 完成该排名相同用户的将是价值300点的活动
- 完成是一个排名比排名用户的下一个活动将是得1分
- 任何活动完成了在排名2级或比用户的排名将被忽略,更多的低
- 完成的活动比目前用户的等级将加快发展等级排名较高.越大的排名之间的差异就越进展将会增加.式是
10 *d* D
其中D
等于在活动和用户之间的排名的差异.
逻辑实例:
- 如果用户排名-8完成的活动排名-7他们将获得10个进度
- 如果用户排名-8完成的活动排名-6他们将获得40个进度
- 如果用户排名-8完成的活动排名-5他们将获得90个进度
- 如果用户排名-8完成活动排名-4他们将获得160进展,导致用户升级到秩-7和具有获得对他们的下一个秩60个进展
- 如果用户排名-1完成的活动排名第一,他们将获得10个进步(记住,零等级被忽略)
代码使用的例子:
VAR =用户新的用户()
user.rank // => -8
user.progress // => 0
user.incProgress(-7)
user.progress // => 10
user.incProgress(-5)//将增加90个进度
现在user.progress#=> 0 //进展是零</