ต้องการเห็น Magic Card Trick ไหม?
เคล็ดลับการ์ดเวทย์มนตร์แรกที่ฉันได้เรียนรู้ตอนเป็นเด็กคือ: มีไพ่ 1 สำรับที่ลวดลายด้านหลังไม่สมมาตรในแนวตั้ง จัดระเบียบการ์ดทั้งหมดให้หันไปทางเดียว ขอให้คน ๆ หนึ่ง "หยิบการ์ดการ์ดใด ๆ จดจำและส่งคืนให้คุณ" ดำเนินการต่อเพื่อใส่ลงในสำรับ (ในทิศทางที่ผิด) สุ่มเล่นอย่างแรงโดยให้ภาพลวงตาว่าคุณจะไม่ทราบว่าการ์ดของพวกเขาอยู่ที่ไหน ผลิตบัตรของพวกเขาเพื่อความประหลาดใจของพวกเขา เห็นได้ชัดว่าเคล็ดลับนี้ขาดความเป็นธรรมชาติเล็กน้อยในตอนนี้ต่อวันอย่างไรก็ตามมันเป็นเรื่องที่ท้าทาย เขียนโปรแกรมซึ่งเมื่อไม่มีการป้อนข้อมูลจะส่งสำรับไพ่แบบสุ่มที่มีการสับไพ่หนึ่งใบเลือกโดยสุ่มและสลับกลับ อย่างไรก็ตามเมื่ออินพุทเป็นสำรับไพ่ที่มีการ์ดหนึ่งใบกลับด้านคุณจะต้องส่งออกการ์ดที่กลับด้าน (ตามลำดับที่ถูกต้อง) สำรับไพ่ สำรับไพ่ถูกกำหนดให้เป็น: [2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS, 2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD, 2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH, 2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC] การ์ดถูกกำหนดให้เป็นหมายเลขแล้วตามด้วยตัวอักษรตัวแรกของชุดสูท ด้านหลังของการ์ดเป็นสิ่งที่ตรงกันข้ามอย่างแท้จริงตัวอักษรตัวแรกของชุดตามด้วยหมายเลข การ์ดจับรางวัล ตัวอย่างถ้าบัตรที่เราเลือกสุ่มกลับเป็น4 of Clubs (4C)เราก็จะจบลงด้วย (โดยไม่มีการสับชัด): [2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS, 2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD, 2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH, 2C,3C,C4,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC] The Shuffling จากนั้นหลังจากการสับ: [2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D] นี่เป็นเอาต์พุตที่ถูกต้องที่ให้อินพุตว่าง อินพุตเด็ค แต่ตรงกันข้ามเมื่อโปรแกรมของเราได้รับการส่งออกดังกล่าวข้างต้นเป็น input 4Cก็ควรเอาท์พุท กล่าวคือสำหรับการป้อนข้อมูลของ: [2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D] คุณวนซ้ำจนกว่าคุณจะพบการ์ดที่กลับด้านแล้วคืนกลับสู่สถานะปกติ ดังนั้นที่นี่เราจะพบC4ว่ารู้ว่า …