Open In App

Program to print Inverse Diamond pattern

Last Updated : 13 Mar, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given an integer n, the task is to print the Inverse Diamond Pattern in 2n-1 rows.
Example: 
 

Input: n = 3
Output:

*** ***
**   **
*     *
**   **
*** ***

Input: n = 7
Output:

******* *******
******   ******
*****     *****
****       ****
***         ***
**           **
*             *
**           **
***         ***
****       ****
*****     *****
******   ******
******* *******

 

Approach: 
 

  1. The full Inverse Diamond is of 2n-1 rows for an input of n.
  2. The program is divided to print this pattern in two parts: 
    • The first part is the top half of diamond of n rows.
    • This part includes 3 parts- the left triangle of *, the middle triangle of space and the right triangle of *.
    • The second part is the below half of diamond of n-1 rows.
    • This part also includes 3 parts- the left triangle of *, the middle triangle of space and the right triangle of *.
  3. Printing each part, the required Inverse Diamond Pattern is obtained.

Below is the implementation of the above approach: 
 

C++




// C++ Code to print 
// the inverse diamond shape 
    
#include<bits/stdc++.h>
 using namespace std; 
    
    // Function to Print Inverse Diamond pattern 
    // with 2n-1 rows 
void printDiamond(int n) 
    
        cout<<endl; 
    
        int i, j = 0; 
    
        // for top half 
        for (i = 0; i < n; i++) { 
    
            // for left * 
            for (j = i; j < n; j++) 
                cout<<"*"
    
            // for middle " " 
            for (j = 0; j < 2 * i + 1; j++) 
                cout<<" "
    
            // for right * 
            for (j = i; j < n; j++) 
                cout<<"*"
    
            cout<<endl; 
        
    
        // for below half 
        for (i = 0; i < n - 1; i++) { 
    
            // for left * 
            for (j = 0; j < i + 2; j++) 
                cout<<"*"
    
            // for middle " " 
            for (j = 0; j < 2 * (n - 1 - i) - 1; j++) 
                cout<<" "
    
            // for right * 
            for (j = 0; j < i + 2; j++) 
                cout<<"*"
    
            cout<<endl; 
        
    
        cout<<endl; 
    
    
    // Driver Code 
    int main() 
    
    
        // Define n 
        int n = 3; 
        cout<<"Inverse Diamond Pattern for n = "<<n; 
        printDiamond(n); 
    
        n = 7; 
        cout<<"\nInverse Diamond Pattern for n = "<<n; 
        printDiamond(n); 
    


Java




// Java Code to print
// the inverse diamond shape
  
import java.util.*;
  
class GFG {
  
    // Function to Print Inverse Diamond pattern
    // with 2n-1 rows
    static void printDiamond(int n)
    {
        System.out.println();
  
        int i, j = 0;
  
        // for top half
        for (i = 0; i < n; i++) {
  
            // for left *
            for (j = i; j < n; j++)
                System.out.print("*");
  
            // for middle " "
            for (j = 0; j < 2 * i + 1; j++)
                System.out.print(" ");
  
            // for right *
            for (j = i; j < n; j++)
                System.out.print("*");
  
            System.out.println();
        }
  
        // for below half
        for (i = 0; i < n - 1; i++) {
  
            // for left *
            for (j = 0; j < i + 2; j++)
                System.out.print("*");
  
            // for middle " "
            for (j = 0; j < 2 * (n - 1 - i) - 1; j++)
                System.out.print(" ");
  
            // for right *
            for (j = 0; j < i + 2; j++)
                System.out.print("*");
  
            System.out.println();
        }
  
        System.out.println();
    }
  
    // Driver Code
    public static void main(String[] args)
    {
  
        // Define n
        int n = 3;
        System.out.println("Inverse Diamond Pattern for n = " + n);
        printDiamond(n);
  
        n = 7;
        System.out.println("\nInverse Diamond Pattern for n = " + n);
        printDiamond(n);
    }
}


Python3




#Python3 program to print 
# the inverse diamond shape 
      
  
# Function to Print Inverse 
# Diamond pattern 
# with 2n-1 rows 
def printDiamond(n) :
    print("")
    j = 0
      
    # for top half 
    for i in range(0,n): 
          
        # for left * 
        for j in range(i,n):
            print("*",end="")
              
        # for middle " "
        for j in range(0,2 * i + 1):
            print(" ",end="")
              
        # for right * 
        for j in range(i,n):
            print("*",end="")
              
        print("")
      
    # for below half 
    for i in range(0,n-1):
          
        # for left * 
        for j in range(0, i+2):
            print("*",end="")
              
        # for middle " " 
        for j in range(0,2 * (n - 1 - i) - 1):
            print(" ",end="")
              
        # for right * 
        for j in range(0, i+2):
            print("*",end="")
              
        print("")
          
    print("")
      
      
# Driver Code 
  
if __name__=='__main__':
      
# Define n 
    n = 3
    print("Inverse Diamond Pattern for n = ",n) 
    printDiamond(n) 
      
    n = 7
    print("\nInverse Diamond Pattern for n = ",n )
    printDiamond(n) 
  
# this code is contributed by Smitha Dinesh Semwal


C#




// C# Code to print 
// the inverse diamond shape 
using System;
  
class GFG 
  
// Function to Print Inverse 
// Diamond pattern with 2n-1 rows 
static void printDiamond(int n) 
    Console.WriteLine(); 
  
    int i, j = 0; 
  
    // for top half 
    for (i = 0; i < n; i++) 
    
  
        // for left * 
        for (j = i; j < n; j++) 
            Console.Write("*"); 
  
        // for middle " " 
        for (j = 0; j < 2 * i + 1; j++) 
            Console.Write(" "); 
  
        // for right * 
        for (j = i; j < n; j++) 
            Console.Write("*"); 
  
        Console.WriteLine(); 
    
  
    // for below half 
    for (i = 0; i < n - 1; i++) 
    
  
        // for left * 
        for (j = 0; j < i + 2; j++) 
            Console.Write("*"); 
  
        // for middle " " 
        for (j = 0; j < 2 * (n - 1 - i) - 1; j++) 
            Console.Write(" "); 
  
        // for right * 
        for (j = 0; j < i + 2; j++) 
            Console.Write("*"); 
  
        Console.WriteLine(); 
    
  
    Console.WriteLine(); 
  
// Driver Code 
public static void Main() 
  
    // Define n 
    int n = 3; 
    Console.WriteLine("Inverse Diamond "
                      "Pattern for n = " + n); 
    printDiamond(n); 
  
    n = 7; 
    Console.WriteLine("\nInverse Diamond "
                        "Pattern for n = " + n); 
    printDiamond(n); 
  
// This code is contributed
// by inder_verma.


PHP




<?php
// PHP Code to print 
// the inverse diamond shape 
  
// Function to Print Inverse 
// Diamond pattern with 2n-1 rows 
function printDiamond($n
    echo"\n"
  
    $i; $j = 0; 
  
    // for top half 
    for ($i = 0; $i < $n; $i++) 
    
  
        // for left * 
        for ($j = $i; $j < $n; $j++) 
            echo("*"); 
  
        // for middle " " 
        for ($j = 0; 
             $j < 2 * $i + 1; $j++) 
            echo(" "); 
  
        // for right * 
        for ($j = $i; $j < $n; $j++) 
            echo("*"); 
  
        echo("\n"); 
    
  
    // for below half 
    for ($i = 0; $i < $n - 1; $i++) 
    
  
        // for left * 
        for ($j = 0; $j < $i + 2; $j++) 
            echo("*"); 
  
        // for middle " " 
        for ($j = 0; 
             $j < 2 * ($n - 1 - $i) - 1; $j++) 
            echo(" "); 
  
        // for right * 
        for ($j = 0; $j < $i + 2; $j++) 
            echo("*"); 
  
        echo("\n"); 
    
  
    echo("\n"); 
  
// Driver Code 
  
// Define n 
$n = 3; 
echo("Inverse Diamond Pattern for n = " );
echo($n); 
printDiamond($n); 
  
$n = 7; 
echo("\nInverse Diamond Pattern for n = " );
echo($n); 
printDiamond($n); 
  
// This code is contributed
// by inder_verma.
?>


Javascript




<script>
  
      // JavaScript Code to print
      // the inverse diamond shape
  
      // Function to Print Inverse Diamond pattern
      // with 2n-1 rows
      function printDiamond(n) {
        document.write("<br><br>");
  
        var i,
          j = 0;
  
        // for top half
        for (i = 0; i < n; i++) {
          // for left *
          for (j = i; j < n; j++) 
          document.write("*");
  
          // for middle " "
          for (j = 0; j < 2 * i + 1; j++) 
          document.write("  ");
  
          // for right *
          for (j = i; j < n; j++) 
          document.write("*");
  
          document.write("<br>");
        }
  
        // for below half
        for (i = 0; i < n - 1; i++) {
          // for left *
          for (j = 0; j < i + 2; j++) 
          document.write("*");
  
          // for middle " "
          for (j = 0; j < 2 * (n - 1 - i) - 1; j++)
            document.write("  ");
  
          // for right *
          for (j = 0; j < i + 2; j++) 
          document.write("*");
  
          document.write("<br>");
        }
  
        document.write("<br>");
      }
  
      // Driver Code
      // Define n
      var n = 3;
      document.write("Inverse Diamond Pattern for n = " + n);
      printDiamond(n);
  
      n = 7;
      document.write("\nInverse Diamond Pattern for n = " + n);
      printDiamond(n);
        
</script>


Output: 

Inverse Diamond Pattern for n = 3

*** ***
**   **
*     *
**   **
*** ***


Inverse Diamond Pattern for n = 7

******* *******
******   ******
*****     *****
****       ****
***         ***
**           **
*             *
**           **
***         ***
****       ****
*****     *****
******   ******
******* *******

 

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



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads