ประเภท ของ การเขียนโปรแกรมเชิงแข่งขัน

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

การแข่งขันนอกสถานที่

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

  • IOI หรือ คอมพิวเตอร์โอลิมปิก เป็นหนึ่งในการแข่งขันที่เก่าแก่ที่สุด โดยผู้เข้าแข่งขันจะเป็นผู้แทนของแต่ละประเทศจำนวน 4 คน จำกัดให้ผู้เข้าแข่งขันเป็นนักเรียนระดับมัธยมศึกษาเท่านั้น[11]
  • ACM ICPC เป็นหนึ่งในการแข่งขันที่เก่าแก่ที่สุด ผู้เข้าแข่งขันจะต้องเป็นนักเรียนระดับมหาวิทยาลัย โดยแข่งเป็นทีม แต่ละทีมมีสมาชิก 3 คน สนับสนุนโดยไอบีเอ็ม[5]
  • Topcoder Open เป็นการแข่งขันที่เริ่มในปี 2004 โดยท็อปโค้ดเดอร์

ทั้งนี้ การแข่งขันนอกสถานที่บางรายการอาจจะมีการคัดเลือกผู้เข้าแข่งขันมาจากการแข่งขันออนไลน์ก่อน ส่วนมากจะเป็นในรายการแข่งขันที่มีผู้เข้าแข่งขันจำนวนมาก ทำให้ต้องมีการแข่งขันออนไลน์หลาย ๆ รอบเพื่อคัดเลือกผู้เข้าแข่งขันให้เหลือน้อยลง และผู้เข้าแข่งขันที่ผ่านจนถึงรอบชิงชนะเลิศจะได้ไปแข่งนอกสถานที่ เช่น

  • Google Code Jam เป็นการแข่งขันที่เริ่มในปี 2003 ซึ่งทั้งจัดและสนับสนุนโดยกูเกิล[1]
  • Facebook Hacker Cup เป็นการแข่งขันที่เริ่มในปี 2011 ซึ่งทั้งจัดและสนับสนุนโดยเฟซบุ๊ก[3]

การแข่งขันออนไลน์

การแข่งขันออนไลน์คือการแข่งขันที่ผู้เข้าแข่งขันสามารถเข้าร่วมได้ผ่านทางอินเทอร์เน็ตได้ ส่วนมากจะไม่มีรางวัลตอบแทน

  • ท็อปโค้ดเดอร์ (Topcoder) เป็นบริษัทสัญชาติสหรัฐอเมริกาซึ่งจัดการแข่งขันออนไลน์ รวมถึงทำธุรกิจในด้านการเขียนโปรแกรมด้วย การแข่งขันของท็อปโคดเดอร์มีความโดดเด่นจากระบบการแข่งขันซึ่งหลังจบการแข่งเขียนโปรแกรมจะมีการแข่งขันหาข้อผิดพลาดของผู้เข้าแข่งขันคนอื่น หากสามารถหาข้อผิดพลาดได้ก็จะได้คะแนนเพิ่มขึ้น[12]
  • โค้ดฟอร์ซ (Codeforces) เป็นเว็บสัญชาติรัซเซียซึ่งจัดการแข่งขันถี่มาก (ประมาณทุก ๆ 2 อาทิตย์) มีความโดดเด่นจากระบบการแข่งขันที่สามารถหาข้อผิดพลาดของผู้เข้าแข่งขันคนอื่นได้ตลอดระยะเวลาการแข่งขัน[13]

โดยส่วนใหญ่แล้วเว็บแข่งขันออนไลน์ก็จะมีระบบตรวจออนไลน์ด้วย โดยนำโจทย์จากการการแข่งขันออนไลน์รอบก่อน ๆ มาให้ฝึกหัด

ระบบตรวจออนไลน์

ระบบตรวจออนไลน์คือเว็บที่รวบรวมโจทย์ต่าง ๆ ไว้เผื่อให้ฝึกหัดการเขียนโปรแกรม โจทย์อาจจะเป็นโจทย์จากการแข่งขันที่จบแล้ว หรือโจทย์ที่ตั้งใจเขียนมาลงในระบบตรวจออนไลน์โดยเฉพาะก็ได้

  • SPOJ ระบบตรวจออนไลน์สัญชาติโปแลนด์ซึ่งมีโจทย์เพื่อฝึกฝนการเขียนโปรแกรมมากมาย และมีบริการให้กับผู้จัดการแข่งขันในการจัดการแข่งขันเขียนโปรแกรมออนไลน์ด้วย
  • UVa Online Judge มีโจทย์กว่า 3,500 ข้อ มาจากการแข่งขันเขียนโปรแกรมออนไลน์ต่าง ๆ
  • Hust Virtual Judge เว็บสัญชาติจีน เป็นเว็บจำลองการแข่งขันออนไลน์เสมือนโดยไปดึงโจทย์และชุดทดสอบมาจากแหล่งต่าง ๆ[14]

ใกล้เคียง

การเข้ารหัสทางประสาท การเข้าถึงอินเทอร์เน็ต การเข้าเมืองกับอาชญากรรม การเขียนโปรแกรมเชิงวัตถุ การเขียนโปรแกรมเชิงแข่งขัน การเข้าตีเจาะ (การสงคราม) การเขียนโปรแกรมคอมพิวเตอร์ การเข้ารหัส การเขียนโปรแกรมเชิงฟังก์ชัน การเขียน

แหล่งที่มา

WikiPedia: การเขียนโปรแกรมเชิงแข่งขัน http://acm.hust.edu.cn:8080/judge/toIndex.action http://codeforces.com/blog/entry/456 http://www.facebook.com/hackercup http://code.google.com/codejam http://code.google.com/codejam/quickstart.html http://www.ibm.com/developerworks/university/stude... http://apps.topcoder.com/wiki/display/tc/Algorithm... http://community.topcoder.com/tco12/overview-spons... http://www.vcharkarn.com/olympic/ http://icpc.baylor.edu/q/Factsheet