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

ทำไม Python จึงเหมาะสำหรับ Competitive Coding


การเขียนโปรแกรมแข่งขัน (Competitive programming) โดยทั่วไปหมายถึงการเขียนโค้ดเพื่อใช้演算法ที่มีประสิทธิภาพด้วยโครงสร้างข้อมูลที่เหมาะสม พวกเขาทดสอบทักษะของโปรแกรมเมอร์ในหลายระดับ

ด้วยความช่วยเหลือของ演算法และโครงสร้างข้อมูล คุณต้องแก้ปัญหาการเขียนโปรแกรมสมมติที่ طرحให้คุณ โดยการใช้ตรรกะที่แตกต่างกัน คุณไม่เพียงต้องแก้ปัญหา แต่ต้องหาวิธีแก้ที่มีประสิทธิภาพมาก ซึ่งมี time และ space complexity ที่ดี

ตัวอย่างข้อความปัญหาสำหรับสิ่งที่เรียกว่า competitive programming อาจเป็น −

คุณได้รับสตริง s ความยาว n ประกอบด้วยตัวอักษร Latin พิมพ์เล็กเท่านั้น

Substring ของสตริงคือ subsequence ที่ติดต่อกันของสตริงนั้น ดังนั้น สตริง "forces" เป็น substring ของสตริง "codeforces" แต่สตริง "coder" ไม่ใช่

ภารกิจของคุณคือคำนวณจำนวนวิธีในการลบ substring เพียงหนึ่งจากสตริงนี้ โดยที่ตัวอักษรที่เหลือทั้งหมดเท่ากัน (จำนวนตัวอักษรที่แตกต่างกันเป็นศูนย์หรือหนึ่ง)

รับประกันว่ามีตัวอักษรที่แตกต่างกันอย่างน้อยสองตัวใน s

สังเกตว่าคุณสามารถลบสตริงทั้งหมดได้และถือว่าถูกต้อง นอกจากนี้ สังเกตว่าคุณควรลบตัวอักษรอย่างน้อยหนึ่งตัว

เพื่อแก้ปัญหาข้างต้น คุณสามารถใช้ภาษาโปรแกรมมิ่งที่คุณชอบได้

ตอนนี้คำถามเกิดขึ้น ทำไมถึงเป็น Python สำหรับ competitive coding?

ความเร็ว (Speed)

หนึ่งในเหตุผลในการเลือก Python คือมันลดเวลาที่คุณใช้เขียนโค้ดให้เหลือน้อยมาก คุณใช้เวลาคิดเกี่ยวกับตรรกะที่จำเป็นสำหรับคำถามแทน

เพราะในการแข่งขันประเภทนี้ เวลาเป็นกุญแจ สิ่งที่โปรแกรมเมอร์เขียนโซลูชันได้เร็วเท่าไหร่ ก็จะดีขนาดนั้น ความเร็วที่กล่าวมาข้างต้นหมายถึงความเร็วที่โปรแกรมเมอร์เขียนโซลูชัน ไม่ใช่ความเร็วของภาษา Python

ไลบรารีหลากหลายมาก (Huge variety of libraries)

Python มาพร้อมกับไลบรารีมาตรฐานหลากหลายมาก และไลบรารีเหล่านี้สามารถนำไปใช้ใน competitive programming ได้ดีมาก

ด้านล่างคือรายการเหตุผลทั่วไปอื่นๆ ในการเลือก Python สำหรับ competitive coding −

i. Common inbuilt functions (ฟังก์ชัน built-in ทั่วไป):

  • Python มีชุดฟังก์ชันทั่วไปขนาดใหญ่ เช่น count, min, max, sorted เป็นต้น ฟังก์ชัน built-in เหล่านี้มาช่วยได้มาก อนุญาตให้โค้ดเดอร์ข้ามการเขียนโค้ดสำหรับขั้นตอน瑣瑣เหล่านี้ซึ่งมักมีประโยชน์มาก นอกจากนี้ ฟังก์ชันของ Python ใช้演算法ที่ดีที่สุดสำหรับฟังก์ชันของพวกมัน ตัวอย่างเช่น ฟังก์ชัน sorted() ใช้演算法 Timsort ซึ่งให้การเรียงลำดับที่เสถียร (stable) ที่ประสิทธิภาพสแควรสต O(nlogn) นี่เป็นหนึ่งใน演算法เรียงลำดับที่ดีที่สุดซึ่งให้ best case run time เป็น O(1) หรือ constant run time

โค้ด

#abs() print(abs(-7)) #max() print(max(2, 13, 4, 20)) #memoryview() print(memoryview(bytes(9))) #object() o = object();print(type(o)) #pow() print(pow(2,6)) #reversed a = reversed([3, 13, 2, 1]); print(a) #sorted() print(sorted([9, 2, 4, 13, 7])) #sum() print(sum([2, 9, 12, 19])) # type() print (type([])) print (type({})) #zip() print(set(zip([1,2],[3,4,5])))

ii. List Comprehensions

  • Python มี List Comprehensions ที่ดีที่สุดหนึ่ง อนุญาตให้เราเขียนโค้ดที่ปกติจะใช้ 5-20 บรรทัดใน 1 บรรทัด ด้วย List comprehension คุณสามารถมี nested loops และเงื่อนไขได้

โค้ด

# วนลูปผ่านสตริงด้วย List Comprehension l_string = [ letter for letter in 'Tutorialspoint' ] print( l_string) # List Comprehensions vs Lambda functions l_lambda = list(map(lambda x: x, 'Tutorialspoint')) print(l_lambda)

ผลลัพธ์

['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't'] ['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']

iii. Standard library (ข้อได้เปรียบใหญ่)

  • Python มาพร้อมกับ Standard library ที่กว้างขวางมาก เสนอสิ่งอำนวยความสะดวกหลากหลาย ไลบรารีเหล่านี้มาพร้อมโครงสร้างข้อมูลหลายอย่างซึ่งทำให้ไม่ต้อง implement เอง และยังมี itertools ซึ่งเป็นส่วนสำคัญของไลบรารี
  • ตัวอย่างเช่น คุณต้องการสร้าง permutation ทั้งหมดที่เป็นไปได้ของลิสต์และเก็บไว้ในลิสต์เดียว โดยใช้ list comprehension และ permutation function จาก itertools

Python Standard Library

Data types
strings
networking
threads
Operating System
compression
GUI
arguments
CGI
complex numbers
FTP
cryptography
testing
multimedia
databases
CSV files
calendar
email
XML
serialization

iv. โครงสร้างข้อมูลหลากหลายมาก (A vast variety of data structures)

  • Python มีชุดโครงสร้างข้อมูลขนาดใหญ่ให้ใช้ในโค้ดของคุณ รวมถึง dictionary, sets, tuple, list และอีกมากมาย ซึ่งมาพร้อมกับแพ็กเกจมาตรฐาน

ทำไม Python จึงเหมาะสำหรับ Competitive Coding

v. ความง่ายในการใช้งาน (Ease of use)

ไวยากรณ์ของ Python อ่านง่ายเหมือนมนุษย์ และการเขียนโค้ดใน Python ง่ายและรวดเร็วมาก มันอ่านเหมือน pseudocode

>>> print("hello world!") hello world! >>> sum([3, 4, 3,5]) 15 >>> max(3, 4, 5, 13,2) 13 >>> min(3, 4, 5, 13, 2) 2