क्लोजर सीखने के लिए मैं थोड़ा टिक टैक पैर गेम पर काम कर रहा हूं। सापेक्ष आसानी से खेल के पहले भाग को पूरा करने के बाद, मैंने एक बुद्धिमान कंप्यूटर प्लेयर बनाने की कोशिश कर संघर्ष किया है।क्लोजर: पहले सदिश को खोजने के लिए वेक्टरों के वेक्टर पर इटरेटिंग
परीक्षण मैं इस सहायता के लिए लिख रहा हूँ के लिए, मुझे लगता है कि कंप्यूटर मौके 9 उठाता है अगर यह कंप्यूटर की बारी है जाँच करना चाहते हैं और इस बोर्ड है:
एक्स | ओ | 3
4 | एक्स | ओ
7 | 8 | 9
खेल शुरू करने के लिए, बोर्ड बोर्ड पर स्थान का प्रतिनिधित्व कुंजी-मान जोड़ों के साथ एक नक्शा और है कि अंतरिक्ष की सामग्री के रूप में, इस तरह परिभाषित किया गया है:
(def board {1 "1" 2 "2" 3 "3" 4 "4" 5 "5" 6 "6" 7 "7" 8 "8" 9 "9"})
मैं कुछ विचार किया था इस समस्या को हल करने के बारे में।
(def winning-sets
[[(board 1) (board 2) (board 3)],
[(board 4) (board 5) (board 6)],
[(board 7) (board 8) (board 9)],
[(board 1) (board 4) (board 7)],
[(board 2) (board 5) (board 8)],
[(board 3) (board 6) (board 9)],
[(board 1) (board 5) (board 9)],
[(board 3) (board 5) (board 7)]])
प्रत्येक सेट से अधिक दोहराएं:: एक इस तरह जीतने सेट को परिभाषित करने के लिए था
(for [set winning-sets]
(filter #(= symbol %) set))
लेकिन वह नहीं सही प्रतीत होता है ... मैं नहीं जानता कि जहां मैं वहाँ से जाना होगा । समस्या मैं हल करने के लिए कोशिश कर रहा हूँ इस तरह वर्णित किया जा सकता:
कंप्यूटर को बताएँ 8 जीतने सेट पर देखने के लिए और एक सेट है कि अपने प्रतीकों और एक खुली जगह के दो खोजने के लिए।
मैं क्लोजर के लिए बिल्कुल नया हूं, इसलिए मुझे यकीन नहीं है कि मैं इस समस्या से संपर्क करने का सबसे अच्छा तरीका समझता हूं। मैं ClojureDocs देख रहा हूं (for
और loop
और case
) पुनरावृत्त कार्यों की जांच कर रहा हूं, लेकिन यह काम करने में सक्षम नहीं हैं।
वर्तमान में वेक्टर फॉर्म में उन जीतने वाले सेटों को फिर से शुरू करने का सबसे अच्छा तरीका क्या होगा, और उस सेट को ढूंढें जिसमें दो विशिष्ट प्रतीक हैं और एक खुलता है? या जीतने वाले सेट को एक अलग डेटा संरचना में स्टोर करना सबसे अच्छा होगा?
नोट: मैंने this question पर प्रतिक्रियाएं पढ़ी हैं, लेकिन उन्हें मेरे लिए लागू करने में सक्षम नहीं हैं।
मुझे लगता है कि आप कुछ फ़ंक्शन चाहते हैं। – Kevin