Open In App

How to learn Pattern printing easily?

The task is to print a pattern as shown in the example for a given integer value.
The goal is not to print just this one pattern, it is to learn the best approach to solve this kind of problems as these questions are frequently asked in coding exams and in job interviews.
Examples: 
 

Input: N = 4
Output:
4 4 4 4 4 4 4
4 3 3 3 3 3 4
4 3 2 2 2 3 4
4 3 2 1 2 3 4
4 3 2 2 2 3 4
4 3 3 3 3 3 4
4 4 4 4 4 4 4

Input: N = 7
Output:
7 7 7 7 7 7 7 7 7 7 7 7 7
7 6 6 6 6 6 6 6 6 6 6 6 7
7 6 5 5 5 5 5 5 5 5 5 6 7
7 6 5 4 4 4 4 4 4 4 5 6 7
7 6 5 4 3 3 3 3 3 4 5 6 7
7 6 5 4 3 2 2 2 3 4 5 6 7
7 6 5 4 3 2 1 2 3 4 5 6 7
7 6 5 4 3 2 2 2 3 4 5 6 7
7 6 5 4 3 3 3 3 3 4 5 6 7
7 6 5 4 4 4 4 4 4 4 5 6 7
7 6 5 5 5 5 5 5 5 5 5 6 7
7 6 6 6 6 6 6 6 6 6 6 6 7
7 7 7 7 7 7 7 7 7 7 7 7 7

For the tutorial, an example of N = 4 is used. 
 





C(i, j) = N - min(i, j) + 1




#include <iostream>
using namespace std;
 
int main()
{
    int N = 4, i, j, min;
    cout << "Value of N: " << N << endl;
 
    for (i = 1; i <= N; i++) {
        for (j = 1; j <= N; j++) {
            min = i < j ? i : j;
            cout << N - min + 1;
        }
        cout << endl;
    }
    return 0;
}




// Java program to find triplets
// a[i]>a[j]>a[k] and i<j<k
import java.util.*;
 
class GFG
{
 
// Driver code
public static void main(String[] args)
{
    int N = 4, i, j, min;
    System.out.println("Value of N: " + N);
 
    for (i = 1; i <= N; i++)
    {
        for (j = 1; j <= N; j++)
        {
            min = i < j ? i : j;
            System.out.print(N - min + 1);
        }
        System.out.println();
    }
}
}
 
// This code is contributed by Princi Singh




# Python3 program to find triplets
# a[i]>a[j]>a[k] and i<j<k
if __name__ == '__main__':
     
    N = 4;
    print("Value of N: ", N);
 
    for i in range(1, N + 1):
        for j in range(1, N + 1):
            min = i if i < j else j;
            print(N - min + 1, end = "");
        print();
 
# This code is contributed
# by PrinciRaj1992




// C# program to find triplets
// a[i]>a[j]>a[k] and i<j<k
using System;
     
class GFG
{
 
// Driver code
public static void Main(String[] args)
{
    int N = 4, i, j, min;
    Console.WriteLine("Value of N: " + N);
 
    for (i = 1; i <= N; i++)
    {
        for (j = 1; j <= N; j++)
        {
            min = i < j ? i : j;
            Console.Write(N - min + 1);
        }
        Console.WriteLine();
    }
}
}
 
// This code is contributed by PrinciRaj1992




<script>
 
// JavaScript program to find triplets
// a[i]>a[j]>a[k] and i<j<k
 
// Driver code
    var N = 4, i, j, min;
    document.write("Value of N: " + N +"<br>");
 
    for (i = 1; i <= N; i++)
    {
        for (j = 1; j <= N; j++)
        {
            min = i < j ? i : j;
            document.write(N - min + 1);
        }
        document.write("<br>");
    }
 
// This code is contributed by shivanisinghss2110
 
</script>

Output: 
Value of N: 4
4444
4333
4322
4321

 

Time Complexity: O(n2)
Auxiliary Space: O(1)




#include <iostream>
using namespace std;
 
int main()
{
    int N = 4, i, j, min;
    cout << "Value of N: " << N << endl;
 
    for (i = 1; i <= N; i++) {
        for (j = 1; j <= N; j++) {
            min = i < j ? i : j;
            cout << N - min + 1;
        }
        for (j = N - 1; j >= 1; j--) {
            min = i < j ? i : j;
            cout << N - min + 1;
        }
        cout << endl;
    }
    return 0;
}




class GFG
{
    public static void main(String[] args)
    {
        int N = 4, i, j, min;
        System.out.println("Value of N: " + N);
     
        for (i = 1; i <= N; i++)
        {
            for (j = 1; j <= N; j++)
            {
                min = i < j ? i : j;
                System.out.print(N - min + 1);
            }
            for (j = N - 1; j >= 1; j--)
            {
                min = i < j ? i : j;
                System.out.print(N - min + 1);
            }
            System.out.println();
        }
    }
}
 
// This code is contributed by PrinciRaj1992




N = 4;
print("Value of N: ", N);
 
for i in range(1, N + 1):
    for j in range(1, N + 1):
        min = i if i < j else j;
        print(N - min + 1, end = "");
 
    for j in range(N - 1, 0, -1):
        min = i if i < j else j;
        print(N - min + 1, end = "");
    print();
 
# This code is contributed by Rajput-Ji




using System;
 
