আমি ফ্লাওয়ার্জ নামে পরিচিত একটি গেমের জন্য সি # .NET এ সলভার লেখার চেষ্টা করছি। আপনার রেফারেন্সের জন্য, আপনি এটি এমএসএনে এখানে খেলতে পারেন: http://zone.msn.com/gameplayer/gameplayer.aspx?game=flowerz । আমি এটি মজাদার জন্য লিখছি, কোনও ধরণের অ্যাসাইনমেন্ট বা কোনও কাজের সাথে সম্পর্কিত নয়। এ কারণে, একমাত্র সীমাটি আমার কম্পিউটার (একটি ইন্টেল আই 7 কোর, 8 জিবি র্যাম সহ)। আমি যতটা উদ্বিগ্ন এটি অন্য কোথাও চালানোর দরকার নেই।
সংক্ষেপে, এর বিধিগুলি এরকম:
- রঙিন ফুল দিয়ে ভরা একটি সারি আছে। এর দৈর্ঘ্য নির্বিচারে
- সারিটি প্রভাবিত হতে পারে না
- স্তরের শুরুতে কিউ তৈরি করা হয়
- ফুলের একটি বা দুটি রঙ হয়।
- যদি দুটি রঙ থাকে তবে তারপরে একটি বাহ্যিক রঙ এবং একটি অভ্যন্তরীণ রঙ রয়েছে। দুটি রঙের ক্ষেত্রে, বাইরের রঙটি ম্যাচের জন্য ব্যবহৃত হয়।
- যদি কোনও মিল থাকে তবে বাহ্যিক রঙ অদৃশ্য হয়ে যায় এবং ফুলটি এখন অভ্যন্তরের ফুলের মতো একই রঙের সাথে একক রঙের ফুল
- গেমটির লক্ষ্য একই রঙের তিনটি (বা আরও) এর ম্যাচ তৈরি করা
- যখন একক রঙের ফুল কোনও ম্যাচের অংশ হয়, তখন এটি খালি জায়গা তৈরি করে, খেলার ক্ষেত্র থেকে সরানো হয়
- আপনি দুটি রঙের ফুলের বাইরের রঙের বিপরীতে একক রঙের ফুলের সাথে মিল রাখতে পারেন। এই ক্ষেত্রে, একক রঙের ফুল অদৃশ্য হয়ে যায়, দ্বি-বর্ণের ফুলের বাইরের রঙ অদৃশ্য হয়ে যায় এবং অভ্যন্তরের রঙ অবশেষ থাকে
- সারিটি খালি থাকলে আপনি রাউন্ডটি জয় করতে পারেন এবং কমপক্ষে একটি খালি জায়গা বাকি আছে
- ক্যাসকেডিং ম্যাচগুলি সম্ভব। একটি ক্যাসকেড তখন হয় যখন তিনটি (বা আরও বেশি) বাহ্যিক ফুলগুলি অদৃশ্য হয়ে যায় এবং যখন তাদের অভ্যন্তরীণ রংগুলি 3 (বা আরও ফুল) এর আরও একটি চেইন তৈরি করে।
- খেলার ক্ষেত্রটি সর্বদা 7x7
- মাঠের কিছু জায়গা শিলা দ্বারা আচ্ছাদিত
- আপনি পাথরে ফুল রাখতে পারবেন না
- সারিটিতে একটি কোদালও থাকতে পারে যা আপনি কোনও স্থাপনা ফুলকে একটি অনাবৃত জায়গায় নিয়ে যেতে ব্যবহার করতে পারেন
- আপনাকে কোদাল ব্যবহার করতে হবে, তবে আপনাকে আসলে ফুলটি সরিয়ে ফেলতে হবে না: এটি যেখান থেকে এসেছে সেখান থেকে এটি ঠিক রেখে দেওয়া পুরোপুরি আইনী
- কাতারে রঙিন প্রজাপতিও থাকতে পারে। আপনি যখন এই প্রজাপতিটি কোনও ফুল ব্যবহার করেন, তখন ফুলটি প্রজাপতির রঙ পায় gets
- দুটি রঙের ফুলের সাথে একটি প্রজাপতি প্রয়োগ করলে ফুল কেবল একটি রঙ পায়, তিতলিটির মতো
- আপনি প্রজাপতিটি খালি জায়গায় বা কোনও ফুলের নষ্ট করতে পারেন যা ইতিমধ্যে এই রঙ রয়েছে
- মাঠ সাফ করা গেমটি জিততে পারে না
সলভারটির লক্ষ্যটি সহজ: সারিটি খালি করার একটি উপায় অনুসন্ধান করুন, যতটা সম্ভব খেলার মাঠে যতগুলি অবশিষ্ট স্থান রয়েছে। মূলত, এআই আমার জন্য গেমটি খেলে। সলভারের আউটপুট হ'ল এটি তালিকাভুক্ত হয়। আমি স্কোরের প্রতি আগ্রহী নই, তবে যতদিন সম্ভব বেঁচে থাকার জন্য, তাই আমি যতটা সম্ভব খোলা জায়গাগুলি ছেড়ে চলে যাওয়ার বিষয়ে আগ্রহী।
বলাই বাহুল্য, সন্ধানের স্থানটি বৃহত্তর সারি যত বড় হয়ে যায় তাড়াতাড়ি বৃদ্ধি পায়, তাই একটি নিষ্ঠুর শক্তি প্রশ্ন থেকে যায়। কিউটি 15 থেকে শুরু হয় এবং আমি সঠিক মনে রাখি তবে প্রতি দুই বা তিনটি স্তরে 5 দিয়ে বৃদ্ধি হয়। এবং অবশ্যই, প্রথম ফুলটি (0,0) এবং দ্বিতীয়টি (0,1) এ স্থাপন করা প্রথমটিকে (1,0) এবং দ্বিতীয় ফুল (0,0) এ রাখার চেয়ে আলাদা, বিশেষত যখন ক্ষেত্রটি ইতিমধ্যে আগের রাউন্ডের ফুল দিয়ে জনবহুল। এ জাতীয় সাধারণ সিদ্ধান্ত এটি তৈরিতে না পার্থক্য তৈরি করতে পারে।
আমার যে প্রশ্নগুলি রয়েছে সেগুলি নিম্নলিখিত:
- এটা কোন ধরণের সমস্যা? (ভ্রমন বিক্রয়কর্মী, ন্যাপস্যাক বা অন্য কোনও সংমিশ্রণ সমস্যা মনে করুন)। এটি জানার ফলে আমার গুগল-ফু আরও উন্নত করতে পারে।
- কোন ধরণের অ্যালগরিদম আমাকে ভাল ফলাফল দিতে পারে, দ্রুত?
পরেরটি সম্পর্কে: প্রথমে আমি আমার নিজস্ব হিউরিস্টিক অ্যালগরিদম লেখার চেষ্টা করেছি (মূলত: আমি কীভাবে সারি জানতাম আমি কীভাবে এটি সমাধান করব?), তবে এর ফলে প্রচুর এজ মামলা এবং স্কোরের মিল মিলে যা আমি মিস করতে পারি।
আমি জেনেটিক অ্যালগরিদম ব্যবহার করার কথা ভাবছিলাম (কারণ আমি কমপক্ষে কীভাবে এটি ব্যবহার করতে হবে তা জানি ...) তবে বোর্ডের বাইনারি উপস্থাপনের সিদ্ধান্ত নিতে আমার কিছু সমস্যা হচ্ছে। তারপরে ক্রসওভার সমস্যা রয়েছে তবে এটি অর্ডার করা ক্রসওভার অপারেটর বা একই ধরণের অপারেশন দিয়ে সমাধান করা যেতে পারে।
আমার অনুমান যে সমাধানকারীকে বোর্ডের কনফিগারেশন এবং যে সারিটি খালি করার চেষ্টা করা উচিত তা সর্বদা জানতে হবে।
আমি নিউরাল নেটওয়ার্ক এবং ফাজি লজিক সিস্টেমের মতো আরও কয়েকটি হিউরিস্টিক অ্যালগরিদম সম্পর্কে জানি, তবে কোনটি সবচেয়ে ভাল প্রয়োগ করা যায় তা জানার অভিজ্ঞতাটির আমার অভাব রয়েছে, বা যদি এমন আরও কিছু রয়েছে যা হাতের কাজটির জন্য আরও উপযুক্ত।