मैं एक सी ++ शतरंज इंजन लिख रहा हूं और मैं छोटे- टुकड़े वाले रैंक-फाइल मैपिंग बिटबोर्ड के लिए जादुई संख्या की तलाश कर रहा हूं ताकि फिसलने वाले टुकड़ों के लिए चालें उत्पन्न हो सकें।
प्रतिद्वंद्वी शतरंज वेबसाइट मैजिक नंबर देती है लेकिन समान बोर्ड मैपिंग के लिए नहीं।
शतरंज प्रोग्रामिंग विकी अब तक के कुछ बेहतरीन मैजिक नंबर देता है लेकिन संपूर्ण नहीं है।
अंत में मैं चार चीजों की तलाश में हूं:
- प्रत्येक वर्ग के लिए अधिभोग मुखौटा
- प्रत्येक वर्ग के लिए जादू की संख्या
- प्रत्येक वर्ग के लिए जादू बदलाव
- प्रत्येक वर्ग के लिए डेटाबेस सरणी चलता है
इसलिए मैं C3 पर Rook की चाल (उदाहरण के लिए) खोजने के लिए निम्न कोड का उपयोग कर सकता हूं :
bbBlockers = bbAllPieces & occupancyMaskRook[C3]
databaseIndex = (int)((bbBlockers * magicNumberRook[C3]) >> rookMagicShifts[C3])
bbMoveSquares = magicMovesRook[C3][databaseIndex] & ~bbFriendlyPieces