扑克牌比大小

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/he_wen_jie/article/details/82906579
n = int(raw_input().strip())
    
val1 = []
val2 = []
for i in range(n):
    val1.append(map(int,raw_input().strip().split())) # 第一个玩家的牌
    val2.append(map(int,raw_input().strip().split())) # 第二个玩家的牌

def pai(val):
    '''
    san    : 0 5 1 1 1 1 1     散牌
    1 dui  : 1 4 2 1 1 1       1个对子
    2 dui  : 2 3 2 2 1         2个对子
    3 tiao : 3 3 3 1 1         3个相同的
    sun zi : 4 5 1 1 1 1 1     连着的
    hulu   : 5 2 3 2           三个相同,其余两个相同
    4 tuai : 6 2 4 1           四个相同的
    '''
    
    flag = 0
    tmp = {}
    for v in val:
        if v not in tmp:
            tmp[v] = 1
        else:
            tmp[v] += 1
    tmp = sorted(tmp.items(),key=lambda x:(x[1],x[0]),reverse=True)
        
    v,cnt = zip(*tmp)
    
    if len(cnt) == 2:
        if cnt == (4,1):
            flag = 6
        elif cnt == (3, 2):
            flag = 5
    elif len(cnt) == 3:
        if cnt == (3,1,1):
            flag = 3
        elif cnt == (2,2,1):
            flag = 2
    elif len(cnt) == 4:
        flag = 1
    elif len(cnt) == 5:
        if v[0] - v[-1] == 4:
            flag = 4
        else:
            flag = 0
    
    return v,cnt,flag
    
def xu(val1, val2):
    v1,cnt1,flag1 = pai(val1)
    v2,cnt2,flag2 = pai(val2)
    
    if flag1 > flag2:
        return 1
    elif flag1 < flag2:
        return 2
    else:
        if v1 == v2:
            return 0
        elif v1 < v2:
            return 2
        else:
            return 1
        
for v1,v2 in zip(val1,val2):
    print xu(v1,v2)

猜你喜欢

转载自blog.csdn.net/he_wen_jie/article/details/82906579
今日推荐