# Program for diamond pattern with different layers

Given a number n and using 0-n numbers u 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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The idea 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.*/
```

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
```

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.