Mahjongเป็นเกมไพ่ที่ได้รับความนิยมอย่างมากในเอเชีย โดยทั่วไปจะเล่นกับผู้เล่นสี่คนและเป้าหมายของเกมคือการเป็นคนแรกที่เล่นไพ่ที่ถูกต้องโดยใช้มือ ในไพ่นกกระจอกมีไพ่สามใบและไพ่เกียรติยศ - สำหรับความท้าทายนี้เราจะพิจารณาไพ่ที่สร้างด้วยมือจากไพ่ชุดเดียวเท่านั้น
เรียงลำดับหมายเลขจาก1
ถึง9
และมีสำเนาสี่ชุดของแต่ละรายการ มือที่ถูกต้องประกอบด้วยสี่ชุดสามและคู่รวมเป็นไพ่สิบสี่ใบ
ชุดของสามสามารถเป็นได้ทั้ง:
- แฝดสามตัวเดียวกัน (เช่น
444
) หรือ - ลำดับของไพ่สามใบติดต่อกัน (เช่น
123
หรือ678
ไม่ก็ได้357
) ลำดับไม่ห่อ (ดังนั้นจึง912
ไม่ถูกต้อง)
คู่คือไพ่สองใบที่เหมือนกัน (เช่น55
)
ความท้าทาย
ระบุไพ่ที่ถูกต้องสิบสี่ใบให้พิจารณาคะแนนตามเกณฑ์ต่อไปนี้:
Condition Description Point/s
-------------------------------------------------------------------------------
Straight Contains the sequences 123 456 789 1
Identical sequences Contains two identical sequences 1
All simples Only 2-8, no 1s or 9s 1
All sequences All sets of three are sequences 1
All triplets All sets of three are triplets 2
Flush Single-suit hand (always applies) 5
(การให้คะแนนที่นี่ขึ้นอยู่กับกฎไพ่นกกระจอกของญี่ปุ่น แต่ง่ายขึ้นอย่างมากเพื่อทำให้ข้อมูลจำเพาะยุ่งน้อยลง)
คะแนนของมือคือผลรวมของคะแนนสำหรับเงื่อนไขที่พอใจ หากมือสามารถย่อยสลายได้มากกว่าหนึ่งวิธีให้ทำคะแนนการสลายตัวสูงสุด
มือไพ่รับประกันว่าถูกต้องคือสิบสี่แผ่นจาก 1 ถึง 9 และไพ่แต่ละใบปรากฏมากที่สุดสี่ครั้งและอาจสันนิษฐานว่าเรียงลำดับแล้ว อินพุตคือรายการของตัวเลข (เป็นสตริงหรือรายการเดียวของจำนวนเต็ม) ผ่าน STDIN, อาร์กิวเมนต์ของฟังก์ชันหรือบรรทัดคำสั่ง เอาต์พุตอาจเป็น STDOUT หรือส่งคืนค่า
กรณีทดสอบ
22233355777888 -> 8 # 222 333 55 777 888, flush + all simp. + all trip.
11112345678999 -> 6 # 111 123 456 789 99, flush + straight
11123456788999 -> 5 # 111 234 567 88 999, flush only (no straight)
23344455566788 -> 7 # 234 345 456 567 88, flush + all simp. + all seq.
33334444555566 -> 8 # 33 345 345 456 456, flush + all simp. + all seq. + identical seq.
11122233377799 -> 7 # 111 222 333 777 99, flush + all trip. (no identical seq.)
12344556678889 -> 8 # 123 456 456 789 88, flush + all seq. + straight + identical seq.
11344556678999 -> 5 # 11 345 456 678 999, flush only (no identical seq.)
22233344455566 -> 8 # 222 333 444 555 66, flush + all simp. + all trip.
11112233344555 -> 5 # 111 123 234 345 55, flush only
สำหรับตัวอย่างที่ห้าถึงแม้จะมีลำดับที่เหมือนกันสองคู่ แต่เพียงคนเดียวเท่านั้นที่จำเป็นต้องอยู่เพื่อบรรลุจุดนั้น การย่อยสลาย345 345 345 345 66
จะทำคะแนนเท่ากันในขณะที่333 345 444 555 66
คะแนนแย่ลง
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟดังนั้นวิธีการแก้ปัญหาในไบต์ที่น้อยที่สุดชนะ ช่องโหว่มาตรฐานใช้
ความท้าทายที่เกี่ยวข้อง: คุณจะรออะไรอีกหรือ (แก้ปัญหาไพ่นกกระจอก)