बिटबोर्ड के लिए मैजिक नंबर ढूंढें


9

मैं एक सी ++ शतरंज इंजन लिख रहा हूं और मैं छोटे- टुकड़े वाले रैंक-फाइल मैपिंग बिटबोर्ड के लिए जादुई संख्या की तलाश कर रहा हूं ताकि फिसलने वाले टुकड़ों के लिए चालें उत्पन्न हो सकें।

प्रतिद्वंद्वी शतरंज वेबसाइट मैजिक नंबर देती है लेकिन समान बोर्ड मैपिंग के लिए नहीं।

शतरंज प्रोग्रामिंग विकी अब तक के कुछ बेहतरीन मैजिक नंबर देता है लेकिन संपूर्ण नहीं है।

अंत में मैं चार चीजों की तलाश में हूं:

  • प्रत्येक वर्ग के लिए अधिभोग मुखौटा
  • प्रत्येक वर्ग के लिए जादू की संख्या
  • प्रत्येक वर्ग के लिए जादू बदलाव
  • प्रत्येक वर्ग के लिए डेटाबेस सरणी चलता है

इसलिए मैं C3 पर Rook की चाल (उदाहरण के लिए) खोजने के लिए निम्न कोड का उपयोग कर सकता हूं :

bbBlockers = bbAllPieces & occupancyMaskRook[C3]

databaseIndex = (int)((bbBlockers * magicNumberRook[C3]) >> rookMagicShifts[C3])

bbMoveSquares = magicMovesRook[C3][databaseIndex] & ~bbFriendlyPieces

मेरा मानना ​​है कि यह सवाल प्रोग्रामर.स्टैकएक्सचेंज डॉट कॉम या स्टैकओवरफ्लो डॉट कॉम पर बेहतर अनुकूल होगा ।
पवन नदिग

1
ज़रुरी नहीं। यह अभी भी यहाँ जवाबदेह है। BTW, प्रोग्रामर उच्च-स्तरीय अमूर्तता पर अधिक ध्यान केंद्रित करते हैं। stackoverflow.com बेहतर होता।
स्मालचेयर

@PeteBecker आप सही हैं, मैंने इसे बदल दिया
रोमेन

जवाबों:


6

यह शतरंज प्रोग्रामिंग में एक बहुत अच्छी तरह से ज्ञात समस्या है। आपको प्रद्युम्न कन्नन द्वारा उत्पन्न संख्याओं का उपयोग करने पर विचार करना चाहिए। डॉ। कन्नन ने खुले तौर पर मैजिक नंबरों का निर्माण किया था। इसका उपयोग Crafty और कुछ अन्य शतरंज इंजनों द्वारा किया जा रहा है जिनमें मेरे स्वयं के भी शामिल हैं।

आप Google द्वारा "Crafty Magic number" को और अधिक पढ़ सकते हैं।

मैंने आपके लिए यहाँ एक ज़िपित फ़ाइल तैयार की है । यह वही फाइलें हैं जो स्मॉलचेज़ शतरंज इंजन ऐप में इस्तेमाल की जा रही हैं। कृपया दस्तावेज़ पढ़ें। मूल रूप से, आपको बॉशॉप के लिए बदमाशों के लिए आरजीसी (स्क्वायर, ऑक्यूपेंसी) और बीजीएन (स्क्वायर, ऑक्यूपेंसी) को कॉल करना होगा । आप उन लोगों को एक रानी मुखौटा में XOR कर सकते हैं।


धन्यवाद यह अच्छी तरह से काम करता है। क्या मैं अपने शतरंज इंजन में इस कोड का स्वतंत्र रूप से उपयोग / संशोधन कर सकता हूं?
रोमेन

कोई लाइसेंस प्रतिबंध नहीं है। आप प्रसन्न होकर प्रयोग करें। यह मुझे नहीं था जिसने यह किया, यह डॉ। कन्नन द्वारा एक योगदान था। कृपया मेरे उत्तर को स्वीकार करें यदि यह मदद करता है!
लघुशंका

नमस्ते, क्या आप GoogleDrive पर MagicMoves.zip फ़ाइल अपलोड कर सकते हैं? मैं इसे छोटेपन पर डाउनलोड नहीं कर सकता (मुझे कुछ त्रुटि मिली)। धन्यवाद।
123iamking 4

@ 123iamking लिंक अभी भी काम कर रहा है। मैं इसे हटाने वाला नहीं हूं।
लघुशंका

@SmallChess - मैं इसे हटाने के बारे में नहीं पूछता, क्या आप Google ड्राइव के साथ दर्पण प्रदान कर सकते हैं? धन्यवाद।
123iamking
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.