การเขียนโปรแกรมที่แข่งขันกันโดยทั่วไปจะเรียกว่าการเข้ารหัสเพื่อใช้ประโยชน์จากอัลกอริธึมที่มีประสิทธิภาพโดยใช้โครงสร้างข้อมูลที่เหมาะสม พวกเขาทดสอบทักษะของโปรแกรมเมอร์ในหลายระดับ
ด้วยความช่วยเหลือของอัลกอริธึมและโครงสร้างข้อมูล คุณต้องแก้ปัญหาการเขียนโปรแกรมสมมุติซึ่งเกิดขึ้นกับคุณโดยใช้ตรรกะต่างๆ คุณไม่เพียงแค่ต้องแก้ปัญหาเท่านั้น แต่คุณต้องคิดหาวิธีแก้ปัญหาที่มีประสิทธิภาพมาก ซึ่งก็คือมีเวลาที่ดีและมีความซับซ้อนในช่องว่าง
ตัวอย่างของคำชี้แจงปัญหาสำหรับสิ่งที่เรียกว่าโปรแกรมการแข่งขันอาจเป็น -
คุณจะได้รับสตริงที่มีความยาว n ซึ่งประกอบด้วยตัวอักษรละตินตัวพิมพ์เล็กเท่านั้น
สตริงย่อยของสตริงเป็นผลสืบเนื่องต่อเนื่องกันของสตริงนั้น ดังนั้นสตริง "forces" จึงเป็นสตริงย่อยของสตริง "codeforces" แต่สตริง "coder" ไม่ใช่สตริง
งานของคุณคือการคำนวณจำนวนวิธีในการลบหนึ่งสตริงย่อยจากสตริงนี้เพื่อให้อักขระที่เหลือทั้งหมดเท่ากัน (จำนวนอักขระที่แตกต่างกันอาจเป็นศูนย์หรือหนึ่ง)
รับประกันว่ามีอักขระอย่างน้อยสองตัวใน s
โปรดทราบว่าคุณสามารถลบสตริงทั้งหมดได้และถูกต้อง นอกจากนี้ โปรดทราบว่าคุณควรลบอักขระอย่างน้อยหนึ่งตัว
ในการแก้ปัญหาข้างต้น คุณสามารถใช้ภาษาโปรแกรมใดก็ได้ตามต้องการ
ทีนี้ก็เกิดคำถามขึ้นว่าทำไม python ถึงต้องเขียนโค้ดเพื่อการแข่งขัน
ความเร็ว
เหตุผลหนึ่งที่คุณควรเลือก python ก็คือ มันลดเวลาที่คุณใช้ในการเขียนโค้ดลงอย่างมาก แทนที่จะใช้เวลาคิดเกี่ยวกับตรรกะที่จำเป็นสำหรับคำถาม
เพราะในการแข่งขันประเภทนี้เวลาเป็นกุญแจสำคัญ เร็วขึ้น โปรแกรมเมอร์สามารถเขียนวิธีแก้ปัญหาได้ดีขึ้น ดังนั้น ความเร็วที่สูงกว่า ฉันหมายถึงความเร็วที่โปรแกรมเมอร์เขียนวิธีแก้ปัญหา ไม่ใช่ความเร็วของภาษาหลาม
ห้องสมุดที่หลากหลาย
Python มาพร้อมกับไลบรารีมาตรฐานที่หลากหลาย และไลบรารีเหล่านี้สามารถใช้งานได้ดีมากในการเขียนโปรแกรมเชิงแข่งขัน
ด้านล่างนี้คือรายการเหตุผลทั่วไปอื่นๆ ในการเลือก python สำหรับการเข้ารหัสที่แข่งขันได้ -
ฟังก์ชัน inbuilt ทั่วไป:
- Python มีชุดฟังก์ชันทั่วไปจำนวนมาก เช่น count, min, max, sorted เป็นต้น ฟังก์ชัน inbuilt เหล่านี้มีประโยชน์มาก ช่วยให้ผู้เขียนโค้ดดำเนินการต่อไปได้อย่างง่ายดายและข้ามการเขียนโค้ดสำหรับขั้นตอนเล็กๆ น้อยๆ เหล่านี้ ซึ่งมักจะมีประโยชน์มาก นอกจากนี้ ฟังก์ชัน python ยังใช้อัลกอริธึมที่ดีที่สุดสำหรับฟังก์ชันต่างๆ ตัวอย่างเช่น ฟังก์ชัน sorted() ใช้อัลกอริธึม Timsort ซึ่งให้การเรียงลำดับที่เสถียรที่ประสิทธิภาพกรณีที่เลวร้ายที่สุดของ O(nlogn) นี่เป็นหนึ่งในอัลกอริธึมการเรียงลำดับที่ดีที่สุดที่ให้เวลารันเคสที่ดีที่สุดของ O(1) หรือรันไทม์คงที่
รหัส
#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. แสดงรายการความเข้าใจ
- Python ให้ความเข้าใจรายการที่ดีที่สุดอย่างหนึ่ง ช่วยให้เราสามารถเขียนโค้ดซึ่งโดยทั่วไปจะใช้เวลา 5-20 บรรทัดใน 1 บรรทัด ด้วย List Comprehension คุณสามารถมีลูปและเงื่อนไขที่ซ้อนกันได้
รหัส
# Iterating through a string Using 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.ห้องสมุดมาตรฐาน (ข้อได้เปรียบมาก)
- Python มาพร้อมกับไลบรารีมาตรฐานที่กว้างขวางมาก มีสิ่งอำนวยความสะดวกมากมาย ไลบรารีเหล่านี้มาพร้อมกับโครงสร้างข้อมูลหลายแบบซึ่งช่วยลดความจำเป็นในการใช้งานด้วยตนเอง และยังมี itertools ซึ่งเป็นส่วนสำคัญของไลบรารี่
- ตัวอย่างเช่น คุณต้องการสร้างการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดของรายการและจัดเก็บไว้ในรายการเดียว โดยใช้รายการทำความเข้าใจและฟังก์ชันการเรียงสับเปลี่ยนจาก itertools
ไลบรารีมาตรฐานของ Python
ประเภทข้อมูล | สตริง | เครือข่าย | กระทู้ |
ระบบปฏิบัติการ | การบีบอัด | GUI | ข้อโต้แย้ง |
CGI | จำนวนเชิงซ้อน | FTP | การเข้ารหัส |
กำลังทดสอบ | มัลติมีเดีย | ฐานข้อมูล | ไฟล์ CSV |
ปฏิทิน | อีเมล | XML | การทำให้เป็นอนุกรม |
iv.โครงสร้างข้อมูลที่หลากหลาย
- Python มีชุดโครงสร้างข้อมูลขนาดใหญ่เพื่อใช้ในการเข้ารหัสของคุณ รวมถึงพจนานุกรม ชุด ทูเพิล รายการ และอื่นๆ อีกมากมายที่มาเป็นแพ็คเกจมาตรฐาน
v.ใช้งานง่าย
ไวยากรณ์ของ Python นั้นมนุษย์สามารถอ่านได้และการเขียนโค้ดใน python นั้นง่ายและรวดเร็วมาก โดยพื้นฐานแล้วมันอ่านเหมือนรหัสเทียม
>>> 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