มันกลับไปฤดูกาลโรงเรียน! ดังนั้นสำหรับงานพาร์ทไทม์คุณช่วยงานที่ห้องสมุดของโรงเรียน ปัญหาคือบรรณารักษ์หัวหน้าไม่เคยแม้แต่จะได้ยินคำว่า "ดิวอี้ทศนิยม" นับประสาใช้ระบบนั้น แต่ระบบการเรียงลำดับที่ใช้งานได้เพิ่มขึ้นเป็น "อินทรีย์" เนื่องจากไลบรารีได้ขยาย ...
ในความพยายามที่จะรักษาสติของคุณคุณได้เลือกที่จะเขียนโปรแกรมเพื่อช่วยคุณเรียงลำดับหนังสือขณะที่พวกเขากลับมาเพราะความฉิบหายมาถึงคุณถ้าคุณเรียงหนังสือผิด (หัวหน้าบรรณารักษ์มีความเข้มงวดมาก)
อินพุต / เอาต์พุต
- ข้อมูลที่ป้อนจะเป็นรายการชื่อหนังสือ (สมมุติฐาน) หนึ่งรายการต่อบรรทัดจากเทียบเท่า STDIN / ภาษา
- คุณสามารถสมมติว่าใส่หนังสือไม่เกิน 100 เล่มในแต่ละครั้ง (คุณสามารถพกหนังสือไปได้หลายรอบในคราวเดียว)
- หนังสือสามารถมีหลายคำในชื่อหนังสือของพวกเขาและคำเหล่านี้อาจคั่นด้วยช่องว่างหรือเครื่องหมายวรรคตอนอื่น ๆ (เช่นลำไส้ใหญ่
:
เส้นประ-
ฯลฯ ) - เพื่อความสะดวกในการคำนวณให้สมมติว่าชื่อทั้งหมดเป็น UTF-8
เอาท์พุทเป็นชื่อเดียวกันเรียงลำดับตามกฎด้านล่างอีกครั้งหนึ่งต่อบรรทัดเพื่อ STDOUT / ภาษาเทียบเท่า
กฎการเรียงลำดับ
หนังสือจะถูกเรียงลำดับตัวเลขตามค่าอักขระเฉลี่ย (เช่นค่าอักขระสะสมหารจำนวนอักขระในชื่อหนังสือ) นับตามกฎต่อไปนี้:
- ตัวละครทั้งหมดนับเพื่อกำหนดจำนวนตัวอักษรในชื่อเรื่อง
- อักษรตัวพิมพ์เล็กจะถูกนับตามตำแหน่งของพวกเขาในตัวอักษร (ก = 1, B = 2, ... Z = 26)
- หากชื่อมีตัวอักษรพิมพ์ใหญ่จะนับเป็น 1.5 ค่าตัวพิมพ์เล็ก (A = 1.5, B = 3, ... Z = 39) ("อักษรตัวใหญ่มีความสำคัญ!" บรรณารักษ์กล่าว)
- เครื่องหมาย / สัญลักษณ์แต่ละเครื่องหมายวรรคตอนในรายการนี้
!@#$%^&*()-=_+[]\{}|;':",./<>?~
นับ -1 จากค่าสะสมก่อนเฉลี่ย ("ชื่อที่ยิ่งใหญ่ไม่ใช่!") - หากชื่อมีหมายเลขซึ่งเขียนด้วยเลขอารบิคตัวเลขนั้นจะถูกลบออกจากค่าเฉลี่ยก่อนที่จะเรียงลำดับ ตัวเลขหลายตัวที่ต่อเนื่องกันจะถือว่าเป็นหนึ่งหมายเลข (เช่น
42
จะลบ 42 ไม่ใช่ลบ 4 แล้วลบ 2) ตัวเลขแต่ละตัวจะไม่ถูกนับสำหรับค่าสะสม (เช่นแต่ละหลักมีส่วนเป็น 0) แต่จะนับจำนวนตัวอักษร โปรดทราบว่าสิ่งนี้อาจส่งผลให้เกิดค่าลบและควรได้รับการปฏิบัติอย่างเหมาะสม (มีข่าวลือแล้วบรรณารักษ์เคยสอนครูคณิตศาสตร์มาหลายปีแล้ว) - หากชื่อเรื่องมีคำสองคำแยกกันที่เริ่มต้นด้วย
R
หนังสือจะได้คะแนนเป็น "อนันต์" และถูกทิ้งลงในกองที่มุม (เช่นจัดเรียงแบบสุ่มในตอนท้ายของรายการ) (บรรณารักษ์เคยถูกทิ้งโดยบุคคลที่มีชื่อย่อเหล่านั้นหรือดังนั้นคุณเคยได้ยิน) - ช่องว่างจะไม่นับสำหรับค่าอักขระสะสม (เช่นมีส่วนร่วมเป็น 0) แต่จะมีส่วนร่วมกับจำนวนอักขระในชื่อเรื่อง
- อักขระที่ไม่ตรงกับกฎข้างต้น (เช่น a
ÿ
) จะไม่นับสำหรับค่าอักขระสะสม (เช่นมีส่วนร่วม 0) แต่จะมีส่วนร่วมกับจำนวนอักขระในชื่อเรื่อง - ยกตัวอย่างเช่นหนังสือสมมุติ
ÿÿÿÿÿ
จะมี "คะแนน" ของ(0+0+0+0+0) / 5 = 0
แต่หนังสือสมมุติÿÿyÿÿ
จะมี "คะแนน"(0+0+25+0+0) / 5 = 5
ของ - หนังสือสองเล่มที่เกิดขึ้นกับ "คะแนน" เดียวกันสามารถเป็นผลลัพธ์ในการเลือกของคุณ (พวกมันอยู่บนชั้นเดียวกัน)
ตัวอย่างอินพุต 1
War and Peace
Reading Rainbow: The Best Unicorn Ever
Maus
Home for a Bunny
ตัวอย่างผลลัพธ์ 1 (ที่มี "คะแนน" ในวงเล็บเพื่อแสดงเหตุผล - คุณไม่จำเป็นต้องพิมพ์)
War and Peace (8.5)
Home for a Bunny (10.125)
Maus (15.125)
Reading Rainbow: The Best Unicorn Ever (infinity)
ตัวอย่างอินพุต 2
Matthew
Mark
Luke
John
Revelations
ตัวอย่างผลลัพธ์ 2 (ด้วย "คะแนน" ในวงเล็บเพื่อแสดงเหตุผล - คุณไม่จำเป็นต้องพิมพ์)
Mark (12.375)
John (13)
Revelations (13.545454...)
Luke (13.75)
Matthew (~13.786)
ตัวอย่างอินพุต 3
42
9 Kings
1:8
7th
ตัวอย่างผลลัพธ์ 3 (พร้อม "คะแนน" ในวงเล็บเพื่อแสดงเหตุผล - คุณไม่จำเป็นต้องพิมพ์)
42 (-42)
1:8 (-9.3333...)
9 Kings (~0.36)
7th (2.3333...)
ข้อ จำกัด อื่น ๆ
- นี่คือ Code-Golf เนื่องจากคุณจำเป็นต้องเก็บความลับของโปรแกรมจากสายตาที่บรรจบของบรรณารักษ์และยิ่งโปรแกรมเล็กลงเท่าไหร่การซ่อนก็ง่ายขึ้น
- มีข้อ จำกัด ช่องโหว่มาตรฐาน
- อย่าปล่อยให้บรรณารักษ์จับตาดูคุณด้วยการใช้เวลากับ PPCG