ขออภัยคำถามนี้ลึกลับเล็กน้อย แต่ฉันไม่สามารถเอามันออกไปจากหัวของฉันได้!
ฉันกำลังมองหาอัลกอริทึมจางที่ใช้ในเกมอาเขต DoDonPachi (เช่นเดียวกับเกมอื่น ๆ ที่เก่ากว่า):
ฉันเขียนสคริปต์หลามเพื่อเลือกพิกเซลสักสองสามและติดตามพวกเขาในช่วงเวลาที่จางหายไป นี่คือตัวอย่างของผลลัพธ์ แถวแรกของแต่ละกลุ่มคือค่าสีเริ่มต้นในขณะที่แต่ละแถวถัดมาคือความแตกต่างระหว่างค่าสีของเฟรมปัจจุบันและค่าสีของเฟรมก่อนหน้า
Starting Value: (132, 66, 189)
Frame 1: [9, 9, 8]
Frame 2: [8, 8, 8]
Frame 3: [8, 8, 8]
Frame 4: [8, 8, 9]
Frame 5: [9, 9, 8]
Frame 6: [8, 8, 8]
Frame 7: [8, 8, 8]
Frame 8: [8, 8, 9]
Frame 9: [9, 0, 8]
Frame 10: [8, 0, 8]
Frame 11: [8, 0, 8]
Frame 12: [8, 0, 9]
Frame 13: [9, 0, 8]
Frame 14: [8, 0, 8]
Frame 15: [8, 0, 8]
Frame 16: [8, 0, 9]
Frame 17: [0, 0, 8]
Frame 18: [0, 0, 8]
Frame 19: [0, 0, 8]
Frame 20: [0, 0, 9]
Frame 21: [0, 0, 8]
Frame 22: [0, 0, 8]
Frame 23: [0, 0, 8]
Frame 24: [0, 0, 0]
Frame 25: [0, 0, 0]
Frame 26: [0, 0, 0]
Frame 27: [0, 0, 0]
Frame 28: [0, 0, 0]
Frame 29: [0, 0, 0]
Starting Value: (132, 0, 0)
Frame 1: [9, 0, 0]
Frame 2: [8, 0, 0]
Frame 3: [8, 0, 0]
Frame 4: [8, 0, 0]
Frame 5: [9, 0, 0]
Frame 6: [8, 0, 0]
Frame 7: [8, 0, 0]
Frame 8: [8, 0, 0]
Frame 9: [9, 0, 0]
Frame 10: [8, 0, 0]
Frame 11: [8, 0, 0]
Frame 12: [8, 0, 0]
Frame 13: [9, 0, 0]
Frame 14: [8, 0, 0]
Frame 15: [8, 0, 0]
Frame 16: [8, 0, 0]
Frame 17: [0, 0, 0]
Frame 18: [0, 0, 0]
Frame 19: [0, 0, 0]
Frame 20: [0, 0, 0]
Frame 21: [0, 0, 0]
Frame 22: [0, 0, 0]
Frame 23: [0, 0, 0]
Frame 24: [0, 0, 0]
Frame 25: [0, 0, 0]
Frame 26: [0, 0, 0]
Frame 27: [0, 0, 0]
Frame 28: [0, 0, 0]
Frame 29: [0, 0, 0]
Starting Value: (165, 156, 222)
Frame 1: [9, 8, 8]
Frame 2: [8, 8, 8]
Frame 3: [8, 8, 8]
Frame 4: [8, 9, 9]
Frame 5: [9, 8, 8]
Frame 6: [8, 8, 8]
Frame 7: [8, 8, 8]
Frame 8: [8, 9, 9]
Frame 9: [9, 8, 8]
Frame 10: [8, 8, 8]
Frame 11: [8, 8, 8]
Frame 12: [8, 9, 9]
Frame 13: [9, 8, 8]
Frame 14: [8, 8, 8]
Frame 15: [8, 8, 8]
Frame 16: [8, 9, 9]
Frame 17: [9, 8, 8]
Frame 18: [8, 8, 8]
Frame 19: [8, 8, 8]
Frame 20: [8, 0, 9]
Frame 21: [0, 0, 8]
Frame 22: [0, 0, 8]
Frame 23: [0, 0, 8]
Frame 24: [0, 0, 9]
Frame 25: [0, 0, 8]
Frame 26: [0, 0, 8]
Frame 27: [0, 0, 8]
Frame 28: [0, 0, 0]
Frame 29: [0, 0, 0]
Starting Value: (156, 90, 206)
Frame 1: [8, 8, 8]
Frame 2: [8, 8, 9]
Frame 3: [8, 8, 8]
Frame 4: [9, 9, 8]
Frame 5: [8, 8, 8]
Frame 6: [8, 8, 9]
Frame 7: [8, 8, 8]
Frame 8: [9, 9, 8]
Frame 9: [8, 8, 8]
Frame 10: [8, 8, 9]
Frame 11: [8, 8, 8]
Frame 12: [9, 0, 8]
Frame 13: [8, 0, 8]
Frame 14: [8, 0, 9]
Frame 15: [8, 0, 8]
Frame 16: [9, 0, 8]
Frame 17: [8, 0, 8]
Frame 18: [8, 0, 9]
Frame 19: [8, 0, 8]
Frame 20: [0, 0, 8]
Frame 21: [0, 0, 8]
Frame 22: [0, 0, 9]
Frame 23: [0, 0, 8]
Frame 24: [0, 0, 8]
Frame 25: [0, 0, 8]
Frame 26: [0, 0, 0]
Frame 27: [0, 0, 0]
Frame 28: [0, 0, 0]
Frame 29: [0, 0, 0]
อย่างที่คุณเห็น 8 หรือ 9 ถูกลบออกจากแต่ละองค์ประกอบสีในแต่ละเฟรม ยิ่งไปกว่านั้น 9 จะปรากฏสามเฟรมเสมอหลังจาก 8 แม้ว่าค่าลบเริ่มต้นจะแตกต่างกันสำหรับแต่ละองค์ประกอบสี โปรดทราบว่าองค์ประกอบแต่ละสีมีค่าเป็น 0 (นั่นคือดำ) ซึ่งมีความแตกต่างของ 8 หรือ 9 ไม่ใช่ส่วนที่เหลือโดยพลการ ซึ่งหมายความว่าวงจรค่าลบที่ 8,8,8,9 จะไม่แตก! (อัลกอริทึมนี้อาจถูกเขียนขึ้นเพื่อให้แน่ใจว่าเฟรมสุดท้ายของเฟดนั้นเรียบเนียนกว่าเฟรมอื่น ๆ )
ตอนนี้จิ๊กซอว์ฉัน ตามการคำนวณของฉันหากคุณย้อนกลับกระบวนการนั่นคือใช้วงจร 8,8,8,9 และสรุปผลรวมเพื่อหาชุดค่าผสมที่เป็นไปได้ทั้งหมดใน 29 เฟรม - คุณจะได้รับ 52 หมายเลขที่ไม่ซ้ำกัน แต่อย่างที่เกิดขึ้นส่วนประกอบแต่ละสีเป็นสมาชิกของชุดนี้! ซึ่งหมายความว่าสีจะถูกเลือกโดยเฉพาะสำหรับอัลกอริทึมเฟดนี้ (ไม่น่าเป็นไปได้) หรืออัลกอริธึมเฟดได้รับการออกแบบรอบจานสีของเกม แต่บนโลกนี้มีใครคิดได้อย่างไรว่าถ้าคุณใช้ 8,8,8,9 เลื่อนวงจรอย่างเหมาะสมและลบตัวเลขจากองค์ประกอบแต่ละสีในจานสีของคุณในที่สุดคุณจะถึง 0 สำหรับทุก ๆ สี? ! มีเคล็ดลับทางคณิตศาสตร์ที่ฉันขาดหายไป มันคืออะไร?