কম্পিউটার টিউটোরিয়াল

সি প্রোগ্রামিং-এ সিমেট্রিক ডাবল ট্রায়্যাঙ্গেল প্যাটার্ন প্রিন্ট করা


লাইন সংখ্যা দেওয়া থাকলে, সিমেট্রিক ডাবল ট্রায়্যাঙ্গেল প্যাটার্ন প্রিন্ট করতে হবে কমপ্লেক্সিটি কম রেখে।

উদাহরণ

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

  1. সি প্রোগ্রামিং-এ স্নেক প্যাটার্নে ম্যাট্রিক্স প্রিন্ট করা

  2. সি প্রোগ্রামিং-এ অ্যারের সর্টেড ডিস্টিংক্ট এলিমেন্ট প্রিন্ট করা

  3. সি প্রোগ্রামিং-এ ম্যাট্রিক্স ডায়াগোনাল প্যাটার্নে সংখ্যা প্রিন্ট করা

  4. পাইথনে প্যাটার্ন প্রিন্ট করার পদ্ধতি