সি প্রোগ্রাম দিয়ে ম্যাজিক স্কয়ার জেনারেটর
ম্যাজিক স্কয়ার হল এমন এক ধরনের স্কয়ার যে স্কয়ার এর সারি ,কলাম এবং কর্ন বরাবর অবস্থিত সংখ্যাগুলোর যোগফল সব সময় একই হবে । নিচের ছবি টি দেখলে ভালোভাবে বোঝা যাবে ।
৩×৩ ম্যাজিক স্কয়ার
উপরের ছবি অনুসারে ১ম সারির যোগফল (২+৭+৬)=১৫,
২য় সারির যোগফল (৯+৫+১)=১৫
৩য় সারির যোগফল (৪+৩+৮)=১৫
আবার ১ম, ২য়, ৩য় কলামের যোগফল=১৫ এবং কর্ণে অবস্থিত সংখ্যাগুলোর
যোগফল (৬+৫+৪)=১৫ এবং (২+৫+৮)=১৫
যেভাবে হাতে কলমে ম্যাজিক স্কয়ার তৈরী করা যায়ঃ
ধরা যাক ৩×৩ ম্যাজিক স্কয়ার তৈরি করব । তাহলে প্রথমে ১ বসবে ১ নম্বর সারির মাঝে । ১ এর উপরে ২ বসবে । কিন্তু উপরে আর কোনো সারি নাই। তাই ২ চলে আসবে একবারে ৩ নম্বর সারির শেষে । এরপর ৩, ২ এর উপরে যাবে। কিন্তু উপরে কোন সারি নাই। তাই ৩ তার কলাম বরাবর নিচে যাবে । এক্ষেত্রে ৩ এর স্থান হবে ২ নম্বর সারির শেষ ঘরের পরে। কিন্তু এখানে কোনো ঘর নাই। তাই ৩ এর সর্বশেষ স্থান হবে ২ নম্বর সারির প্রথমে। নিচের চিত্রটি দেখলে ভালোভাবে বোঝা যাবে।
এখন ১,২,৩ বসানো হয়ে গেলে ৪ বসবে ৩ এর নিচে । কারন ৩ এর পর ১ জায়গা দখল করে রেখেছে। এরপর আগের নিয়মে ৫
বসবে ৪ এর উপরে আর ৬ বসবে ৫ এর উপরে। তারপর
আগের মতো ৭ বসবে ৬ এর নিচে যেহেতু ৩ আছেই । এরপর আগের নিয়মে ৮ এবং ৯ বসবে।
সি প্রোগ্রামিং করে ম্যাজিক স্কয়ার জেনারেটর তৈরী
আমরা এখানে ৩×৩ থেকে ৯×৯ পর্যন্ত ম্যাজিক স্কয়ার তৈরী করবো।মাত্রা
অবশ্যই বিজোড় হতে হবে।
এখন প্রথমে দুই মাত্রার অ্যারে নিবো । ধরা যাক অ্যারেটি হলো m[n][n]
এখন লুপ ১ থেকে শুরু করে n*n পর্যন্ত চলবে । n=৩ হলে ১ থেকে ৯
পর্যন্ত চলবে ।যেহেতু মোট ঘর n*n অথবা ৯ ।
এখন এই লুপ এর মধ্যে ১ থেকে ৯ এর সঠিক স্থান বের করবো ।
সঠিক স্থান বের করার সূত্রটি হলঃ
সারি a এর ক্ষেত্রে
a=(n-i%n+1+2*((i-1)/n))%n; . . . . . . . . . . . . . . . . . .(1)
কলাম b এর ক্ষেত্রে
b=((n-1)/2+i-1-(i-1)/n)%n; . . . . . . . . . . . . . . . . . .(2)
এখানে n= মাত্রা (ধরা যাক n=৩)
i=লুপ এর সংখ্যা
প্রথমে i=1 তাই আমরা (1) ও (2) হতে পাই
a=0
b=1
m[a][b]=i
m[0][1]=1
এভাবে i=2 হলে
a=0
b=1
m[a][b]=i
m[2][2]=2
এইরকম ৯ বার লুপ ঘুরা পর্যন্ত ফলাফল হবে
m[0][1]=1
m[2][2]=2
m[1][0]=3
m[2][0]=4
m[1][1]=5
m[0][2]=6
m[1][2]=7
m[0][0]=8
m[2][1]=9
এরপর দুইটি লুপ একটি (a=0 থেকে n পর্যন্ত) আর একটি
(b=0 থেকে n পর্যন্ত) চালিয়ে প্রিন্ট করলেই ৩×৩ ম্যাজিক স্কয়ার
তৈরী হয়ে যাবে ।
সম্পূর্ন কোড
#include <stdio.h>
int main()
{
int n,i,a,b;
printf(“Enter Odd Dimension number=”);
scanf(“%d”,&n);
while(1)
{
if((n%2==0||n>=25))
{
printf(“Please Enter The Odd Dimension number (Ex:3 or 5 or 7..):”);
scanf(“%d”,&n);
}
else
break;
}
int m[n][n];
for(i=1;i<=(n*n);i++)
{
a=(n-i%n+1+2*((i-1)/n))%n;
b=((n-1)/2+i-1-(i-1)/n)%n;
m[a][b]=i;
}
for(a=0;a<n;a++)
{
for(b=0;b<n;b++)
{
printf(“%dt”,m[a][b]);
}
printf(“n”);
}
return 0;
}
সবাইকে ধন্যবাদ ।
Leave a Reply