本題需要模擬「時鐘紙牌遊戲」的發牌和翻牌過程。遊戲規則如下:
發牌階段:將一副牌依順時針方向發到13個牌堆(代表時鐘的12個位置和中心位置),每個牌堆發4張牌。
遊戲階段:從「K」牌堆的最上面一張牌開始,翻開這張牌,根據牌面數字移動到對應牌堆,翻開該牌堆的最上面一張牌,並將原牌放在該牌堆的最下面。重複此過程,直到當前牌堆沒有未翻開的牌為止。
輸出結果:統計翻開的牌數(兩位數,不足補零)和最後一張翻開的牌
#python
def s(): # 定義主函數
while True: # 持續讀取輸入
l = input().strip() # 讀取一行輸入並去除空白
if l == '#': # 如果輸入是#就結束
break
d = [] # 初始化牌組列表
d.extend(l.split()) # 將第一行牌加入牌組
for _ in range(3): # 再讀取3行牌
d.extend(input().strip().split()) # 加入牌組
d = d[::-1] # 反轉牌組順序(因為輸入是從底部到頂部)
c = [[] for _ in range(13)] # 初始化13個牌堆(時鐘的12個位置+中心)
for i in range(52): # 發52張牌
p = i % 13 # 計算應該發到哪個牌堆(0-12)
c[p].append(d[i]) # 將牌放入對應牌堆
k = 0 # 計數器(記錄翻開幾張牌)
p = 12 # 從K牌堆(第13個位置)開始
lc = None # 記錄最後一張牌
while True: # 遊戲主循環
if not c[p]: # 如果當前牌堆沒牌了就結束
break
cc = c[p].pop() # 取出當前牌堆最上面的牌
lc = cc # 更新最後一張牌
k += 1 # 翻牌計數+1
r = cc[0] # 取得牌的數字部分
if r == 'A': # A對應1點鐘位置(索引0)
np = 0
elif r == 'T': # T(10)對應10點鐘位置(索引9)
np = 9
elif r == 'J': # J(11)對應11點鐘位置(索引10)
np = 10
elif r == 'Q': # Q(12)對應12點鐘位置(索引11)
np = 11
elif r == 'K': # K對應中心位置(索引12)
np = 12
else: # 其他數字2-9
np = int(r) - 1 # 轉數字後-1得到對應索引
p = np # 移動到下一個牌堆
print(f"{k:02d},{lc}") # 輸出結果(兩位數翻牌數,最後一張牌)
s() # 執行主函數