Printing Pattern Using Loops

Sort by

recency

|

1043 Discussions

|

  • + 0 comments

    I remember trying to solve a similar pattern problem when I was first learning programming. It reminded me of الهندسة المعمارية, where every layer builds upon the previous one to create a structured and symmetrical design. The logic behind decreasing and increasing numbers in a pattern felt just like designing a blueprint—precision and symmetry matter the most!

  • + 0 comments

    include

    include

    include

    include

    int min(int i, int j, int k, int x){ int minimum = i;

    if(j < minimum){
        minimum = j;
    } 
    if(k < minimum){
        minimum = k;
    } 
    if(x < minimum){
        minimum = x;
    } 
    
    return minimum;
    

    }

    int main() {

    int n, distance, value;
    scanf("%d", &n);
    // Complete the code to print the pattern.
    int size = 2 * n - 1;
    for(int i = 0; i < size; i++){
        for(int j = 0; j < size ; j++){
            distance = min(i, j, size - i - 1, size - j - 1);
            value = n - distance;
            printf("%d ", value);
        }
        printf("\n");
    }
    
    return 0;
    

    }

  • + 0 comments
    void printPattern(int n) {
        int size = 2 * n - 1;
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                int min = i < j ? i : j;
                min = min < size - i ? min : size - i - 1;
                min = min < size - j ? min : size - j - 1;
                printf("%d ", n - min);
            }
            printf("\n");
        }
    }
    
    int main() {
        int n;
        scanf("%d", &n);
        printPattern(n);
        return 0;
    }
    
  • + 0 comments

    Simple Understandable Approach

    int size = 2 * n - 1;
    
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            for (int k = 0; k < n; k++) {
                if (i == k || i == size - k - 1 || j == k || j == size - k - 1) {
                    printf("%d ", n - k);
                    break;
                }
            }
        }
        printf("\n");
    }
    

    just going layer by layer

    if(i == k || ...

    print...

    break; // this is the most important part cause it only allows one layer at a time

  • + 0 comments
    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main() {
        int n,k;
        scanf("%d",&n);
        for(int i=0; i<n; i++){
            k = n;
            for(int j=0; j<2*n-1; j++) {
                printf("%d ",k);
                k = (((k-j)>(k-i)) && (j < 2*(n-1)-i)) ? k-1 : k;
                k = ((k < n) && (j >= 2*(n-1)-i)) ? k+1 : k;
            }
            printf("\n");
        }
        for(int i=n-2; i>-1; i--){
            k = n;
            for(int j=0; j<2*n-1; j++) {
                printf("%d ",k);
                k = (((k-j)>(k-i)) && (j < 2*(n-1)-i)) ? k-1 : k;
                k = ((k < n) && (j >= 2*(n-1)-i)) ? k+1 : k;
            }
    				
    				This code mimics signal processing and stuff used in Digital Systems, Ive used concept of DEMUX and split the loop conditions 
    
        printf("\n");
    }
    return 0;
    

    }