ปัญหา
ให้สองคำค้นหาผู้ชนะในการต่อสู้รูทดิจิทัล
กำหนดรากดิจิตอลของคำด้วยวิธีนี้:
- ตัวอักษรแต่ละตัวจะถูกกำหนดตัวเลข: A = 1, B = 2, C = 3, ... , Z = 26
- เพิ่มค่าสำหรับแต่ละตัวอักษรเพื่อรวมคำ ยกตัวอย่างเช่น "CAT" C + A + T = 3 + 1 + 20 = 24
- เพิ่มตัวเลขหลักเดียวทั้งหมดที่ประกอบเป็นผลลัพธ์: 24 => 2 + 4 = 6
- ทำซ้ำขั้นตอนที่ 3 จนกว่าจะถึงหลักเดียว ตัวเลขหลักเดียวนั้นคือรากดิจิตอลของคำ
กฎ:
- ผู้ชนะจะได้รับการประกาศหากรากดิจิตอลของมันมีขนาดใหญ่กว่าอื่น ๆ
- หากค่ารูทดิจิทัลเท่ากันให้ตัดคำให้สั้นลงโดยลบทุกอินสแตนซ์ของตัวอักษรค่าสูงสุดออกจากทั้งคำและคำนวณใหม่
- ทำซ้ำขั้นตอนที่ # 1 และ # 2 จนกว่าจะมีผู้ชนะหรือคำใดคำหนึ่งมีตัวอักษรเพียงตัวเดียว (หรือไม่มีตัวอักษร) ที่เหลืออยู่
- หากค่ารูทดิจิทัลเท่ากันหลังจากผ่านกระบวนการทำให้สั้นคำที่ยาวกว่าจะถูกประกาศให้เป็นผู้ชนะ
- หากคำนั้นมีความยาวเท่ากันและไม่พบผู้ชนะหลังจากผ่านขั้นตอนการตัดทอนจะไม่มีการประกาศผู้ชนะ
กฎพิเศษ:
- ไม่มีการใช้งานของโมดูลัสที่ได้รับอนุญาตในการคำนวณของรากดิจิตอลตัวเอง มันสามารถใช้งานได้ทุกที่อื่น
- สมมติว่าคำจะประกอบด้วยตัวอักษรตัวพิมพ์ใหญ่เท่านั้น - ไม่มีเครื่องหมายวรรคตอนไม่มีช่องว่าง ฯลฯ
INPUT
ดึงคำผ่าน stdin (คั่นด้วยเครื่องหมายจุลภาค) พารามิเตอร์วิธีการหรือคุณต้องการ ทำให้ชัดเจนในการแก้ปัญหาของคุณหรือรหัสวิธีแยกคำหรือเตรียม
เอาท์พุท
แสดงคำที่ชนะ หากไม่มีผู้ชนะให้แสดง "STALEMATE"
ตัวอย่าง:
การป้อนข้อมูล: CAN, BAT
CAN = 18 = 9
BAT = 23 = 5
เอาท์พุท: CAN
การป้อนข้อมูล: ZOO, NO
ZOO = 56 = 11 = 2
NO = 29 = 11 = 2
OO = 30 = 3
N = 14 = 5
เอาท์พุท: NO
UPDATE : อินพุตต้องอ่านโดยใช้ stdin โดยใช้คำว่าเป็นสตริงที่คั่นด้วยเครื่องหมายจุลภาค
UPDATE : เพิ่มตัวอย่างสองสามตัวอย่างเพื่อทดสอบ
UPDATE : ชี้แจงการลบตัวอักษรที่มีค่าสูงสุดในกรณีของเน็คไท - ซึ่งจะเปลี่ยนสภาพการหยุดเล็กน้อยเช่นกัน - หากคำหนึ่งตัวอักษรหรือตัวอักษรเป็นศูนย์ยาวกระบวนการตัดทอนจะหยุดลง