iT邦幫忙

0

資料結構_洗牌

題目

  • Input : 洗牌次數
  • Input : 洗牌後該字元的新位置,(2 3 1)即第一張牌移到位置2、第二張牌移到位置3、第三張牌移到位置1
  • Output : 洗牌後的依順序列出所有卡牌
  • Example:
    假設有卡牌 A B C
    Input : 2
    Input : 2 3 1
    第一次洗牌後 : C A B
    第二次洗牌後 : B C A
    Output : B C A

第一版,(寫得很醜)

  • 1.先把撲克牌list建好
  • 2.將order與卡牌關係放進dictionary[2]=S3
  • 3.照順序1~54將dictionary[]的值放進list
  • 4.print(list)
iRepeat = int(input())
lst_order = input().split()

sPre = 'S'
lst = []
dic = {}
#1.先把撲克牌list建好
for i in range (4):
    if i ==1:
        sPre = 'H'
    elif i == 2:
        sPre = 'C'    
    elif i ==3:
        sPre = 'D'
    for j in range(1,14):
        lst.append(sPre + str(j))
lst.append('J1')
lst.append('J2')
#print(lst)
'''
重複次數
'''
for n in range(iRepeat):
    iIndex = 0
    for i in lst_order:
		#2.將order與卡牌關係放進dictionary[2]=S3
        dic[int(i)] = lst[iIndex]#dict[int] 跟 dict[str]不同
        iIndex +=1
    for j in range(54):
		#3.照順序1~54將dictionary[]的值放進list
        lst[j] = dic[j+1]
#print(lst)
sRtn = ""
for i in lst:
    sRtn += (i + " ")
print(sRtn.rstrip())

第二版

  • 撲克牌花色放進array
  • Python可以用join以特定符號將list()隔開,' '.join(lst)
iRepeat = int(input())
lst_order = input().split()

lst_s = ['S','H','C','D']
lst = []
dic = {}
#1.先把撲克牌list建好
for i in range (4):
    sPre = lst_s[i]
    for j in range(1,14):
        lst.append(sPre + str(j))
lst.append('J1')
lst.append('J2')
#print(lst)

'''
重複次數
'''
for n in range(iRepeat):
    iIndex = 0
    #2.將order與卡牌關係放進dictionary[2]=S3
    for i in lst_order:
        dic[int(i)] = lst[iIndex] #dict[int] 跟 dict[str]不同
        iIndex +=1
        #3.照順序1~54將dictionary[]的值放進list
    for j in range(len(lst)):
        lst[j] = dic[j+1]
print(' '.join(lst))

本文純自己做題目之筆記,如有更好的方法再麻煩各位指教~~


尚未有邦友留言

立即登入留言