Rod กำลังควบคุมเกมการ์ดระหว่างผู้เล่นสองคน: George และ Tim ปัจจุบันทิมกำลังสับไพ่ ร็อดสงสัยว่าทิมพยายามโกงดังนั้นเขาต้องการความช่วยเหลือจากคุณเพื่อตรวจสอบว่าการสับเปลี่ยนนั้นยุติธรรม
ทิมกำลังสับไพ่ overhanded: เขาตัดไพ่กองจากด้านล่างของดาดฟ้าจากนั้นก็ตัดส่วนต่าง ๆ จากด้านบนของกองไปยังด้านบนของดาดฟ้าและทำซ้ำขั้นตอนสองสามครั้ง
ร็อดเป็นตานกอินทรีและสามารถเห็นได้ว่าจำนวนบัตรของทิมถูกตัดในแต่ละครั้งอย่างไรก็ตามเขาไม่สามารถคำนวณและติดตามไพ่ได้อย่างรวดเร็วเท่าที่ทิมกำลังสับไพ่ นี่คือที่ที่คุณเข้ามา: Rod ต้องการให้คุณเขียนโปรแกรมหรือฟังก์ชั่นที่ได้รับข้อมูลการสับละเอียดอย่างละเอียดและพิจารณาว่าการสับเปลี่ยนนั้นยุติธรรมอ่อนแอหรือหลอกลวงหรือไม่
- หากหลังจากการสับไพ่ไพ่ที่อยู่ติดกันน้อยกว่า 25 คู่ยังคงอยู่ติดกัน (เรียงตามลำดับเดียวกัน) การสับไพ่นั้นยุติธรรมและเกมสามารถเล่นต่อไปได้
- ถ้าอย่างน้อย 25 (แต่ไม่ใช่ทั้งหมด) คู่ของไพ่ที่อยู่ติดกันยังคงอยู่ติดกันการสับไพ่นั้นอ่อนแอและร็อดจะทำให้ทิมกระแทกศีรษะและขอให้เขาสับไพ่เพิ่ม
- หากไพ่ทั้งหมดยังคงอยู่ในตำแหน่งเดียวกันในตอนท้ายทิมก็โกงอย่างเห็นได้ชัดและร็อดจะตีเขาด้วยปลาเทราท์ขนาดใหญ่
นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ
การป้อนข้อมูล:
คุณจะได้รับชุดตัวเลขระหว่าง 0 ถึง 52 (ทั้งเอกสิทธิ์) คั่นด้วยช่องว่างในหลายบรรทัดซึ่งแต่ละบรรทัดแสดงการสับแบบรอบที่เริ่มต้นและสิ้นสุดด้วยไพ่ทั้งหมดที่ซ้อนกัน
ในแต่ละบรรทัดหมายเลขแรกคือจำนวนไพ่ที่ทิมตัดจากด้านล่างของสำรับและแต่ละหมายเลขถัดมาคือจำนวนไพ่ที่เขาตกลงมาจากมือของเขาสู่ด้านบนของสำรับ หากไพ่ใด ๆ ยังคงอยู่หลังจากหมายเลขสุดท้ายบนบรรทัดคุณควรสมมติว่า Tim วางไพ่ไว้บนเด็ค
อินพุตรับประกันว่าถูกต้อง มีตัวเลขอย่างน้อยหนึ่งบรรทัดและแต่ละบรรทัดมีอย่างน้อย 2 หมายเลข ตัวเลขแรกในแต่ละบรรทัดไม่น้อยกว่าผลรวมของตัวเลขอื่น ๆ ทั้งหมดในบรรทัดเดียวกัน ขึ้นบรรทัดใหม่ต่อท้ายเป็นทางเลือกคุณอาจสมมติว่าอินพุตมีอย่างใดอย่างหนึ่งหรือไม่มีบรรทัดใหม่
เอาท์พุท:
โปรแกรมของคุณควรพิมพ์ / คืน "ยุติธรรม" หากการสับเปลี่ยนนั้นยุติธรรม "อ่อน" หากการสลับอ่อนแอและ "หลอกลวง" หากทิมเก็บไพ่ทั้งหมดไว้ในลำดับเดียวกัน บรรทัดใหม่ต่อท้ายเป็นตัวเลือก
ตัวอย่าง:
เด็คนี้มี 52 ใบ แต่สำหรับการสาธิตฉันจะใช้เด็คขนาดเล็ก 10 ใบ
การป้อนข้อมูล:
5 3 1
4 2 2
เด็คเริ่มต้นมองจากด้านบน: 0 1 2 3 4 5 6 7 8 9
5
➜ 0 1 2 3 4
( 5 6 7 8 9
ในมือ)
3
➜ 5 6 7 0 1 2 3 4
( 8 9
ในมือ)
1
➜ 8 5 6 7 0 1 2 3 4
( 9
ในมือ)
ปลายแถว9 8 5 6 7 0 1 2 3 4
4
➜➜ 9 8 5 6 7 0
( 1 2 3 4
ในมือ)
2
➜ 1 2 9 8 5 6 7 0
( 3 4
ในมือ)
2
➜ ( ในมือ) ➜ 3 4 1 2 9 8 5 6 7 0
4 คู่ยังคงติดกัน:(3 4) (1 2) (5 6) (6 7)
กรณีทดสอบ:
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
เอาท์พุท: fair
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5
เอาท์พุท: weak
29 24
19 18
38 2 1 8 13 6 4
47 15 16 5 2 1 7
34 22 9 3
44 9 10 11 3 1 7
33 18 4 2 3 3
เอาท์พุท: fair
24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27
เอาท์พุท: weak
26 13
26 13
26 13
26 13
เอาท์พุท: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
เอาท์พุท: weak
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
เอาท์พุท: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
49 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
เอาท์พุท: fair
ที่ต้องการ:
- หากคุณเขียนฟังก์ชั่นสามารถอ่านได้จากอินพุตมาตรฐานหรือรับอินพุตเป็นพารามิเตอร์สตริงเดียว นอกจากนี้ฟังก์ชั่นสามารถพิมพ์ออกหรือส่งกลับ
- โปรแกรมต้องสามารถรันได้ใน Linux โดยใช้ซอฟต์แวร์ที่มีให้ฟรี
- ซอร์สโค้ดต้องใช้อักขระ ASCII เท่านั้น
- ไม่มีช่องโหว่มาตรฐาน