Skip to content
Related Articles

Related Articles

Improve Article
Program for diamond pattern with different layers
  • Difficulty Level : Hard
  • Last Updated : 28 May, 2021

Given a number n and using 0-n numbers you have to print such a pattern.
Examples: 
 

Input : n = 5
Output :
          0
        0 1 0
      0 1 2 1 0
    0 1 2 3 2 1 0
  0 1 2 3 4 3 2 1 0
0 1 2 3 4 5 4 3 2 1 0
  0 1 2 3 4 3 2 1 0
    0 1 2 3 2 1 0
      0 1 2 1 0
        0 1 0
          0

Input : n = 3
Output :
      0
    0 1 0
  0 1 2 1 0
0 1 2 3 2 1 0
  0 1 2 1 0
    0 1 0
      0

 

The idea here is to count the space in beginning of string. In this pattern there are ((2 * n) + 1) rows. In rows form 0 to n number of spaces is (2 * (n – i)). In row number from (n + 1) to (2 * n), number of space is ((i – n) * 2).
Below is the implementation of above approach: 
 

C++




// C++ code to print the pattern
#include <bits/stdc++.h>
using namespace std;
 
// function to generate the pattern.
void pattern(int n)
{
    // putting the space in line 1
    for (int i = 1; i <= n * 2; i++)
        cout << " ";   
    cout << 0 << endl;
 
    // generating the middle pattern.
    for (int i = 1; i <= (n * 2) - 1; i++) {
 
        // printing the increasing pattern
        if (i < n) {
            for (int j = 1; j <= (n - i) * 2; j++)
                cout << " ";
        }
        else {
            for (int j = 1; j <= (i % n) * 2; j++)
                cout << " ";
        }
 
        if (i < n) {
            for (int j = 0; j <= i % n; j++)
                cout << j << " ";
            for (int j = (i % n) - 1; j > 0; j--)
                cout << j << " ";
            cout << 0;
        }
 
        // printing the decreasing pattern
        else if (i > n) {
            for (int j = 0; j <= n - (i - n); j++)
                cout << j << " ";
 
            for (int j = (n - (i - n)) - 1; j > 0; j--)
                cout << j << " ";
            cout << 0;
        }
        else {
            for (int j = 0; j <= n; j++)
                cout << j << " ";
            for (int j = n - 1; j > 0; j--)
                cout << j << " ";
            cout << 0;
        }
        cout << endl;
    }
 
    // putting the space in last line
    for (int i = 1; i <= n * 2; i++)
        cout << " ";
    cout << 0;
}
 
// driver function.
int main()
{
    int n = 4;
    pattern(n);
    return 0;
}

Java




// Java code to print the pattern
import java.util.*;
import java.lang.*;
 
public class GeeksforGeeks{
     
    // function to generate the pattern.
    public static void pattern(int n){
         
        // putting the space in line 1
        for (int i = 1; i <= n * 2; i++)
            System.out.print(" ");
        System.out.print(0 + "\n");
 
        // generating the middle pattern.
        for (int i = 1; i <= (n * 2) - 1; i++) {
 
        // printing the increasing pattern
        if (i < n) {
            for (int j = 1; j <= (n - i) * 2; j++)
                System.out.print(" ");
        }
        else {
            for (int j = 1; j <= (i % n) * 2; j++)
                System.out.print(" ");
        }
 
        if (i < n) {
            for (int j = 0; j <= i % n; j++)
                System.out.print(j + " ");
            for (int j = (i % n) - 1; j > 0; j--)
                System.out.print(j + " ");
            System.out.print(0);
        }
 
        // printing the decreasing pattern
        else if (i > n) {
            for (int j = 0; j <= n - (i - n); j++)
                System.out.print(j + " ");
 
            for (int j = (n - (i - n)) - 1; j > 0; j--)
                System.out.print(j + " ");
            System.out.print(0);
        }
        else {
            for (int j = 0; j <= n; j++)
                System.out.print(j + " ");
            for (int j = n - 1; j > 0; j--)
                System.out.print(j + " ");
            System.out.print(0);
        }
        System.out.print("\n");
    }
 
    // putting the space in last line
        for (int i = 1; i <= n * 2; i++)
        System.out.print(" ");
        System.out.print(0);
    }
 
    // driver code
    public static void main(String argc[]){
        int n = 4;
        pattern(n);
    }
}
 
/*This code is contributed by Sagar Shukla.*/

Python3




# Python3 code to print the pattern
 
# function to generate the pattern.
def pattern(n):
 
    # putting the space in line 1
    for i in range(1, n * 2 + 1):
        print(end = " ")
    print("0")
 
    # generating the middle pattern.
    for i in range(1, n * 2):
 
        # printing the increasing pattern
        if (i < n):
            for j in range(1, (n - i) * 2 + 1):
                print(end = " ")
        else:
            for j in range(1, (i % n) * 2 + 1):
                print(end = " ")
         
        if (i < n):
            for j in range(i % n + 1):
                print(j, end = " ")
            for j in range(i % n - 1, -1, -1):
                print(j, end = " ")
 
        # printing the decreasing pattern
        elif (i > n):
            for j in range(n - (i - n) + 1):
                print(j, end = " ")
            for j in range((n - (i - n)) - 1, -1, -1):
                print(j, end = " ")
 
        else:
            for j in range(n + 1):
                print(j, end = " ")
            for j in range(n - 1, -1, -1):
                print(j, end = " ")
                 
        print()
     
    # putting the space in last line
    for i in range(1, n * 2 + 1):
        print(end = " ")
    print("0", end = "")
 
