এখানে আমরা দেখব কিভাবে সি-তে খালি (hollow) পিরামিড এবং ডায়মন্ড প্যাটার্ন জেনারেট করা যায়। সলিড পিরামিড প্যাটার্ন খুব সহজে জেনারেট করা যায়। এটাকে খালি করতে হলে কিছু ট্রিক যোগ করতে হয়।
খালি পিরামিড (Hollow Pyramid)
পিরামিডের প্রথম লাইনে একটি স্টার প্রিন্ট হবে, এবং শেষ লাইনে n সংখ্যক স্টার প্রিন্ট হবে। অন্যান্য লাইনে সে লাইনের শুরু এবং শেষে সঠিক দুটি স্টার প্রিন্ট করবে, এবং এই দুটি স্টারের মাঝপথে কিছু ব্ল্যাঙ্ক স্পেস থাকবে।
উদাহরণ কোড
#include <stdio.h>
int main() {
int n, i, j;
printf("Enter number of lines: ");
scanf("%d", &n);
for(i = 1; i <= n; i++) {
for(j = 1; j <= (n-i); j++) { // স্টারের আগে ব্ল্যাঙ্ক স্পেস প্রিন্ট
printf(" ");
}
if(i == 1 || i == n) { // প্রথম এবং শেষ লাইনে স্টারগুলো liên tục প্রিন্ট
for(j = 1; j <= i; j++) {
printf("* ");
}
} else {
printf("*"); // প্রতিটি লাইনের শুরু এবং শেষে স্টার
for(j = 1; j <= 2*i-3; j++) { // খালি করার জন্য স্পেস প্রিন্ট
printf(" ");
}
printf("*");
}
printf("\n");
}
}
আউটপুট
Enter number of lines: 20
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* * * * * * * * * * * * * * * * * * * *
খালি ডায়মন্ড (Hollow Diamond)
ডায়মন্ডের প্রথম লাইনে এবং শেষ লাইনে একটি স্টার প্রিন্ট হবে। অন্যান্য লাইনে সে লাইনের শুরু এবং শেষে সঠিক দুটি স্টার প্রিন্ট করবে, এবং এই দুটি স্টারের মাঝপথে কিছু ব্ল্যাঙ্ক স্পেস থাকবে। ডায়মন্ডের দুটি অংশ রয়েছে। উপরের আধা এবং নিচের আধা। উপরের আধাতে স্পেস কাউন্ট বাড়াতে হবে, এবং নিচের আধাতে স্পেস কাউন্ট কমাতে হবে। এখানে লাইন নম্বরগুলোকে অন্য একটি ভেরিয়েবল mid ব্যবহার করে দুটি অংশে ভাগ করা হয়েছে।
উদাহরণ কোড
#include <stdio.h>
int main() {
int n, i, j, mid;
printf("Enter number of lines: ");
scanf("%d", &n);
if(n % 2 == 1) { // যখন n বিজোড়, ১ বাড়িয়ে জোড় করুন
n++;
}
mid = (n/2);
for(i = 1; i <= mid; i++) {
for(j = 1; j <= (mid-i); j++) { // স্টারের আগে ব্ল্যাঙ্ক স্পেস
printf(" ");
}
if(i == 1) {
printf("*");
} else {
printf("*"); // প্রতিটি লাইনের শুরু এবং শেষে স্টার
for(j = 1; j <= 2*i-3; j++) { // খালি করার জন্য স্পেস
printf(" ");
}
printf("*");
}
printf("\n");
}
for(i = mid+1; i < n; i++) {
for(j = 1; j <= i-mid; j++) { // স্টারের আগে ব্ল্যাঙ্ক স্পেস
printf(" ");
}
if(i == n-1) {
printf("*");
} else {
printf("*"); // প্রতিটি লাইনের শুরু এবং শেষে স্টার
for(j = 1; j <= 2*(n - i)-3; j++) { // খালি করার জন্য স্পেস
printf(" ");
}
printf("*");
}
printf("\n");
}
}
আউটপুট
Enter number of lines: 15
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*