मैं सी # में एक महजोंग गेम लिख रहा हूं (चीनी पारंपरिक खेल, सॉलिटेयर प्रकार नहीं)। बॉट प्लेयर एआई के लिए कोड लिखते समय, मैं सोच रहा हूं कि एफ # जैसी एक कार्यात्मक भाषा जो मैं वर्तमान में उपयोग करता हूं उससे अधिक उपयुक्त भाषा होगी जो कि बहुत सारे लिंक के साथ सी # है। मुझे एफ # के बारे में बहुत कुछ पता नहीं है, इसलिए मैं यहां पूछता हूं।क्या एफ # कार्ड गेम एआई के लिए एक अच्छी भाषा है?
महजोंग जिन रमी की तरह एक सा खेलता है:
इसे समझने के लिए कि मैं क्या हल करने का प्रयास है, यहाँ महजोंग की एक त्वरित सारांश है। आपके हाथ में 13 टाइल्स हैं, और प्रत्येक मोड़, आप एक टाइल खींचते हैं और एक और को छोड़ देते हैं, जो जीतने वाले महजोंग हाथ की ओर अपना हाथ सुधारने की कोशिश करते हैं, जिसमें 4 सेट और एक जोड़ी होती है। सेट एक प्रकार (पंग्स), एक प्रकार का 4 (कॉंग) या लगातार 3 टाइल्स (चो) का अनुक्रम हो सकता है। यदि आप अपने सेटों में से एक पूरा कर सकते हैं तो आप किसी अन्य खिलाड़ी के विवाद को भी चुरा सकते हैं।
मुझे यह पता लगाने के लिए कोड लिखना पड़ा कि क्या बॉट लगातार 3 टाइल्स सेट (चो) घोषित कर सकता है, यह बहुत कठिन है। मुझे हाथ में सभी अनोखी टाइल्स मिलनी है, और उसके बाद यह जांचना शुरू करें कि 3 टाइल्स का अनुक्रम है जिसमें हाथ में एक है। यह पता लगाने के लिए कि क्या बॉट महजोंग जा सकता है, यह और भी जटिल है क्योंकि यह 4 सेट और उसके हाथ में एक जोड़ी है या नहीं, यह पता लगाने का एक संयोजन है। और यह सिर्फ एक मानक महजोंग हाथ है। ऐसे कई "विशेष" हाथ भी हैं जो उन नियमों को तोड़ते हैं लेकिन अभी भी एक महजोंग हाथ हैं। उदाहरण के लिए, "13 अद्वितीय चमत्कार" में 13 विशिष्ट टाइल्स होते हैं, "जेड साम्राज्य" में केवल टाइल्स रंगीन हरे रंग होते हैं, आदि
एक परिपूर्ण दुनिया में, मुझे केवल 'नियम' बता सकते हैं महजोंग का, और भाषा उन नियमों के खिलाफ 13 टाइल्स के एक सेट से मेल करने में सक्षम हो सकती है, जो यह सुनिश्चित करने के लिए कि कौन से नियम पूरा करते हैं, उदाहरण के लिए, यह जांच कर रहा है कि यह एक महजोंग हाथ है या यदि इसमें 4 प्रकार शामिल हैं। क्या यह कुछ एफ # की पैटर्न मिलान सुविधा हल करने में मदद कर सकता है?