基於Python實現撲克牌面試題

2022-09-26 20:03:13 字數 1052 閱讀 9662

據說是騰訊的面試題,以下是要求:

一副從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...