เกณฑ์การให้คะแนน

            สำหรับการตรวจให้คะแนนในการแข่งขันคอมพิวเตอร์โอลิมปิกระดับชาติครั้งที่ 10 นี้ ได้มีการกำหนดเงื่อนไขสำหรับการตรวจชุดทดสอบเพื่อความสะดวกในการตัดสินและสามารถรองรับการแสดงคะแนนแบบทันที โดยได้กำหนดประเภทชุดทดสอบ (test case) ที่ใช้ในการแข่งขันออกเป็น 4 ประเภทดังนี้
  1. 1.ชุดทดสอบธรรมดา (Normal test case) ชุดทดสอบนี้เหมือนกับชุดทดสอบที่ใช้ในการแข่งขันครั้งที่ผ่านๆมา โดยทำการตรวจทุกชุดทดสอบและผู้เข้าแข่งขันจะได้คะแนนตามจำนวนของชุดทดสอบที่ถูกต้อง
  2. 2.ชุดทดสอบที่จะตรวจเมื่อผ่านชุดทดสอบอื่นก่อน (Prerequisite test case) ชุดทดสอบนี้มีเพื่อประหยัดเวลาในการตรวจชุดทดสอบของเครื่องตรวจ จะทำการตรวจชุดทดสอบนี้ก็ต่อเมื่อมีการรันชุดทดสอบอื่นที่กำหนดไว้ผ่านก่อนเท่านั้นและผู้เข้าแข่งขันจะได้คะแนนตามจำนวนชุดทดสอบที่ถูกต้อง โดยจะใช้ชุดทดสอบประเภทนี้สำหรับการวัดประสิทธิภาพในการประมวลผลทั้งในแง่ของเวลาและหน่วยความจำ
  3. 3.กลุ่มชุดทดสอบที่ต้องผ่านทุกชุดทดสอบในกลุ่ม (Group test case) กลุ่มชุดทดสอบนี้มีเพื่อป้องกันผู้เข้าแข่งขันทำการเดาคำตอบจากคะแนนที่ได้ โดยรวมเอาชุดทดสอบหลายชุดมาสร้างเป็นกลุ่มของชุดทดสอบ และผู้เข้าแข่งขันจะได้คะแนนจากกลุ่มชุดทดสอบนี้เมื่อรันชุดทดสอบทุกชุดทดสอบในกลุ่มผ่านเท่านั้น
  4. 4.กลุ่มชุดทดสอบที่จะตรวจเมื่อผ่านชุดทดสอบ(กลุ่ม)อื่นและจะได้คะแนนเมื่อผ่านทุกชุดทดสอบในกลุ่ม จะทำการตรวจชุดทดสอบนี้ก็ต่อเมื่อมีการรันชุดทดสอบอื่นที่กำหนดไว้ผ่านก่อนเท่านั้นและผู้เข้าแข่งขันจะได้คะแนนเมื่อรันชุดทดสอบทุกชุดทดสอบในกลุ่มผ่านเท่านั้น
นอกจากนี้คะแนนของชุดทดสอบแต่ละชุดอาจจะกำหนดคะแนนไม่เท่ากัน โดยอาจมีการระบุเกณฑ์การให้คะแนนอย่างคร่าวๆไว้ในข้อสอบ เพื่อให้ผู้เข้าแข่งขันสามารถประเมินขอบเขตคะแนนได้

ตัวอย่างการให้คะแนนจากเกณฑ์การให้คะแนนใหม่ดังนี้

กำหนดโจทย์ "จงเขียนโปรแกรมรับค่า X เพื่อตรวจสอบว่าเป็นจำนวนเฉพาะหรือไม่ ถ้าใช่ให้แสดง Y ถ้าไม่ใช่ให้แสดง N" จากโจทย์นี้อาจสร้างโปรแกรมเฉลยและสร้างชุดทดสอบได้ดังนี้

โปรแกรมเฉลยที่ 1 ได้คะแนน 40 %   worse case
โปรแกรมเฉลยที่ 2 ได้คะแนน 100%   worse case

ชุดทดสอบ ค่า X ผลลัพธ์ Group test case Prerequisite test case น้ำหนักคะแนน
1 2 Y - - 5
2 97 Y A - 10
3 1002001 N A - 10
4 880001 Y A - 10
5 88000009 Y B 2,3,4 30
6 98029801 N B 2,3,4 30
7 1 N - - 5

            จากตัวอย่างนี้ จะเห็นว่าชุดทดสอบที่ 2-4 อยู่ในกลุ่มเดียวกันต้องรันผ่านทั้งหมดจึงจะได้ 30 คะแนน และหากรันไม่ผ่านชุดทดสอบชุดใดชุดหนึ่งในกลุ่มนี้ก็จะได้ 0 คะแนนทันที สำหรับชุดทดสอบที่ 5และ 6 จะทำการตรวจเมื่อชุดทดสอบที่ 1, 2, 3 และ 4 ผ่าน และจะได้คะแนนก็ต่อเมื่อรันผ่านทั้งสองชุดทดสอบเช่นกัน สำหรับชุดทดสอบที่ 1 และ 7 เป็นชุดทดสอบธรรมดา โดยจะตรวจชุดทดสอบนี้ทุกครั้ง



            จากชุดทดสอบที่กำหนดให้สามารถอธิบายตัวอย่างการให้คะแนนได้ดังนี้ โดยกำหนดให้ กำหนดให้ "P" แทนผลลัพธ์การรันผ่าน "X" แทนผลลัพธ์การรันไม่ผ่าน "T" แทนผลลัพธ์การประมวลผลเกินเวลาที่กำหนด และ "-" แทนการไม่ตรวจเนื่องจากไม่ผ่านเงื่อนไขการตรวจ


ผู้แข่งขัน หมายเลขชุดทดสอบ คะแนนที่ได้ หมายเหตุ
1234567
A P P X P - - P 10 ไม่ตรวจชุดทดสอบที่ 5 และ 6 เพราะ ชุดทดสอบที่ 3 ไม่ผ่าน และไม่ได้คะแนนในชุดทดสอบที่ 2-4 เนื่องจากชุดทดสอบที่ 3 ไม่ผ่าน
B X P P P P T P 35 ไม่ได้คะแนนในชุดทดสอบที่ 5 และ 6 เนื่องจากชุดทดสอบที่ 6 ไม่ผ่าน
C P P T T - - X 5 ไม่ตรวจชุดทดสอบที่ 5 และ 6 เพราะชุดทดสอบที่ 3 และ 4 ประมวลผลเกินเวลาที่กำหนด
D P P P P T T X 35  
E P P P P P P X 95  
F P P P P P X P 40  

ผู้สนับสนุน