แก้ไข: ตอนเขียนกระทู้เมานิดหน่อยครับ ลืมข้อมูลสำคัญไปว่า เราเสมออยุธยาในเล็กแรก
------------------------
ตารางคะแนนที่อยู่บนเว็บเราในหน้านี้ (http://www.samutprakanfc.com/match/scoretable) ผมจะอิงตามหลักเกณฑ์การจัดอันดับที่ออกโดยสมาคมนะครับ (ดูได้ที่ด้านล่างของหน้า) แล้วผมก็สั่งให้ตารางมันจัดเรียงข้อมูลไปตามนั้น
โดยอัตโนมัติ กล่าวคือ
คะแนน > head to head > wins > GD > ลูกได้
ปัญหาคือ
ผมยังไม่สามารถหาวิธีสั่งให้มันจัดเรียงตาม head-to-head ได้ครับ
ฉะนั้น อันดับของสิงห์บุรีกับสระบุรีจะสลับกันอยู่ (สิงห์บุรีแพ้สระบุรีในเล็กแรก และยังไม่เจอกันในเล็กสอง)
และ อันดับของลพบุรีกับฉะเชิงเทราก็สลับกันอยู่เหมือนกันครับ (ลพบุรีแพ้ฉะเชิงเทราในเล็กแรก และยังไม่เจอกันในเล็กสอง)
การสั่งให้ตารางจัดอันดับโดยอัตโนมัติ โดยมีหลักเกณฑ์หนึ่งในนั้นเป็น head-to-head จำเป็นต้องใช้อัลกอริทึมที่ซับซ้อนมากเกินกว่าผมจะทำได้ในตอนนี้ เพราะสถานการณ์แปลกๆ อาจเกิดขึ้นได้มากมาย ตัวอย่างเช่น
สมมุติ A, B, C คะแนนเท่ากัน ถ้า
A ชนะ B
B ชนะ C
C ชนะ A
แค่นี้ก็จัดอันดับไม่ได้แล้ว เกณฑ์ head-to-head ก็ต้องถูกข้ามไป
หรืออย่างเช่นในตารางตอนนี้ ไทยซัมมิทชนะฉะเชิงเทรา ฉะเชิงเทราชนะลพบุรี ลพบุรีเสมอไทยซัมมิท และทั้งสามทีมเพิ่งเจอกันครั้งเดียว
แบบนี้เราควรข้ามเกณฑ์นี้ไป หรือว่าเรียงลำดับเป็น ท ฉ ล กันล่ะ?!ตัวอย่างนี่แค่สามทีมนะครับ และพบกันแค่ครั้งเดียว แต่ถ้าจำนวนทีมมากกว่านี้ และพบกันแบบเหย้าเยือน การเขียนโปรแกรมให้รองรับเป็นเรื่องปวดหัวทีเดียวเชียว แถวนี้มีเด็กคอมฯ เยอะ สนใจทำเป็นโปรเจ็กต์มั้ยครับ
เพราะฉะนั้น เดี๋ยวผมจะทำแบบ manual ไปก่อนนะครับเวลาเจอคะแนนเท่ากัน หรือใครมีไอเดียอะไรบ้างครับ ช่วยหน่อยจิ
(technical note: วิธีการที่คิดได้คือ ถ้าคะแนนเท่ากัน ให้ดูว่าเกิดกรณี transitive closure (http://en.wikipedia.org/wiki/Transitive_closure) ขึ้นหรือไม่ [ดูรูปประกอบด้านล่างครับ ลูกศรชี้ไปหมายถึงชนะ] นอกเหนือจากนี้ ให้ยกเว้นทั้งหมด แต่ดูหยาบๆ ชอบกลครับ)