class GFG
{
    public static void Main(String[] args)
    {
        int N = 4, i, j, min;
        Console.WriteLine("Value of N: " + N);
     
        for (i = 1; i <= N; i++)
        {
            for (j = 1; j <= N; j++)
            {
                min = i < j ? i : j;
                Console.Write(N - min + 1);
            }
            for (j = N - 1; j >= 1; j--)
            {
                min = i < j ? i : j;
                Console.Write(N - min + 1);
            }
            Console.WriteLine();
        }
    }
}
 
// This code is contributed by Rajput-Ji




<script>
 var N = 4, i, j, min;
        document.write("Value of N: " + N +"<br>");
     
        for (i = 1; i <= N; i++)
        {
            for (j = 1; j <= N; j++)
            {
                min = i < j ? i : j;
                document.write(N - min + 1);
            }
            for (j = N - 1; j >= 1; j--)
            {
                min = i < j ? i : j;
                document.write(N - min + 1);
            }
            document.write("<br>");
        }
 
 
// this code is contributed by shivanisinghss2110
</script>

Output: 
Value of N: 4
4444444
4333334
4322234
4321234

 

Time Complexity: O(n2)
Auxiliary Space: O(1)
 


 




#include <iostream>
using namespace std;
 
int main()
{
    int N = 4, i, j, min;
    cout << "Value of N: " << N << endl;
 
    for (i = 1; i <= N; i++) {
        for (j = 1; j <= N; j++) {
            min = i < j ? i : j;
            cout << N - min + 1;
        }
        for (j = N - 1; j >= 1; j--) {
            min = i < j ? i : j;
            cout << N - min + 1;
        }
        cout << endl;
    }
    for (i = N - 1; i >= 1; i--) {
        for (j = 1; j <= N; j++) {
            min = i < j ? i : j;
            cout << N - min + 1;
        }
        for (j = N - 1; j >= 1; j--) {
            min = i < j ? i : j;
            cout << N - min + 1;
        }
        cout << endl;
    }
    return 0;
}




// Java implementation of the approach
class GFG
{
public static void main(String[] args)
{
    int N = 4, i, j, min;
    System.out.println("Value of N: " + N);
 
    for (i = 1; i <= N; i++)
    {
        for (j = 1; j <= N; j++)
        {
            min = i < j ? i : j;
            System.out.print(N - min + 1);
        }
        for (j = N - 1; j >= 1; j--)
        {
            min = i < j ? i : j;
            System.out.print(N - min + 1);
        }
        System.out.println();
    }
     
    for (i = N - 1; i >= 1; i--)
    {
        for (j = 1; j <= N; j++)
        {
            min = i < j ? i : j;
            System.out.print(N - min + 1);
        }
        for (j = N - 1; j >= 1; j--)
        {
            min = i < j ? i : j;
            System.out.print(N - min + 1);
        }
        System.out.println();
    }
    }
}
 
// This code is contributed by 29AjayKumar




# Python3 implementation of the approach
N = 4
print("Value of N: ", N)
 
for i in range(1, N + 1):
    for j in range(1, N + 1):
        min = i if i < j else j
        print(N - min + 1, end = " ")
 
    for j in range(N - 1, 0, -1):
        min = i if i < j else j
        print(N - min + 1, end = " ")
 
    print()
     
for i in range(N - 1, 0, -1):
    for j in range(1, N + 1):
        min = i if i < j else j
        print(N - min + 1, end = " ")
 
    for j in range(N - 1, 0, -1):
        min = i if i < j else j
        print(N - min + 1, end = " ")
 
    print()
     
# This code is contributed by sai prakash




// C# implementation of the approach
using System;
 
class GFG
{
public static void Main(String[] args)
{
    int N = 4, i, j, min;
    Console.WriteLine("Value of N: " + N);
 
    for (i = 1; i <= N; i++)
    {
        for (j = 1; j <= N; j++)
        {
            min = i < j ? i : j;
            Console.Write(N - min + 1);
        }
        for (j = N - 1; j >= 1; j--)
        {
            min = i < j ? i : j;
            Console.Write(N - min + 1);
        }
        Console.WriteLine();
    }
     
    for (i = N - 1; i >= 1; i--)
    {
        for (j = 1; j <= N; j++)
        {
            min = i < j ? i : j;
            Console.Write(N - min + 1);
        }
        for (j = N - 1; j >= 1; j--)
        {
            min = i < j ? i : j;
            Console.Write(N - min + 1);
        }
        Console.WriteLine();
    }
    }
}
 
// This code is contributed by Rajput-Ji




<script>
 
// JavaScript implementation of the approach
 
    var N = 4, i, j, min;
    document.write("Value of N: " + N +"<br>");
 
    for (i = 1; i <= N; i++)
    {
        for (j = 1; j <= N; j++)
        {
            min = i < j ? i : j;
            document.write(N - min + 1 );
        }
        for (j = N - 1; j >= 1; j--)
        {
            min = i < j ? i : j;
            document.write(N - min + 1);
        }
        document.write("<br>");
    }
     
    for (i = N - 1; i >= 1; i--)
    {
        for (j = 1; j <= N; j++)
        {
            min = i < j ? i : j;
            document.write(N - min + 1);
        }
        for (j = N - 1; j >= 1; j--)
        {
            min = i < j ? i : j;
            document.write(N - min + 1);
        }
        document.write("<br>");
    }
 
// This code is contributed by shivanisinghss2110
</script>

Output: 
Value of N: 4
4444444
4333334
4322234
4321234
4322234
4333334
4444444

 

Time Complexity: O(n2)
Auxiliary Space: O(1)


Article Tags :