Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python รับพีชคณิตทุกขนาด r ของสตริง


สมมติว่าเรามีสตริง s และตัวเลข r เราต้องแสดงการเรียงสับเปลี่ยนทั้งหมดของ r จำนวนอักขระใน s เรามีฟังก์ชันพีชคณิต () เพื่อรับพีชคณิตทั้งหมด ฟังก์ชันนี้มีอยู่ในไลบรารี itertools

ดังนั้น หากอินพุตเป็น s ="HELLO" r =3 ผลลัพธ์จะเป็น

>['HEL', 'HEL', 'HEO', 'HLE', 'HLL', 'HLO', 'HLE', 'HLL', 'HLO', 'HOE', 'HOL', 'HOL', 'EHL', 'EHL', 'EHO', 'ELH', 'ELL',
'ELO', 'ELH', 'ELL','ELO', 'EOH', 'EOL', 'EOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE',
'LOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'OHE', 'OHL', 'OHL', 'OEH', 'OEL',
'OEL', 'OLH', 'OLE', 'OLL', 'OLH', 'OLE', 'OLL']

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • vals:=รายการที่มีการเรียงสับเปลี่ยนของขนาด r จาก s
  • res:=รายการใหม่
  • สำหรับแต่ละ x ใน vals ทำ
    • แปลงรายการอักขระ x เป็นสตริงและแทรกลงใน res
  • ผลตอบแทน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น

from itertools import permutations
   def solve(s, r):
   vals=list(permutations(s,r))
   res=[]
   for x in vals:
      res.append(''.join(x))
   return res

s = "HELLO"
r = 3
print(solve(s, r))

อินพุต

"HELLO", 2

ผลลัพธ์

['HEL', 'HEL', 'HEO', 'HLE', 'HLL', 'HLO', 'HLE', 'HLL', 'HLO', 'HOE',
'HOL', 'HOL', 'EHL', 'EHL', 'EHO', 'ELH', 'ELL', 'ELO', 'ELH', 'ELL', 'ELO',
'EOH', 'EOL', 'EOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE',
'LLO', 'LOH', 'LOE', 'LOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH',
'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'OHE', 'OHL', 'OHL', 'OEH', 'OEL', 'OEL',
'OLH', 'OLE', 'OLL', 'OLH', 'OLE', 'OLL']