"开火车的纸牌游戏"-python版本

小Byte和小Dance玩一种叫“开火车的”纸牌游戏,游戏规则如下:
1.初始给两人随机平分52张扑克牌,每个人26张;
2.小Byte先开始,将第一张牌放下;
3.随后两人轮流按序(按从第一张到最后一张的顺序出牌,手中牌的顺序不可以被打乱)放置扑克,后一张扑克压在前一张扑克上;
4.如果出现之前放下的某张扑克s和将要放下的扑克t点数相同,则当前玩家获得从s到t之间所有的牌(包括s和t这两张);
5.玩家手上26张牌都出完后,清点双方获得的牌数,牌数多的玩家获胜,若相同,则平局。

输入描述:
输入包括两行,每行26个数字,分别表示两位玩家初始被随机分配的点数,第一行为小byte分到的牌。
输出描述:
若平局,则输出"Draw",否则输出获胜玩家的名字(“Byte”或"Dance").


#!/usr/bin/env python
# -*- coding: utf-8 -*-
Byte = [10, 2, 5, 6, 13, 11, 11, 4, 10, 8, 12, 5, 4, 1, 8, 1, 7,12, 4, 13, 6, 9, 9, 9, 5, 7]
Dance = [6, 3, 13, 8, 2, 3, 7, 3, 2, 2, 12, 11, 10, 6, 10, 1, 1, 12, 3, 5, 7, 11, 13, 4, 8, 9]
# Byte = raw_input()
# Dance = raw_input()
# Byte = int(Byte.split(' '))
# Dance = int(Dance.split(' '))
nu_Byte = 0                                # 统计
nu_Dance = 0
i = 0
common = []
for j in Byte:
    if j not in common:
        common.append(j)
    else:
        index = common.index(j)              # 找出此牌第一次出现的位置索引
        current_Byte = len(common) - index       # 计算Byte此次可以回收多少张牌
        nu_Byte += current_Byte
        for a in range(current_Byte):
            common.pop()                          # 删除Byte回收过的牌
    if Dance[i] not in common:
        common.append(Dance[i])
        i += 1
    else:
        index = common.index(Dance[i])              # 找出此牌第一次出现的位置索引
        current_Dance = len(common) - index       # 计算Dance此次可以回收多少张牌
        nu_Dance += current_Dance
        for b in range(current_Dance):
            common.pop()                          # 删除Dance回收过的牌

if nu_Byte == nu_Dance:
    print('Draw')
elif nu_Byte < nu_Dance:
    print('Dance')
else:
    print('Byte')

你可能感兴趣的:(笔试+面试)