ম্যাজিক স্কয়ার জেনারেট করার এলগরিদম
শর্তসমূহঃ
১। ডাইমেনশন অবশ্যই বিজোড় হতে হবে। যেমন n  যদি ডাইমেনশন হয় তাহলে ৩*৩, ৫*৫, ৭*৭  এইরকম হতে হবে। 
২। ডাইমেনশন n হলে
উপাদানগুলোর যোগফল হবে=  (১ থেকে n*n পর্যন্ত যোগফল)/n
যেমনঃ উপরের চিত্রে সংখ্যাগুলোর যোগফল ১৫ ।
যেমনঃ উপরের চিত্রে সংখ্যাগুলোর যোগফল ১৫ ।
(১ থেকে n*n পর্যন্ত যোগফল) বের করার নিয়ম ঃ
ধরি, m=n*n
(১ থেকে n*n পর্যন্ত যোগফল) = m*(m+1)/2
n*n পর্যন্ত মানগুলোর পজিশন
বের করতে হবে।
৩। প্রথমে ১ এর পজিশন হবে = (n/2,n-1)=(i,j)
৪। পরবর্তী নম্বরগুলোর রো ও কলাম পজিশন হবে= (i-1,j+1)
৫। যদি সারির পজিশন -১ হয় তাহলে আসল পজিশন হবে   i=n-1
৬।
যদি কলামের পজিশন n এর সমান হয় তাহলে আসল পজিশন হবে   j=n-n=0
৭। যদি (i,j) এর মান লিস্ট এ অলরেডি এক্সিস্ট থাকে তাহলে পজিশন হবে = (i+1,j-2)
৮। যদি  একই সাথে সারির পজিশন -১ হয় এবং কলামের পজিশন n এর সমান হয় তাহলে 
আসল
পজিশন হবে = (0,n-2)
এখন
৩*৩ এর ম্যাজিক স্কয়ার জেনারেট করব এই নিয়মে ঃ
উপাদানগুলোর
যোগফল ঃ      (১ থেকে n*n পর্যন্ত যোগফল)/n=45/3=15
 নম্বর ১ এর পজিশন = (n/2,n-1)=(3/2,3-1)=(1,2)
 নম্বর ২ এর পজিশন = (i-1,j+1)=(1-1,3+1)=(0,3)
যেহেতু j=n তাই j=3-3=0
নম্বর
২ এর পজিশন = (i,n-n)=(0,3-3)=(0,0)
 নম্বর ৩ এর পজিশন = (i-1,j+1)=(0-1,0+1)=(-1,1)
যেহেতু i=-1 তাই
i=n-1=3-1=2
নম্বর
৩ এর পজিশন = (n-1,j)=(2-1,1)=(2,1) 
অর্থাৎ i=-1 যখন হয়েছিলো তখন j এর মান যা ছিল তাই থাকবে।
অর্থাৎ i=-1 যখন হয়েছিলো তখন j এর মান যা ছিল তাই থাকবে।
নম্বর
৪  এর পজিশন= (i-1,j+1)=(2-1,1+1)=(1,2)
যেহেতু  (1,2)
অলরেডি এক্সিস্ট তাই 
নম্বর
৪  এর পজিশন  i=i+1 , j=j-2 , (i,j)= (1+1,2-2)=(2,0)
নম্বর
৫  এর পজিশন= (i-1,j+1)=(2-1,0+1)=(1,1)
নম্বর
৬  এর পজিশন= (i-1,j+1)=(1-1,1+1)=(0,2)
নম্বর
৭  এর পজিশন= (i-1,j+1)=(0-1,2+1)=(-1,3)
যেহেতু i=-1 এবং j=n তাই i=0, j=n-2=3-2=1
নম্বর
৭ এর পজিশন = (0,n-2)=(0,3-2)=(0,1)
নম্বর
৮ এর পজিশন = (i-1,j+1)=(0-1,1+1)=(-1,2)
যেহেতু i=-1 তাই
i=n-1=3-1=2
নম্বর
৮ এর পজিশন = (n-1,j)=(2-1,2)=(2,2)
নম্বর
৯ এর পজিশন = (i-1,j+1)=(2-1,2+1)=(1,3)
যেহেতু j=n তাই j=3-3=0
নম্বর
৯ এর পজিশন = (i,n-n)=(1,3-3)=(1,0)
৩*৩=৯ পর্যন্ত মান বের করা শেষ। এখন ম্যাজিক স্কয়ার এ মানগুলো পজিশন অনুযায়ী বসিয়ে পাই
 UVA 1266 নম্বর প্রব্লেম এ ম্যাজিক স্কয়ার জেনারেট করতে বলা হয়েছে । ম্যাজিক স্কয়ার জেনারেট
 করার সি++ কোড টি  এখানে  http://shawonruet.blogspot.com/2016/06/uva-1266-magic-square.html
 পাওয়া যাবে। এই এলগরিদম দিয়েই সল্ভ করা হয়েছে ।


0 comments:
Post a Comment