超百坑讲坛第7期拾遗——完美的黄盖主?(下)
上回说到,非酋的我在苦到第一次求桃的时候就直接暴毙,由此引发了对黄盖主当场苦死产生了怀疑,但是当重新调试后发现,还是很容易苦死到场,实际上根本没有一次真正达到了操纵整个牌堆的场面,让我对这种场面(标黄盖主,2蜀国香香,3步练师,4曹植,5神关,6国太,7戏志才先辅吴国太,8周泰)的黄盖主会不会苦死,苦死的概率产生了新一轮的质疑,毕竟我再怎么非,也不可能连续个几十次都成功吧。
先分析牌堆结构,过牌类桃酒17张,无中4张,铁索6张
17*5+4*3+6*2=109<161
也就是说光靠牌堆,苦肉加良助是无法做到控制整个牌堆
但是再算上补益,提前苦肉预支的,本来就有的牌,通过把牌堆都拽手里来达到控制牌堆的目的。
4*8+2+2*4+109-27=124
理想情况下至少还要补益成功10次。。。
(所以那次的MVP果然是刘禅吗?清掉杀就可以提高补益成功率了)

最后附上菜鸡所用的代码
from random import *
def getpai(alist,blist,n):
global list_paidui
global list_qidui
if blist==list_paidui:
if n>len(blist):
#摸完剩下的牌
for i in blist:
blist.remove(i)
alist.append(i)
n-=1
#洗牌
xipai()
for i in range(n):
a=randint(1,161)
while (a not in blist):
a=randint(1,161)
blist.remove(a)
alist.append(a)
def xiuxue(a,b):
global list_xue
list_xue[a-1]+=b
def xiupai(a,n,i=0):
global list1
global list2
global list3
global list_paidui
global list_qidui
if n > 0:
if a==1:
getpai(list1,list_paidui,n)
elif a==2:
getpai(list2,list_paidui,n)
elif a==3:
getpai(list3,list_paidui,n)
elif n<0:
if a==1:
if n==-1:
if i==0:
print("请输入弃牌号")
i=eval(input())
list1.remove(i)
list_qidui.append(i)
#顺手牵羊
if i>=92 and i<=96:
getpai(list1,list2,1)
#过河拆桥
elif i>=86 and i<=91:
if len(list3)>0:
xiupai(3,-1)
else:
xiupai(2,-1)
#无中生有
elif i>=97 and i<=100:
xiupai(1,2)
else:
list1.remove(i)
list_qidui.append(i)
elif n<-1:
getpai(list_qidui,list1,len(list1))
elif a==2:
getpai(list_qidui,list2,n)
elif a==3:
getpai(list_qidui,list3,n)
def xipai():
global list_paidui
global list_qidui
for i in list_qidui:
list_qidui.remove(i)
list_paidui.append(i)
#初始化牌堆
list_paidui = []
list_qidui = []
for i in range(1,162):
list_paidui.append(i)
#初始化人员手牌
list1=[]#黄盖主手牌
list2=[]#可顺手牵羊人员手牌
list3=[]#只能过河拆桥人员手牌
getpai(list1,list_paidui,16)
getpai(list2,list_paidui,16)
getpai(list3,list_paidui,12)
#初始化人员血量
list_xue=[0,3,3,3,5,3,3,4]
#开始操作
flag=1
while flag:
print("血:",list_xue)
list1.sort()
print("盖:",list1,len(list1))
list2.sort()
print(list2)
list3.sort()
print(list3)
print("开始操作:0结束游戏1修血2修牌3濒死4查堆5得牌")
flag=eval(input())
if flag==0:
break
elif flag==1:
print("修谁的血?输入几号位")
a=eval(input())
print("怎么修?")
b=eval(input())
xiuxue(a,b)
elif flag==2:
print("修谁的牌?输入几号位")
a=eval(input())
print("怎么修?")
b=eval(input())
xiupai(a,b)
elif flag==3:
#补益
a=randint(1,161)
while (a not in list1):
a=randint(1,161)
print("补益牌是:",a)
if a>85:
print("补益成功")
xiupai(1,-1,a)
xiupai(1,4)
else:
print("补益失败")
#桃酒
for i in list1:
if i>=69 and i<=85:
xiupai(1,-1,i)
xiupai(1,4)
print("自救成功")
break
#桃园结义
for i in list1:
if i==106:
xiupai(1,-1,i)
xiupai(1,4)
print("自救成功")
break
elif flag==4:
print("牌堆:",list_paidui,len(list_paidui))
print("弃堆:",list_qidui,len(list_qidui))
elif flag==5:
for i in list1:
#无中生有
if i>=97 and i<=100:
list1.remove(i)
list_qidui.append(i)
xiupai(1,2)
#五谷丰登
elif i>=107 and i<=108:
list1.remove(i)
list_qidui.append(i)
list4=[]
getpai(list4,list_paidui,8)
print(list4,"选一张")
print("建议选取桃酒69-85,桃园106")
print("次选五谷107-108,无中97-100")
print("最次非基本>85")
a=eval(input())
list4.remove(a)
list1.append(a)
for x in list4:
list4.remove(x)
if len(list4)>=5:
list2.append(x)
else:
list3.append(x)
"""#铁索连环
elif i>=123 and i<=128:
list1.remove(i)
list_qidui.append(i)
xiupai(1,1)
#顺手牵羊
elif i>=92 and i<=96:
list1.remove(i)
list_qidui.append(i)
getpai(list1,list2,1)
#过河拆桥
elif i>=86 and i<=91:
list1.remove(i)
list_qidui.append(i)
if len(list3)>0:
xiupai(3,-1)
else:
xiupai(2,-1)"""
如果菜鸡代码真有人要抄着做实验的话……(算了,自说自话的UP是屑)


真就传统异能,一张图用一年。