मैं एक ऐसा गेम बना रहा हूं जिसमें खिलाड़ियों को स्क्रीन पर ऑब्जेक्ट को सही लक्ष्य स्थानों में सॉर्ट करने की आवश्यकता होगी। मैं ऑब्जेक्ट्स को घुमाने के लिए एक रास्ता ढूंढ रहा हूं ताकि कोई ऑब्जेक्ट सही स्थान पर शुरू न हो। इसलिए हम डबल नकारात्मकों की पागल दुनिया में नहीं भरे हैं, मैं इस तरह के "सही उत्तर" स्थानों को "से बचने" स्थानों और "गलत उत्तर" स्थानों को "मान्य" स्थान कहने जा रहा हूं।किसी ऑब्जेक्ट के तत्वों को यादृच्छिक रूप से किसी अन्य सरणी के रूप में कैसे चिह्नित करें जब कुछ वस्तुओं को एक साथ जोड़ा जाने से बचना चाहिए?
सरणियों इस प्रकार दिखाई देंगे:
var sort_items = [
{"avoid": ["target1", "target2"]},
{"avoid": ["target1", "target2"]},
{"avoid": ["target3"]},
{"avoid": ["target4", "target5"]},
{"avoid": ["target4", "target5"]},
];
var sort_locations = [
{"id": "target1"},
{"id": "target2"},
{"id": "target3"},
{"id": "target4"},
{"id": "target5"},
];
तो, उदाहरण के लिए, sort_items में पहली और दूसरी वस्तुओं target3
, target4
, या , लेकिन नहीं target1
या target2
पर रखा जा सकता है।
मैंने कई अलग-अलग तरीकों की कोशिश की है, लेकिन उनमें से सभी को समस्या है कि क्रम के अंत तक शेष शेष स्थान शेष sort_items के लिए अक्सर अमान्य होते हैं। उदाहरण के लिए:
sort_items[0] placed on target3,
sort_items[1] placed on target5,
sort_items[2] placed on target2,
sort_items[3] placed on target1,
Error: sort_items[4] cannot be placed on target4
यहां तक कि इस उदाहरण में, यादृच्छिक पर एक और उठा और अदला-बदली के साथ यह एक बुरा विचार की तरह लगता है क्योंकि दूसरों के आधे भी एक स्वैप पर गलत मैच का कारण होगा।
क्या ऐसा करने के लिए एक अच्छी विधि है?
एक दिलचस्प तकनीकी समस्या है, लेकिन जहाँ तक वास्तविक खेल खेलने यह वास्तव में कोई फर्क करता है, तो कुछ वस्तुओं उनकी सही स्थिति में शुरू होगा जाता है? यह निश्चित रूप से एक सादा शफल करने के लिए आसान होगा और इसे छोड़ दें ... एल्गोरिदम के संबंध में आप यह खोज रहे हैं, क्या यह मानना चाहिए कि इनपुट डेटा मान्य है? (यानी, 'sort_items' एक असंभव संयोजन निर्दिष्ट नहीं करता है?) – nnnnnn
वास्तव में दिलचस्प है। एक वास्तविक मामले में, आपकी सूचियां कितनी बड़ी हैं? – Arnauld
हमेशा लक्ष्य से बचते हैं ..? – Redu