恶趣味
这几天经常收到消息,打开一看都是 “快快 帮我点个赞”,“我正在pk…”
不幸我昨天也入坑了,被几个好朋友拉进去了他们的战队。各个热血澎湃的。但这个活动实在是卖人情,两个战队要pk点赞数,一个人一天最多给6个战队点赞。两方不停的找各种好友帮你点赞,赢得一方获得能量值。
到了晚上我去看了下规则发现有的不对。有9个战场可以进入,进入每个战场需要支付不等的入场费,输了就没了。然后能量越高能进入的战场也就越高,支付的入场费也就高。隐隐觉得就剩6,7天了能获得的能量值好像高不到哪里去。早上花了一会时间干脆用python计算下。说服他们放弃
import itertools
def profit(s1,T,x,lists):
dicts = {1:[0,288,0],2:[100,688,200],3:[200,988,600],4:[300,1288,1000],5:[600,1988,2000],6:[1000,2888,3500],
7:[2000,4988,5000],8:[4000,9688,10000],9:[8000,18188,20000]}#{关卡:[进入战场能量门槛,赢得PK获得的能量,门票]}
profit = s1+dicts[x][0] #每天早上起来发现都进入pk了所以给初始能量加上门票再扣
for i in range(T):
profit += (-dicts[x][0]+lists[i]*dicts[x][1]) #一开始都扣掉门票,获胜1*奖励 输了0*奖励不获得
x2=x #记录最后能到哪一关
if lists[i]==1 and profit>dicts[min(x+1,9)][2] and x<9: #达到下一关的门槛 并且这关获胜才进入下一关
x+=1
elif lists[i]==0 and profit<dicts[min(x,9)][2]: #输了而且连这一关的门槛都达不到了退回上一关
x-=1
return profit,x2
def get_lists(T,f):
lists=[]
slist = [1]*20
slist2 = slist[:(T-f)] #假设都是获胜的一共T天容忍亏F天 我们取获胜T-F天 往里面插输的天
f_list = get_random(f,T) #获得一个哪一天输的排列组合
for i in range(len(f_list)):
for j in f_list[i]:
slist2.insert(j,0) #往胜利天数里插入输的
lists.append(slist2)
slist2 = slist[:(T-f)] #希望得到[1,1,0,1]类似这样的列表1表示当天赢了0输了
return lists,f_list #返回每天输赢的情况,和第几场输的
def get_random(f,T):
#生成排列组合第一个参数是列表,第二个是组合几个1 [(1,),(2)] 2就是[(1,1),(1,2)]举个例子而已
l_rs = itertools.combinations([i for i in range(T)],f)
return list(l_rs)
#主函数随便写的别嫌弃略粗糙
def main(s1,x,T,lose_max):
for f in range(lose_max+1):
lists,f_list = get_lists(T,f)
for i in range(len(lists)):
profits,x2 = profit(s1,T,x,lists[i])
if 0 in lists[i]:
print('输了%s场,第%s场输了,最后收益%s,到了%s关'%(f,f_list[i],profits,x2))
else:
print('输了%s场,最后收益%s,到了%s关'%(f,profits,x2))
#参数 s1初始能量值,x当前的关卡,T还剩的时间包括今天,lose_max,最多输几场
#开战队就送你885 可以直接从第三关开始 初始参数应该是 885,3,11
s1=1473
x=4
T=6
lose_max=6
main(s1,x,T,lose_max)
发现运气+拼了老命全胜 才17000!170块五个人分!
洗洗睡