การแข่งขันด้านโปรแกรมมิ่งคงจะไม่มีการแข่งขันไหนที่จะสุดยอดไปกว่าการแข่งขันแก้โจทย์และอัลกอริทึม และในปีนี้ก็จบลงแล้วเรียบร้อยสำหรับการแข่งขัน Competitive Programming รายการระดับโลกแห่งปี 2020 ที่มีชื่อว่า Facebook Hacker Cup - 2020 ซึ่งจัดโดย Facebook โดยผู้ชนะในปีนี้ก็คือ Gennady Korotkevich หรือฉายาที่สาวก Competitive Programming รู้จักกันดีคือ "Tourist" และแน่นอนว่าคนที่จะสามารถทำโจทย์เหล่านี้ได้ ต้องมีพื้นฐานทางคณิตศาสตร์ที่แน่นมากพอสมควร
Gennady Korotkevich (Photo: Gennady Korotkevich FB Page)
Facebook hacker cup คืออะไร ?
Facebook Hacker Cup คือการแข่งขันโปรแกรมมิ่งในระดับนานาชาติ จัดโดยเฟสบุ๊ค โดยเป็นรายการเรียกได้ว่าเป็นระดับ Top ของการแข่งขันโปรแกรมมิ่ง ระดับเดียวกับ Google Code Jam, Top Coder Open ซึ่งถ้าเปรียบเทียบกับกีฬาอื่น ๆ เช่น เทนนิส หรือ กอล์ฟ ก็คงเป็นการแข่งขันระดับแกรนด์สแลม แนวทางการแข่งนั้นเพื่อแก้ไขปัญหาทางคณิตศาสตร์และอัลกอรึทึม ซึ่งได้มีการจัดแข่งในทุก ๆ ปี มีมาตั้งแต่ปี 2011 โดยผู้ชนะนั้นมีสิทธิได้รับ Offer ให้เข้าทำงานกับ Facebook ซึ่งในปี 2020 นี้ ยังถือว่าเป็นปีแรกที่จัดแบบ Online เนื่องจากสถานการณ์ การแพร่ระบาดของโรค Covid-19
Note: มีคนไทยที่เขียนเกี่ยวกับโจทย์รอบแรก (Qualification Round)ไว้ ไปลองดูโจทย์และวิธีการแก้ปัญหาได้เลยครับที่มีคนไทยเราเขียนเอาไว้ Facebook Hacker Cup 2020: Qualification Round
Overview
ภาพรวมของการแข่งขัน Facebook Hacker Cup จาก WikiPedia
- รางวัล: เงินรางวัลรวม $US 40,000 อันดับ 1 ได้ $US 20,000 (6 แสน กว่าบาท)
- ความถี่: จัดแข่งขันทุกปี
- ปีที่จัด: 2011 - ปัจจุบัน
- จำนวนผู้เข้าแข่งขันปี 2020: 18,000 คน
- ผู้จัด: Facebook
- เว็บไซต์: Facebook Coding Competition Hacker Cup
รอบการแข่งขัน ปี 2020
การแข่งขันก่อนนั้นจะแบ่งออกเป็นรอบ ๆ ในแต่ละช่วงของปีนั้น ๆ โดยมีจำนวนทั้งหมด 5 รอบ
ดังนี้
รอบคัดเลือก (สรุป)
รอบคัดเลือกคือรอบแรกสุดจากทั้งหมด 5 รอบ ในปี 2020 สรุปไฮไลต์สำคัญได้ดังนี้
- คือรอบแรกสุด
- เริ่มแข่ง เสาร์ที่ 15 สิงหาคม 2563
- เวลาในการแข่งขัน 72 ชั่วโมง
- ผู้ที่สามารถทำโจทย์ได้เพียง 1 ข้อก็สามารถผ่านเข้ารอบต่อไป
- มีผู้เข้าแข่งขันทั้งสิ้น 18,000 คน
- มีโจทย์ทั้งหมด 5 ข้อ คะแนนรวม 100 คะแนน
- คะแนนในแต่ละข้อ A, B, C, D1, D2 คือ 10, 15, 21, 16 และ 38 ตามลำดับ
- 14,000 คน สามารถแก้ไขโจทย์ได้ 1 ข้อเป็นอย่างต่ำ
- Kamil Dębowski (Errichto) คือคนแรกที่ที่แก้โจทย์ได้ 4 ข้อแรกจาก 5 ข้อ โดยใช้เวลาเพียง 31 นาที
- Nick Wu (ko_osaga fan club) คือคนแรกที่ส่งคำตอบได้ครบทั้ง 5 ข้อก่อนใครเพื่อน แต่ว่าสุดท้ายคำตอบข้อ C ผิด
- ท้ายที่สุดได้ผู้ชนะคือ Benjamin Qi (Benq) ที่แก้โจทย์ได้ถูกต้องและครบทั้ง 5 ข้อ โดยใช้เวลาไป 44 นาที เท่านั้น
- มีผู้เข้าแข่งขันที่แก้โจทย์ได้ถูกต้องทั้ง 5 ข้อ จำนวนทั้งสิ้น 300 คน
- ผ่านเข้ารอบ 14,000 คน
Round 1 (สรุป)
รอบแรกอย่างเป็นทางการมีอะไรน่าสนใจบ้างไปดูกันครับ
- คือรอบแรกอย่างเป็นทางการ
- เริ่มแข่ง อาทิตย์ที่ 16 สิงหาคม 2563
- เวลาในการแข่งขัน 24 ชั่วโมง
- 4,200 คือจำนวนผู้เข้าแข่งขันที่ผ่านเข้ามาในรอบนี้
- ผ่านเข้ารอบ 2 จำนวน 1,700 คน ด้วยคะแนนอย่างน้อย 25 คะแนน
- มีโจทย์ทั้งหมด 5 ข้อ คะแนนรวม 100 คะแนน
- คะแนนในแต่ละข้อ A1, A2, A3, B, C คือ 10, 15, 17, 20 และ 38 ตามลำดับ
- Andrew He (ecnerwala) ได้อันดับ 1
- มีผู้เข้าแข่งขันที่แก้โจทย์ได้ถูกต้องทั้ง 5 ข้อ จำนวนทั้งสิ้น 90 คน
- มีปัญหาเกิดขึ้นในโจทย์ข้อ B ทำให้ต้องลดคะแนนในการคัดเลือกตัวผู้เข้ารอบ 2 เหลือ 25 จากปกติ 30 คะแนน สามารถดูคำอธิบายของโจทย์ข้อที่ผิดพลาดได้ที่ B: Dislodging Logs
Round 2 (สรุป)
รอบนี้มีข้อมูลน่าสนใจอะไรบ้าง ไปอ่านพร้อม ๆ กันเลยครับ
- คือรอบสอง
- เริ่มแข่ง อาทิตย์ที่ 30 สิงหาคม 2563
- เวลาในการแข่งขัน 3 ชั่วโมง
- 1,550 คือจำนวนผู้เข้าแข่งขันที่ผ่านเข้ามาในรอบนี้
- 200 คนที่ได้คะแนนดีที่สุดในรอบนี้จะได้ผ่านเข้าสู่รอบ 3 (รอบรองชนะเลิศ/Semifinal)
- มีโจทย์ทั้งหมด 4 ข้อ คะแนนรวม 100 คะแนน
- คะแนนในแต่ละข้อ A, B, C และ D คือ 12, 23, 29 และ 36 ตามลำดับ
- ผู้ชนะในรอบนี้คือ Benjamin Qi (Benq)
- ที่จริงแล้ว Ecnerwala (ผู้ชนะ Round 1) เป็นคนแรกที่แก้โจทย์ได้ครบทั้งหมดในรอบนี้ และควรได้อันดับ 1 โดยใช้เวลาไป 1 ชั่วโมง กับอีก 6 นาที แต่ว่าได้อันดับ 2 เนื่องจากว่าเกิดการดีเลย์ในช่วงการส่งคำตอบทำให้โดนแซงไปฉิวเฉียด
- ได้ 100 คะแนนเต็ม 90 คน
- ผ่านเข้ารองชนะเลิศจำนวน 200 คน (ที่คะแนนดีสุด)
Round 3 (สรุป)
ไปดูกันว่าในรอบรองชนะเลิศนี้เป็นอย่างไรบ้าง
- คือรอบรองชนะเลิศ
- เริ่มแข่ง อาทิตย์ที่ 30 สิงหาคม 2563
- เวลาในการแข่งขัน 3 ชั่วโมง
- 200 คน คือจำนวนผู้รอดชีวิตที่ผ่านเข้ามาในรอบนี้
- 25 คนที่คะแนนดีสุดในรอบนี้ จะได้ผ่านเข้าไปห้ำหั่นกันในรอบชิงชนะเลิศ (รอบสุดท้าย)
- มีโจทย์ทั้งหมด 4 ข้อ คะแนนรวม 100 คะแนน
- คะแนนในแต่ละข้อ A, B, C และ D คือ 10, 25, 30 และ 35 ตามลำดับ
- ผู้ชนะในรอบนี้คือ Алексей Данилюк (Um_nik) โดยใช้เวลาไป 2 ชั่วโมง กับอีก 15 นาที
- Benjamin Qi (Benq) ได้อันดับ 2
- ได้ 100 คะแนนเต็ม 8 คน
- ผ่านเข้ารอบชิงชนะเลิศ 25 คน
รอบชิงชนะเลิศ (รอบสุดท้าย)
เข้ามาถึงรอบสุดท้ายแล้ว รู้สึกว่าดุเดือดเข้มข้นมาก ๆ ครับ
- คือชิงชนะเลิศ
- เริ่มแข่ง เสารที่ 5 ธันวาคม 2563
- เวลาในการแข่งขัน 4 ชั่วโมง
- 25 คน คือจำนวนเทพเจ้าผู้ผ่านเข้ามาฟาดฟันกันในรอบนี้
ซึ่งโจทย์ในรอบชิงชนะเลิศจะมีทั้งหมด 6 ข้อ รวม 100 คะแนน (คลิ๊กดูโจทย์ได้ในลิ้งค์)
ผู้ชนะ Facebook Hacker Cup 2020 และอันดับที่น่าสนใจ
- Gennady Korotkevich คว้าอันดับ 1
- ที่ 1 Leetcode (Neal Wu) ได้อันดับ 11
- Ecnerwalar ผู้ชนะ Google
Kickstart Round สุดท้ายของปี ได้อันดับ 3
- Erricto ได้อับดับ 16 (เกือบได้ที่ 1 แต่คำตอบในข้อสุดท้ายผิด เลยหล่นมา 16)
- ในจำนวน 25 คนที่เข้าแข่งขัน ไม่มีใครสามารถแก้ปัญหาโจทย์ในข้อสุดท้ายข้อ F โจทย์ชื่อว่า Cake-Cutting Committee (24 คะแนน) ซึ่งเป็นโจทย์ที่มีคะแนนให้เยอะสุด ยกเว้นหนุ่มชาวญี่ปุ่นที่มีชื่อว่า Riku Kawasaki (maroonrk)
- อันดับ 1 - 8 ได้คะแนนเท่ากันคือ 76 คะแนน
Note: ในส่วนของ Ecnerwalar นั้นสามารถอ่านเพิ่มเติมได้ในบทความ
ecnerwala ผู้ชนะGoogle Kickstart 2020 Round H(Round สุดท้าย)
ตารางสรุปอันดับ 1 - 5 (ได้ 76 คะแนนเท่ากัน ผู้ชนะคือเวลาดีสุด)
อันดับ | ชื่อ | เงินรางวัล $US |
1 | Gennady Korotkevich (tourist)
| 20,000 |
2 | Benjamin Qi (Benq)
| 10,000 |
3 | Andrew He (ecnerwala)
| 5,000 |
4 | Petr Mitrichev (Petr)
| 3,000 |
5 | Ildar Gainullin (300iq)
| 1,000 |
Leader board - อันดับในปี 2020 (ล่าสุด)
สถิติการแข่งขันย้อนหลังตั้งแต่ปี 2011
ไปดูสถิติย้อนหลังที่น่าสนใจกันครับ
สถิติการแข่งขันตั้งแต่ปี 2011 - ปัจจุบัน
จากสถิติดังภาพด้านบนสรุปไฮไลต์ที่สำคัญได้ดังนี้
- Gennady Korotkevich (Tourist) ชนะเลิศการแข่งขันมากที่สุดถึง 4 ครั้ง (คนนี้คือตำนานของจริง)
- Petr Mitrichev ชนะเลิศถึง 3 ครั้ง (ตอนนี้ Mitrichev ได้ทำงานที่ Google เกี่ยวกับ Search Engine)
- ประเทศที่ชนะเลิศมากที่สุดคือ รัสเซีย ชนะไปถึง 5 จาก 10 ครั้ง
- ทวีปยุโรปชนะไปเยอะที่สุดคือ 9 ครั้ง ส่วนเอเชียได้มา 1 คือ ญี่ปุ่น
- มีชาติอาเซียนของเราเข้าไปแจมด้วย 1 คือเวียดนาม โดยได้อันดับ 2 ในปีแรก (2011) กันเลยทีเดียว เห็นกันแล้วครับว่าเวียดนามนั้น วงการโปรแกรมเมอร์เขาไม่ธรรมดา
- ปี 2020 คือปีแรกที่จัดแบบ Online
ตารางสรุปประเทศที่ชนะเลิศและแข่งขันใน Top 3 ตั้งแต่ปี 2011 - 2020 (ปัจจุบัน)
ประเทศ | อันดับ 1 | อันดับ 2 | อันดับ 3 |
Russia | 5 | 1 | 3 |
Belarus | 4 | 0 | 0 |
Japan | 1 | 1 | 1 |
Poland | 0 | 3 | 1 |
China | 0 | 1 | 2 |
USA | 0 | 1 | 2 |
South Korea | 0 | 1 | 0 |
Ukraine | 0 | 1 | 0 |
Vietnam | 0 | 1 | 0 |
Taiwan | 0 | 0 | 1 |
จากตารางด้านบนนั้นบ่งอีกอีกอย่างหนึ่งได้ว่า ชาติที่เคยเป็นสหภาพโซเวียตเก่านั้น ฝีมือและทักษะด้านโปรแกรมมิ่งนั้นไม่ว่าจะเป็น Algorithm และ Problem Solving นั้น สุดติ่ง ไม่ธรรมดาจริง ๆ ไม่แปลกใจว่า ทำไมพวกเขาถึงสามารถส่งยานอวกาศขึ้นไปโคจรรอบโลกได้เป็นชาติแรก
สุดท้ายแล้วจบลงไปแล้วกับผลสรุปการแข่งขัน Facebook Hacker Cup ในปี 2020 หวังว่าคงจะได้อะไรจากบทความนี้ ถ้ามีข้อแลกเปลี่ยนหรือความคิดเห็นใด ๆ ก็อย่าลังเล สามารถคอมเมนต์เข้ามาได้ที่คอมเมนต์ด้านล่างได้เลยครับ พบกันในบทความถัดไป
📒อยากแชร์เรื่องราว สาระดี ๆ หรือบทความเทคนิคแบบละเอียด ด้านโปรแกรมมิ่งหรือเป็น Contributor ให้กับบทความ เพื่อส่งต่อความรู้ดี ๆ ที่มีให้กับผู้อื่น อย่าลังเลที่จะ Inbox เข้ามาในเพจ STACKPYTHON ได้เลยครับ
| Like | Comment | Share | >> STACKPYTHON
References
WikiPedia - Facebook Hacker Cup
Facebook Competition - Hacker Cup 2020
Cover photo
Canva