这里的规则是用户可以获得10,20和30连胜的徽章。但是用户不能为同一连胜授予多个徽章。我正在跟踪用户模型中的consec wins。
例如,如果用户点击10条纹,则用户将获得10条纹徽章。如果用户处于20连胜,他/她将获得20条纹徽章。如果用户正在进行30连胜,则该用户将获得30条纹徽章。用户不应该获得三个10连胜徽章 - 只有一个10连胜,一个20连胜和一个30连胜。
此外,如果用户达到40连胜,那么用户应该获得10条纹徽章。如果用户击中50,那么他/她应该被授予20条纹徽章。如果用户点击60,则用户应该奖励30条纹徽章。如果用户点击70,则应该向用户授予10条连线。我想你在这里得到的模式。 30条纹奖杯是用户可以获得的最大值。但是用户可以获得无限连胜。
def check_win_streak(streak)
badge = 10
while badge < BADGE::MAX_STREAK_BADGE_SIZE do # MAX_STREAK_BADGE_SIZE = 30
if streak < badge then
break
end
if (streak % badge == 0) then
award_streak_badge(badge)
end
badge += 10
end
end
答案 0 :(得分:1)
def check_win_streak(streak)
if streak % 10 == 0
award_streak_badge(streak % badge::MAX_STREAK_BADGE_SIZE)
end
end
答案 1 :(得分:0)
尝试MOD算术。
将条纹修改为30 - 您将获得在30 ...
的每个波段重复的结果答案 2 :(得分:0)
摆脱休息的模数,即62 % 30 = 2
。然后有划分来获得30个条纹的数量。
Starting with 74
74 % 30 = 14
(74 - 14) / 30 = 2
14 - (14 % 10) = 10
Result: 2x30 streaks and 1x10 streak