আমি কার্যক্ষম প্রোগ্রামিং ভাষা এলিক্সিরে একটি সাধারণ মিনিম্যাক্স বাস্তবায়ন তৈরি করছি । যেহেতু অনেক নিখুঁত-জ্ঞান গেমস রয়েছে (টিক টাক টো, কানেক্ট-ফোর, চেকার্স, দাবা ইত্যাদি), এই বাস্তবায়ন এই গেমগুলির যে কোনওটির জন্য গেমের এআই তৈরির কাঠামো হতে পারে।
তবে আমি যে সমস্যার মুখোমুখি হচ্ছি তা হ'ল কীভাবে কার্যক্ষম ভাষায় কোনও গেমের অবস্থা সঠিকভাবে সংরক্ষণ করা যায়। এই গেমগুলি বেশিরভাগ ক্ষেত্রে দ্বিমাত্রিক গেম বোর্ডগুলি নিয়ে কাজ করে, যেখানে নিম্নলিখিত ক্রিয়াকলাপগুলি ঘন ঘন থাকে:
- নির্দিষ্ট বোর্ড অবস্থানের বিষয়বস্তু পড়ুন
- নির্দিষ্ট বোর্ড অবস্থানের বিষয়বস্তু আপডেট করুন (নতুন পদক্ষেপের সম্ভাবনা ফিরিয়ে দেওয়ার সময়)
- বর্তমান অবস্থানের সাথে সংযুক্ত এক বা একাধিক অবস্থানের বিষয়বস্তু বিবেচনা করে (যেমন পরবর্তী বা পূর্ববর্তী অনুভূমিক, উল্লম্ব বা তির্যক অবস্থানগুলি)
- যে কোনও দিক থেকে একাধিক সংযুক্ত অবস্থানের বিষয়বস্তু বিবেচনা করা।
- পুরো ফাইল, র্যাঙ্ক এবং কর্ণের বিষয়বস্তু বিবেচনা করা।
- বোর্ড ঘোরানো বা মিররিং (ইতিমধ্যে গণনা করা কিছু হিসাবে একই ফলাফল সরবরাহ করে এমন প্রতিসাম্যগুলি পরীক্ষা করার জন্য)।
বেশিরভাগ কার্যকরী ভাষাগুলি লিংকযুক্ত তালিকাগুলি এবং টুপলগুলি বহু-উপাদান ডেটা স্ট্রাকচারের বেসিক বিল্ডিং ব্লক হিসাবে ব্যবহার করে। তবে এগুলি কাজের জন্য খুব খারাপভাবে তৈরি বলে মনে হচ্ছে:
- লিঙ্কযুক্ত তালিকায় ও (এন) (লিনিয়ার) দেখার সময় রয়েছে। এছাড়াও, আমরা বোর্ডের উপরে একক ঝাঁকুনিতে 'বোর্ডটি স্ক্যান এবং আপডেট করতে পারি না', সুতরাং তালিকাগুলি ব্যবহার করা অবৈধ মনে হয়।
- টিপলসগুলিতে ও (1) (ধ্রুবক) দেখার সময় রয়েছে। তবে স্থির আকারের টিউপল হিসাবে বোর্ডকে উপস্থাপন করা র্যাঙ্ক, ফাইল, ডায়াগোনাল বা অন্যান্য ধরণের টানা স্কোয়ারগুলিতে পুনরাবৃত্তি করা খুব শক্ত করে তোলে। এছাড়াও, এলিক্সির এবং হাস্কেল উভয়ই (যা আমি জানি দুটি কার্যকরী ভাষা) একটি টিউপলের এন ম এলিমেন্টটি পড়ার জন্য সিনট্যাক্সের অভাব রয়েছে । এটি একটি গতিশীল সমাধান লিখতে অসম্ভব করে তোলে যা একটি স্বেচ্ছাসেবক আকারের বোর্ডগুলির জন্য কাজ করে।
এলিক্সির একটি অন্তর্নির্মিত মানচিত্রের ডেটা কাঠামো রয়েছে (এবং হাস্কেলের রয়েছে Data.Map
) যা ও (লগ এন) (লগারিদমিক) উপাদানগুলিতে অ্যাক্সেসের অনুমতি দেয়। এখনই আমি x, y
টিপলস সহ একটি মানচিত্র ব্যবহার করি যা কী হিসাবে অবস্থানটি উপস্থাপন করে।
এটি 'কাজ করে' তবে মানচিত্রকে এভাবে অপব্যবহার করা ভুল বলে মনে হয়, যদিও আমি ঠিক জানি না। আমি একটি কার্যকরী প্রোগ্রামিং ভাষায় দ্বিমাত্রিক গেম বোর্ড সংরক্ষণের আরও ভাল উপায়ের সন্ধান করছি।