# Driver Code
n = 4;
pattern(n);
 
# This code is contributed by
# mohit kumar 29

C#




// C# code to print the pattern
using System;
 
public class GeeksforGeeks{
     
    // function to generate the pattern.
    public static void pattern(int n){
         
        // putting the space in line 1
        for (int i = 1; i <= n * 2; i++)
            Console.Write(" ");
        Console.Write(0 + "\n");
 
        // generating the middle pattern.
        for (int i = 1; i <= (n * 2) - 1; i++) {
 
        // printing the increasing pattern
        if (i < n) {
            for (int j = 1; j <= (n - i) * 2; j++)
                Console.Write(" ");
        }
        else {
            for (int j = 1; j <= (i % n) * 2; j++)
                Console.Write(" ");
        }
 
        if (i < n) {
            for (int j = 0; j <= i % n; j++)
                Console.Write(j + " ");
            for (int j = (i % n) - 1; j > 0; j--)
                Console.Write(j + " ");
            Console.Write(0);
        }
 
        // printing the decreasing pattern
        else if (i > n) {
            for (int j = 0; j <= n - (i - n); j++)
                Console.Write(j + " ");
 
            for (int j = (n - (i - n)) - 1; j > 0; j--)
                Console.Write(j + " ");
            Console.Write(0);
        }
        else {
            for (int j = 0; j <= n; j++)
                Console.Write(j + " ");
            for (int j = n - 1; j > 0; j--)
                Console.Write(j + " ");
            Console.Write(0);
        }
        Console.Write("\n");
    }
 
    // putting the space in last line
        for (int i = 1; i <= n * 2; i++)
        Console.Write(" ");
        Console.Write(0);
    }
 
    // driver code
    public static void Main(string []argc){
        int n = 4;
        pattern(n);
    }
}
 
// This code is contributed by rutvik_56.

PHP




<?php
// PHP code to print
// the pattern
 
// function to generate
// the pattern.
function pattern($n)
{
    // putting the
    // space in line 1
    for ($i = 1; $i <= $n * 2;
                         $i++)
        echo " ";
    echo 0 , "\n";
 
    // generating the
    // middle pattern.
    for ($i = 1; $i <= ($n * 2) - 1;
                               $i++)
    {
 
        // printing the
        // increasing pattern
        if ($i < $n)
        {
            for ($j = 1;
                 $j <= ($n - $i) * 2;
                 $j++)
                echo " ";
        }
        else
        {
            for ($j = 1;
                 $j <= ($i % $n) * 2;
                 $j++)
                echo " ";
        }
 
        if ($i < $n)
        {
            for ($j = 0; $j <= $i % $n;
                                  $j++)
                echo $j , " ";
            for ($j = ($i % $n) - 1; $j > 0;
                                       $j--)
                echo $j , " ";
            echo 0;
        }
 
        // printing the
        // decreasing pattern
        else if ($i > $n)
        {
            for ($j = 0; $j <= $n - ($i - $n);
                                        $j++)
                echo $j , " ";
 
            for ($j = ($n - ($i - $n)) - 1;
                              $j > 0; $j--)
                echo $j , " ";
            echo 0;
        }
        else {
            for ($j = 0; $j <= $n; $j++)
                echo $j ," ";
                 
            for ($j = $n - 1; $j > 0; $j--)
                echo $j , " ";
        echo 0;
        }
        echo "\n";
    }
 
    // putting the space
    // in last line
    for ($i = 1; $i <= $n * 2; $i++)
        echo " ";
    echo 0;
}
 
// Driver Code
$n = 4;
pattern($n);
 
// This code is contributed by ajit
?>

Javascript




<script>
// Javascript code to print the pattern
     
    // function to generate the pattern.
    function pattern(n)
    {
        // putting the space in line 1
        for (let i = 1; i <= n * 2; i++)
            document.write(" ");
        document.write(0 + "<br>");
   
        // generating the middle pattern.
        for (let i = 1; i <= (n * 2) - 1; i++) {
   
        // printing the increasing pattern
        if (i < n) {
            for (let j = 1; j <= (n - i) * 2; j++)
                document.write(" ");
        }
        else {
            for (let j = 1; j <= (i % n) * 2; j++)
                document.write(" ");
        }
   
        if (i < n) {
            for (let j = 0; j <= i % n; j++)
                document.write(j + " ");
            for (let j = (i % n) - 1; j > 0; j--)
                document.write(j + " ");
            document.write(0);
        }
   
        // printing the decreasing pattern
        else if (i > n) {
            for (let j = 0; j <= n - (i - n); j++)
                document.write(j + " ");
   
            for (let j = (n - (i - n)) - 1; j > 0; j--)
                document.write(j + " ");
            document.write(0);
        }
        else {
            for (let j = 0; j <= n; j++)
                document.write(j + " ");
            for (let j = n - 1; j > 0; j--)
                document.write(j + " ");
            document.write(0);
        }
        document.write("<br>");
    }
   
    // putting the space in last line
        for (let i = 1; i <= n * 2; i++)
        document.write(" ");
        document.write(0);
    }
     
    let n = 4;
    pattern(n);
     
 
// This code is contributed by patel2127
</script>

Output: 
 

        0
      0 1 0
    0 1 2 1 0
  0 1 2 3 2 1 0
0 1 2 3 4 3 2 1 0
  0 1 2 3 2 1 0
    0 1 2 1 0
      0 1 0
        0

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :