แข่งเขียนโปรแกรม
DESCRIPTION
เกี่ยวกับงานแข่งเขียนโปรแกรมต่างๆ ในประเทศไทย(โอลิมปิก, ACM-ICPC, Google Code Jam, Thailand Code Jom, NSC)TRANSCRIPT
แขง่อะไร ดยีงัไง เร่ิมยงัไง
แขง่เขยีนโปรแกรม
การแขง่ขนัเขยีนโปรแกรม
การแขง่ขนัเขยีนโปรแกรม
มหีลายการแขง่ขนั และหลายรูปแบบ
คอมพวิเตอร์โอลมิปิก
• ไมเ่กินมธัยม
• แกโ้จทยปั์ญหาทางคณิตศาสตร์
• เขยีนภาษา C/C++/Java
• อา่น/แกโ้จทย ์ผา่น command line
• 3 ชัว่โมง 4-5 ขอ้
• ตวัอยา่ง
• พาลินโดรมคือ
• ในตารางน้ี มพีาลินโดรม(ที่ยาว 2 ขึ้นไป)กี่ตวั
• เมืองแตล่ะเมืองมถีนนเช่ือมกนัแบบในรูป
• เราจะท าลายถนนไดม้ากที่ สุดกี่ เสน้
ที่จะยงัท าใหค้นในแตล่ะเมือง
ยงัสามารถเดินทางไปเมืองอ่ืนๆ ไดทุ้กเมือง
• กอ่นไปแขง่ระดบันานาชาติ จะผา่นคา่ยอบรบหลายรอบมาก
• สอวน. คา่ย 1, คา่ย 2, ทัว่ประเทศ
• สสวท. รอบ 50 คน, 30 คน, 15 คน, 7 คน, 4 คน
• คา่ย สสวท. = โควตา้เขา้ วิศวฯคอม (จุฬา เกษตร)
• ตวัแทนประเทศ = ทุนเรียน ป.เอก ที่ตา่งประเทศ
• กลายเป็นฟ้าที่อยูเ่หนือฟ้า หน่ึงในใตห้ลา้ปฐพี…
ACM-ICPC
• ระดบัมหาวิทยาลยั
• โจทยแ์นวเดยีวกบั IOI แตย่ากกวา่
• กลุม่ 3 คน แตค่อม 1 เคร่ือง
• 5 ชัว่โมง 8-10 ขอ้
• แกโ้จทยเ์สร็จ จะมคีนถือรางวลัมาให ้…เป็นลูกโป่ง!?
• เร่ิมจากการแขง่ระดบัภาค (ไดอ้บรมฟรี)
• ไประดบัประเทศ (ไดไ้ปภูเกต็)
• ไประดบัภูมิภาค (ไดไ้ปตา่งประเทศ)
• ไป World Final (ไดแ้ชมป์โลก!?)
Google Code Jam
• ใครแขง่กไ็ด ้แขง่ Online
• จดัโดย
• 2.5 ชัว่โมง 3-5 ขอ้
• ชนะไดเ้งิน $5,000 (160k บาท) ไดไ้ปแขง่ที่ Google
• อาจจะไดร้ับเขา้ท างานกบั Google
Thailand Code Jom
• เขยีนเอามนัส ์
• โจทยแ์นว IOI แตง่่ายกวา่
• กติกาคือ ทมีไหนเขยีนชา้จะ “จมน ้า”
• ทมีที่ “มชีวิีตรอด” เป็นทมีสุดทา้ย จะเป็นแชมป์
National Software Contest
• แตกตา่งจากที่ พูดมาทัง้หมด
• “แขง่พฒันาซอฟตแ์วร์”
• เกม, การเรียนรู,้ ชว่ยคนพิการ, เวบ็ไซต,์ Mobile App
งานพฒันาดา้นวิทยาศาสตร์และเทคโนโลย ี
• ม ี3 รอบ
• ผา่นรอบคดัเลือกไดเ้งิน 3000 บาท
• ผา่นรอบเสนอกรรมการ 7000 บาท
• รอบชิง รางวลัที่ 1-3 ประมาณ 60000-20000 บาท
• การแขง่ขนัพฒันาซอฟตแ์วร์อ่ืนๆ
• เจา้ฟ้าไอท ี
•
รวมเว็บไซต์
IOI เว็บสอวน. www.posn.or.th
ACM ICPC www.acmicpc-thailand.org
• Google Code Jam code.google.com/codejam
Thailand Code Jom codejom.thailandoi.org
NSC www2.nectec.or.th/nsc
• Imagine Cup www.imaginecup.com
เจ้าฟ้าไอที www.frit.or.th/princess.html
เลา่
ประสบการณท์ี่ได ้
แขง่พฒันาโปรแกรม
• ตโีจทยง์าน
• ฝึกเขยีนโปรแกรมใหญ่ๆ
• การแขง่ขนัจะกดดนัเราใหท้ างานดีๆ
• หาจากในหอ้งเรียนไมไ่ด ้
• ฝึกน าเสนอ
• และการเขยีนโครงการ ท าโปสเตอร์น าเสนอ ท าแผน่พบั ฯลฯ
เขา้คา่ยติวเขม้
• เขยีนโปรแกรมคลอ่งขึ้นมาก
• ไดค้วามรู ้เยอะมาก!
• Number Theory, Graph Theory, Greedy Algorithm, Divide
and Conquer Technique, Dynamic Programming, NP-
Completeness, วิธีการพิสูจน์ทางคณิตศาสตร์, เฮือกๆ…
• ไดเ้พ่ือนกลุม่ใหม ่
• เกง่ปิงปอง และ ไดก้ินขนมตลอดเวลา
แขง่แกโ้จทยปั์ญหาแนว IOI
• คุน้เคยกบัการคิดแกปั้ญหาอยา่งเป็นระบบ
• ม ี“เคร่ืองมือทางความคิด” ในการแกปั้ญหามากขึ้น
วิธีเริ่มต้น…
สอบเขา้คา่ย สอวน.
• จ าเป็นส าหรับแขง่ IOI
• เป็นพ้ืนฐานที่ดสี าหรับแขง่ ACM ICPC,
Google Code Jam
• ลกัษณะขอ้สอบ *ยงัไมม่มีาตราฐานกลาง ขึ้นกบัศูนยส์อบ
• เนน้โจทยปั์ญหาที่คิดดว้ยเหตุผล
• วดัความรูค้ณิตศาสตร์พ้ืนฐาน (เลขฐาน เซต็
ตรรกศาสตร์ ความสมัพนัธ ์ฟงักช์นั ตรีโกณ
เรขาคณิต)
• อาจมใีหอ้า่นโคด้โปรแกรมสัน้ๆ
ตวัอยา่ง ขอ้สอบเขา้คา่ย สอวน.
• มบีอล 12 ลูก
• ในน้ี มลูีกนึงที่น ้าหนัก “ตา่ง” จากลูกอ่ืน
• ถา้เรามตีาชัง่ 2 แขนตวันึง
• หาจ านวนครั้งที่นอ้ยที่ สุดที่ ใชช้ ัง่
• โดยรับประกนัวา่สามารถระบุหา บอลที่
น ้าหนักแตกตา่ง ได ้
ตวัอยา่ง ขอ้สอบเขา้คา่ย สอวน.
• มบีอล 256 ลูก น ้าหนักตา่งกนัท ัง้หมด
• จบัคูบ่อลทุกคู ่หาลูกที่หนัก วิธี “แพค้ดัออก”
• คดัเอาลูกที่หนักที่กวา่ เขา้รอบ
• จบัคูบ่อลที่ เขา้รอบ มาชา่งดว้ยกนัเอง
• ตอ้งชา่งกี่ครั้งจนกวา่จะไดลู้กที่หนักที่ สุด ?
• หลงัจากไดลู้กที่หนักที่ สุดแลว้
• จะหาวา่ลูกไหนหนักที่ 2 ตอ้งชา่งอกีนอ้ยที่ สุด
กี่ครั้ง ?
ตวัอยา่ง ขอ้สอบเขา้คา่ย สอวน.
• f(x-2) = x2 – x + 1
f(1) + f(2) = ?
• 2x2 + 2y2 + 3x - 4y = 0
หาพ้ืนที่ของวงกลมน้ี
• 1, 1, 2, 3, 5, 8, 13, …
ตวัถดัไปคืออะไร
ลองท าโจทยอ์อนไลน์
• League.thailandoi.org
• จดัแขง่ทุกเดือน! โดยกลุม่เดก็คอมโอและคณะ
• แบง่ division แบบฟุตบอล
• Programming.in.th
• ติวภาษา C เบ้ืองตน้
• รวมโจทยจ์ากการแขง่จริงระดบัตา่งๆ
• มขีอ้สอบขอ้เขยีนปีเกา่ๆ
• เวบ็ตา่งประเทศ ใหค้น้วา่ “online judge” …มเีตม็
มาเขียนโปรแกรมกันเถอะ http://www.flickr.com/photos/stuckincustoms/4076310756/sizes/o/in/photostream/