লাইন সংখ্যা দেওয়া থাকলে, সিমেট্রিক ডাবল ট্রায়্যাঙ্গেল প্যাটার্ন প্রিন্ট করতে হবে কমপ্লেক্সিটি কম রেখে।
উদাহরণ
Input: 5
Output:
X X
O X O X
X O X O X
X O X O
X X
সম্পূর্ণ প্যাটার্ন ৩টি অংশে ভাগ করা যায়:
- অপার হাফ: বিজোড় n-এর জন্য n-1 লাইন, জোড় n-এর জন্য n-2 লাইন।
- মাঝপথের লাইন(গুলো): বিজোড় n-এর জন্য ১ লাইন, জোড় n-এর জন্য ৩ লাইন।
- লোয়ার হাফ: বিজোড় n-এর জন্য n-1 লাইন, জোড় n-এর জন্য n-2 লাইন।
অ্যালগরিদম
START
STEP 1: IF n EVEN THEN x = n-1; p = n-1 (spaces), s = 1 (chars)
STEP 2: LOOP i = 1 to (x-1)/2 (Upper half double lines)
Print spaces, then printx(s) or printo(s) alternating
Print newline, adjust p, print spaces, printx/printo, newline, p--, s++
STEP 3: Middle lines for even n
STEP 4: Center line(s)
STEP 5: Extra lower middle for even n
STEP 6: SET p = 1
STEP 7: IF n EVEN THEN x--, p = 2
STEP 8: q = x/2
STEP 9: LOOP i = 1 to x (Lower half)
Print spaces, printx(q), if i even q--, newline, p++
STEP 10: PRINT NEWLINE
STEP 11: printx(n) - prints alternating X O starting with X
STEP 12: printo(n) - prints alternating O X starting with O
STOP
সি প্রোগ্রাম
#include <stdio.h>
int printx(int n) {
for (int i = 1; i <= n; i++)
printf(i % 2 != 0 ? "x " : "o ");
return 0;
}
int printo(int n) {
for (int i = 1; i <= n; i++)
printf(i % 2 != 0 ? "o " : "x ");
return 0;
}
int printpattern(int n) {
int x = n, i, j;
if (n % 2 == 0) x = x - 1;
int p = n - 1, s = 1;
// Upper half
for (i = 1; i <= (x - 1) / 2; i++) {
for (j = 1; j <= p; j++) printf(" ");
(i % 2 != 0) ? printx(s) : printo(s);
printf("\n"); p++;
for (j = 1; j <= p; j++) printf(" ");
(i % 2 != 0) ? printx(s) : printo(s);
printf("\n"); p--; s++;
}
// Extra upper middle for even
if (n % 2 == 0) {
for (i = 1; i <= p; i++) printf(" ");
(n % 4 != 0) ? printx(n/2) : printo(n/2);
printf("\n");
}
// Middle line
if (n % 2 != 0) printx(n);
else {
if (n % 4 != 0) { printx(n/2); printx(n/2); }
else { printx(n/2); printo(n/2); }
}
printf("\n");
// Extra lower middle for even
if (n % 2 == 0) { printf(" "); printx(n/2); printf("\n"); }
// Lower half
p = 1;
if (n % 2 == 0) { x--; p = 2; }
int q = x / 2;
for (i = 1; i <= x; i++) {
for (j = 1; j <= p; j++) printf(" ");
printx(q);
if (i % 2 == 0) q--;
printf("\n"); p++;
}
printf("\n");
return 1;
}
int main() {
int n = 5;
printpattern(n);
return 0;
}
আউটপুট
X X O X O X X O X O X X O X O X X X