據說是騰訊的面試題,以下是要求:
一副從1到n的牌,每次從牌堆頂取一張放桌子上,再取一張放牌堆底,直到手中沒牌。根據桌上的牌堆順序,輸出原先手中牌堆的順序陣列。
實現思路:
1、首先定義乙個2維陣列,代表最後桌上的牌堆排列情況。內部陣列flist[i][0], flist[i][1]分別程式設計客棧表示牌堆的排序和牌面的序號。
2、分n為奇數或偶數2種情況,用for迴圈逆推出原牌組的的順序值(順序為小數在下,大數在上)
3、對新陣列用順序值進行逆向排序後,輸出由牌面的序號組成的陣列
def cl(n):
flst = #用陣列flst定義最後桌上的牌堆順序
for i in range(1, n+1):
flst.append([i, i])
if n%2 == 0www.cppcns.com: #n為偶數情況
for t in range(1, int(n/2)qkminqk+1): #t為迴圈次數,代表一次取牌放牌頂+牌底的過程
flst[n-t][0] = 2*t - 1
flst[t-1][0] = 2*t
else: #n為奇數情況
flst[0][0]= 1 #新牌堆首張牌必定為原牌堆的最後一張
for t in range(1, n//2+1):
flst[n-t][0] = 2*t
flst[t][0] = 2*t + 1
olst = sorted(flst, key=lambda x: x[0], reve程式設計客棧rse=true) #對二維陣列進行排序
res = qkminqk[i[1] for i in olst] #求得原牌組牌號
return res
最後測試列印結果
print(cl(10))
print(cl(11))
輸出正確
[5, 6, 4, 7, 3, 8, 2, 9, 1, 10]
[6, 7, 5, 8, 4, 9, 3, 10, 2, 11, 1]
本文標題: 基於python實現撲克牌面試題
本文位址:
撲克牌排序 趣味撲克牌
一提到撲克牌,我們就想到神秘的魔術表演,撲克牌上有很多形狀和數字,裡面蘊藏了很多數學知識哦!瞧 subway的小朋友們正在進行趣味撲克牌的遊戲呢!好多撲克牌啊!撲克牌中間怎麼是空的呢?哇,還有這麼小的撲克牌呢!一看到teacher手中的撲克牌,小傢伙們乙個個的都興奮起來,迫不及待想要分享自己的見解呢...
撲克牌原始順序 Python實現
前幾天在閒逛的時候,突然看到了乙個關於撲克牌的題目,感覺還挺有意思,就試著分析了一下並用python實現了一下。貼出原題 手中一幅撲克牌,假設順序為abcdef,把第一張放到桌面上,第二張挪到最後,第三張放到桌面,第四張挪到最後,一直到所有牌都在桌面 bcdef a cdefb defb ac ef...
模擬分發撲克牌(python實現)
52張撲克牌發個4個玩家,每人13張。要求 自動生成一幅撲克牌組 洗牌 發牌到玩家手中 將玩家手中撲克牌按花色大小整理好。思路一import random import operator defauto pokers poker for i in for j in a 2 3 4 5 6 7 8 9...