用python计算你最后淘宝双11能量值还能剩多少!

恶趣味

这几天经常收到消息,打开一看都是 “快快 帮我点个赞”,“我正在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块五个人分!

洗洗睡

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值