ধরুন আমাদের কাছে একটি 2048 গেম বোর্ড রয়েছে যা প্রাথমিক বোর্ডের প্রতিনিধিত্ব করে এবং একটি স্ট্রিং দিক যা সোয়াইপ দিক নির্দেশ করে, আমাদের পরবর্তী বোর্ডের অবস্থাটি খুঁজে বের করতে হবে। 2048 গেমে যেমন আমরা জানি, আমাদেরকে একটি 4 x 4 নম্বর বোর্ড দেওয়া হয়েছে (এগুলির মধ্যে কিছু খালি, এখানে 0 দিয়ে উপস্থাপন করা হয়েছে) যা আমরা 4টি দিকের যেকোনো একটিতে সোয়াইপ করতে পারি ("U", "D", "এল", বা "আর")। যখন আমরা সোয়াইপ করি, সমস্ত সংখ্যা যতদূর সম্ভব সেই দিকে চলে যায় এবং অভিন্ন সংলগ্ন সংখ্যাগুলি ঠিক একবার যোগ করা হয়৷
সুতরাং, যদি ইনপুট মত হয়
direction ="L", তারপর আউটপুট হবে
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
-
যদি দিকনির্দেশ "R" এর মত হয়, তাহলে
-
বোর্ড :=ঘড়ির কাঁটার বিপরীতে দুই বার বোর্ড ঘোরান
-
-
অন্যথায় যখন দিকনির্দেশ "U" এর মত হয়, তখন
-
বোর্ড :=ঘড়ির কাঁটার বিপরীতে একবার বোর্ড ঘোরান
-
-
অন্যথায় যখন দিকনির্দেশ "D" এর মত হয়, তখন
-
বোর্ড :=ঘড়ির কাঁটার বিপরীতে তিনবার বোর্ড ঘোরান
-
-
0 থেকে 3 রেঞ্জের জন্য, করুন
-
সারি :=বোর্ডে সমস্ত অ-শূন্য উপাদানের একটি তালিকা[i]
-
0 থেকে 2 রেঞ্জে j এর জন্য, করুন
-
যদি j + 1 <সারি এবং সারির আকার [j] সারি [j + 1] এর মতো হয়, তাহলে
-
সারি [j] :=সারি [j] * 2
-
সারি [j + 1]
সরান
-
-
-
যখন সারির আকার <4, করুন
-
সারির শেষে 0 ঢোকান
-
-
বোর্ড[i] :=সারি
-
-
যদি দিকনির্দেশ "R" এর মত হয়, তাহলে
-
বোর্ড :=ঘড়ির কাঁটার বিপরীতে দুই বার বোর্ড ঘোরান
-
-
অন্যথায় যখন দিকনির্দেশ "U" এর মত হয়, তখন
-
বোর্ড :=ঘড়ির কাঁটার বিপরীতে তিনবার বোর্ড ঘোরান
-
-
অন্যথায় যখন দিকনির্দেশ "D" এর মত হয়, তখন
-
বোর্ড :=ঘড়ির কাঁটার বিপরীতে একবার বোর্ড ঘোরান
-
-
রিটার্ন বোর্ড
আরও ভালোভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি
উদাহরণ
শ্রেণির সমাধান:def solve(self, board, direction):if direction =="R":board =rot_anti_clock_dir(rot_anti_clock_dir(board)) elif direction =="U":board =rot_anti_clock_dir(বোর্ড) elif দিক =="D":বোর্ড =rot_anti_clock_dir(rot_anti_clock_dir(rot_anti_clock_dir(board))) রেঞ্জে i এর জন্য(4):সারি =[x এর জন্য x বোর্ডে[i] যদি x] রেঞ্জে j এর জন্য(3):যদি j + 1 <লেন(সারি) এবং সারি[j] ==সারি[j + 1]:সারি[j] *=2 ডেল সারি [j + 1] যখন লেন(সারি) <4:সারি +=[0] বোর্ড[ i] =সারি যদি দিক =="R":বোর্ড =rot_anti_clock_dir(rot_anti_clock_dir(board)) elif দিক =="U":board =rot_anti_clock_dir(rot_anti_clock_dir(rot_anti_clock_dir(board))D elif দিক ==" =rot_anti_clock_dir(board) রিটার্ন boarddef rot_anti_clock_dir(x):x =[[x[i][j] এর জন্য i in range(4)] j এর জন্য রেঞ্জ(4)] রিটার্ন x[::-1]ob =S অলিউশন()ম্যাট্রিক্স =[[2, 0, 0, 2], [2, 2, 2, 2], [0, 4, 2, 2], [2, 2, 2, 0]]মুদ্রণ(ob. সমাধান (ম্যাট্রিক্স, "L"))
ইনপুট
ম্যাট্রিক্স =[[2, 0, 0, 2], [2, 2, 2, 2], [0, 4, 2, 2], [2, 2, 2, 0]]