সি প্রোগ্রাম দিয়ে ম্যাজিক স্কয়ার জেনারেটর

সি প্রোগ্রাম দিয়ে ম্যাজিক স্কয়ার  জেনারেটর

ম্যাজিক স্কয়ার হল এমন এক ধরনের স্কয়ার যে স্কয়ার এর সারি ,কলাম এবং কর্ন বরাবর অবস্থিত সংখ্যাগুলোর যোগফল সব সময় একই হবে । নিচের ছবি টি দেখলে ভালোভাবে বোঝা যাবে ।

180px-Magicsquareexample.svg

                                                                                              ৩×৩ ম্যাজিক স্কয়ার

 

উপরের ছবি অনুসারে ১ম সারির যোগফল (২+৭+৬)=১৫,

২য় সারির যোগফল (৯+৫+১)=১৫

৩য় সারির যোগফল (৪+৩+৮)=১৫

আবার ১ম, ২য়,‌ ৩য় কলামের যোগফল=১৫ এবং কর্ণে অবস্থিত সংখ্যাগুলোর

যোগফল (৬+৫+৪)=১৫ এবং (২+৫+৮)=১৫

 

যেভাবে হাতে কলমে ম্যাজিক স্কয়ার তৈরী করা যায়ঃ

 

ধরা যাক ৩×৩ ম্যাজিক স্কয়ার তৈরি করব । তাহলে প্রথমে ১ বসবে ১ নম্বর সারির মাঝে । ১ এর উপরে ২ বসবে । কিন্তু উপরে আর কোনো সারি নাই। তাই ২ চলে আসবে একবারে ৩ নম্বর সারির শেষে । এরপর ৩, ২ এর উপরে যাবে। কিন্তু উপরে কোন সারি নাই। তাই ৩ তার কলাম বরাবর নিচে যাবে । এক্ষেত্রে ৩ এর স্থান হবে ২ নম্বর সারির শেষ ঘরের পরে। কিন্তু এখানে কোনো ঘর নাই। তাই ৩ এর সর্বশেষ স্থান হবে ২ নম্বর সারির প্রথমে। নিচের চিত্রটি দেখলে ভালোভাবে বোঝা যাবে।

 

Capture

 

এখন ১,২,৩ বসানো হয়ে গেলে ৪ বসবে ৩ এর নিচে । কারন ৩ এর পর ১ জায়গা দখল করে রেখেছে। এরপর আগের নিয়মে  ৫

বসবে ৪ এর উপরে আর ৬ বসবে ৫ এর উপরে। তারপর

আগের মতো ৭ বসবে ৬ এর নিচে  যেহেতু ৩ আছেই । এরপর আগের নিয়মে ৮ এবং ৯ বসবে।

 

সি প্রোগ্রামিং করে ম্যাজিক স্কয়ার জেনারেটর তৈরী

 

আমরা এখানে ৩×৩ থেকে ৯×৯ পর্যন্ত ম্যাজিক স্কয়ার তৈরী করবো।মাত্রা

অবশ্যই বিজোড় হতে হবে।

 

এখন প্রথমে দুই মাত্রার অ্যারে নিবো । ধরা যাক অ্যারেটি হলো 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;

}

 

সবাইকে ধন্যবাদ ।

2615 Total Views 2 Views Today

Leave a Reply

Your email address will not be published. Required fields are marked *