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

Python - ตัวเลขที่ใหญ่ที่สุดที่เป็นไปได้จากรายการตัวเลขที่ระบุ


ในบทความนี้ เราจะมาเรียนรู้วิธีหาจำนวนที่มากที่สุดที่เป็นไปได้จากรายการตัวเลขที่ระบุ เราจะเห็นวิธีการที่แตกต่างกันสองวิธีในการค้นหาเพื่อแก้ปัญหา ทำตามขั้นตอนด้านล่างเพื่อแก้ปัญหา

  • นำเข้าโมดูล itertools สำหรับวิธีการเรียงสับเปลี่ยน
  • เริ่มต้นรายการด้วยตัวเลขและรายการว่าง
  • วนซ้ำการเปลี่ยนแปลงของรายการ
    • รวมชุดค่าผสมทั้งหมดและเพิ่มผลลัพธ์ลงในรายการว่าง
  • ค้นหาจำนวนสูงสุดจากผลลัพธ์ด้วยวิธี max และคีย์เป็น int
  • แปลงสตริงเป็นจำนวนเต็มแล้วพิมพ์

ตัวอย่าง

มาดูโค้ดกันเลย

# importing the module
import itertools

# initializing the list
numbers = [45, 35, 138, 43, 67]

# result
result = []

# permutations
for permutation in itertools.permutations(str(number) for number in numbers):
   result.append(''.join(permutation))

# finding max
maximum = max(result, key=int)

# printing the max
print(int(maximum))

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

ผลลัพธ์

67454335138

เรามาดูวิธีแก้ปัญหาอื่นกัน เราจะจัดเรียงฟังก์ชันเพื่อแก้ปัญหา ทำตามขั้นตอนด้านล่างเพื่อเขียนโค้ด

  • ส่งรายการไปยังฟังก์ชันที่จัดเรียง
  • เขียนฟังก์ชันที่เรียกว่า get_key ซึ่งยอมรับสองอาร์กิวเมนต์
  • คืนค่า -1 ถ้า str(ก่อน) + str(วินาที)> str(วินาที) + str(ก่อน) อื่น 1.
  • การเข้าร่วมรายการองค์ประกอบโดยใช้วิธีการเข้าร่วม
  • พิมพ์ผลลัพธ์โดยแปลงเป็นจำนวนเต็ม

เนื่องจากเราใช้ฟังก์ชันเป็นคีย์ เราจึงต้องแปลงเป็นคีย์โดยใช้วิธี cmp_to_key จาก functools มาดูโค้ดกันเลย

ตัวอย่าง

from functools import cmp_to_key

# initializing the list
numbers = [45, 35, 138, 43, 67]

def get_key(first, second):
   if str(first) + str(second) > str(second) + str(first):
      return -1
   return 1

# getting the result
result = sorted(numbers, key=cmp_to_key(get_key))

# joining the result
result = "".join(str(integer) for integer in result)

# printing the result
print(int(result))

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

ผลลัพธ์

67454335138

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น