Program to print hollow pyramid, diamond pattern and their modifications
For Prerequisite : Loops, If Else Statement
1. Hollow pyramid/triangle pattern
The pattern is similar to pyramid pattern. The only difference is, we will replace all internal ‘#’ or ‘*’ characters by space character and we will print 2*N-1 (N = number of rows in pattern) ‘#’ or ‘*’ characters in last row.
Examples:
Input: n=6 Output: # # # # # # # # # # # ###########
C++14
// CPP program to print a hollow pyramid pattern #include <iostream> using namespace std; void printPattern( int ); int main() { int n = 6; printPattern(n); } void printPattern( int n) { int i, j, k = 0; for (i = 1; i <= n; i++) // row=6 { // Print spaces for (j = i; j < n; j++) { cout << " " ; } // Print # while (k != (2 * i - 1)) { if (k == 0 || k == 2 * i - 2) cout << "#" ; else cout << " " ; k++; } k = 0; cout << endl; // print next row } // print last row for (i = 0; i < 2 * n - 1; i++) { cout << "#" ; } } // this article is contributed by Shivani Ghughtyal |
Java
// JAVA program to print a hollow // pyramid pattern class GFG{ public static void main(String args[]) { int n = 6 ; printPattern(n); } static void printPattern( int n) { int i, j, k = 0 ; for (i = 1 ; i <= n; i++) // row=6 { // Print spaces for (j = i; j < n; j++) { System.out.print( " " ); } // Print # while (k != ( 2 * i - 1 )) { if (k == 0 || k == 2 * i - 2 ) System.out.print( "#" ); else System.out.print( " " ); k++; ; } k = 0 ; // print next row System.out.println(); } // print last row for (i = 0 ; i < 2 * n - 1 ; i++) { System.out.print( "#" ); } } } /*This code is contributed by Nikita Tiwari.*/ |
Python
# Python program to print a hollow # pyramid pattern def printPattern( n) : k = 0 for i in range ( 1 ,n + 1 ) : #row 6 # Print spaces for j in range (i,n) : print ( ' ' , end = '') # Print # while (k ! = ( 2 * i - 1 )) : if (k = = 0 or k = = 2 * i - 2 ) : print ( '#' , end = '') else : print ( ' ' , end = '') k = k + 1 k = 0 ; print ("") # print next row # print last row for i in range ( 0 , 2 * n - 1 ) : print ( '#' , end = '') # Driver code n = 6 printPattern(n) # This code is contributed by Nikita Tiwari. |
C#
using System; public class GFG{ public static void Main() { int n = 6; printPattern(n); } static void printPattern( int n) { int i, j, k = 0; for (i = 1; i <= n; i++) // row=6 { // Print spaces for (j = i; j < n; j++) { Console.Write( " " ); } // Print # while (k != (2 * i - 1)) { if (k == 0 || k == 2 * i - 2) Console.Write( "#" ); else Console.Write( " " ); k++; ; } k = 0; // print next row Console.WriteLine(); } // print last row for (i = 0; i < 2 * n - 1; i++) { Console.Write( "#" ); } } } // This code is contributed by laxmigangarajula03 |
PHP
<?php // php program to print a // hollow pyramid pattern function printPattern( $n ) { $k = 0; // row=6 for ( $i = 1; $i <= $n ; $i ++) { // Print spaces for ( $j = $i ; $j < $n ; $j ++) { echo " " ; } // Print # while ( $k != (2 * $i - 1)) { if ( $k == 0 || $k == 2 * $i - 2) echo "#" ; else echo " " ; $k ++; } $k = 0; // print next row echo "\n" ; } // print last row for ( $i = 0; $i < 2 * $n - 1; $i ++) { echo "#" ; } } //Driver Code $n = 6; printPattern( $n ); // This code is contributed by mits ?> |
Javascript
<script> // JavaScript program to print a hollow pyramid pattern var n = 6; printPattern(n); function printPattern(n) { var i, j, k = 0; for (i = 1; i <= n; i++) // row=6 { // Print spaces for (j = i; j < n; j++) { document.write( " " ); } // Print # while (k != 2 * i - 1) { if (k == 0 || k == 2 * i - 2) document.write( "#" ); else document.write( " " ); k++; } k = 0; document.write( "<br>" ); // print next row } // print last row for (i = 0; i < 2 * n - 1; i++) { document.write( "#" ); } } // This code is contributed by rdtank. </script> |
# # # # # # # # # # # ###########
Time complexity: O(N^2),This algorithm has a time complexity of O(N^2), where N is the number of rows. This is because we are looping through the rows and columns of the pattern, which takes O(N^2) time to complete.
Space complexity: O(1),This algorithm does not require any additional space, so its space complexity is O(1).
2. Hollow Diamond
Note: For even input, print the pattern for n-1.
Example:
Input: 1
Output:

For n=1
Input: 7
Output:

For n=7
Input: 9
Output:

For n=9
Approach: To print diamond we need to print spaces before star and after the star to achieve constant increasing distance of stars.
To print the box shape we need to print ‘-‘ for i==1 (first row) & i==n (last row) and ‘|’ for j==1 (first column) and j==n (last column).
Algorithm: 1. If n is odd increment n.
2. Find mid=n/2.
3. Traverse from 1 to mid to print upper half of the pattern (say i).
4. Traverse from 1 to mid-i to print spaces for upper left most outer box (say j).
5. If (i==1) print ‘*’ (since for first row we need only one star).
6. else print ‘*’ and traverse from 1 to 2*i-3 to print spaces for hollow diamond (say j) and print ‘*’ after loop is over.
7. Traverse from 1 to mid-i to print spaces again for upper right most outer box (say j).
8. Close the loop at step 3.
9. Traverse from mid+1 to n-1 to print lower half of the pattern (say i).
4. Traverse from 1 to i-mid to print spaces for lower left most outer box (say j).
5. If (i==n-1) print ‘*’ (since for last row we need only one star).
6. else print ‘*’ and traverse from 1 to 2*(n-i)-3 to print spaces for hollow diamond (say j) and print ‘*’ after loop is over.
7. Traverse from 1 to i-mid to print spaces again for lower right most outer box (say j).
8. Close the loop at step 9.
C++14
#include <bits/stdc++.h> using namespace std; // function to print the pattern void printPattern( int & n) { int i,j,mid; if (n%2==1) //when n is odd, increase it by 1 to make it even n++; mid = n/2; // upper half pattern for (i = 1; i<= mid; i++) { for (j = 1; j<=mid-i; j++) //print the blank spaces and outer box before star cout<< " " ; if (i == 1) { cout << "*" ; } else { cout << "*" ; //in each line star at start and end position for (j = 1; j<=2*i-3; j++) { //print space to make hollow cout << " " ; } cout << "*" ; } for (j = 1; j<=mid-i; j++) //print the blank spaces and outer box after star cout<< " " ; cout << endl; } // lower half pattern for (i = mid+1; i<n; i++) { for (j = 1; j<=i-mid; j++) //print the blank spaces and outer box before star cout<< " " ; if (i == n-1) { cout << "*" ; } else { cout << "*" ; //in each line star at start and end position for (j = 1; j<=2*(n - i)-3; j++) { //print space to make hollow cout << " " ; } cout << "*" ; } for (j = 1; j<=i-mid; j++) //print the blank spaces and outer box after star cout<< " " ; cout << endl; } } // driver's code int main() { int n=7; printPattern(n); } // this code is contributed by prophet1999 |
Java
// JAVA program class GFG{ // function to print the pattern static void printPattern( int n) { int i,j,mid; if (n% 2 == 1 ) //when n is odd, increase it by 1 to make it even n++; mid = n/ 2 ; // upper half pattern for (i = 1 ; i<= mid; i++) { for (j = 1 ; j<=mid-i; j++) //print the blank spaces and outer box before star System.out.print( " " ); if (i == 1 ) { System.out.print( "*" ); } else { System.out.print( "*" ); //in each line star at start and end position for (j = 1 ; j<= 2 *i- 3 ; j++) { //print space to make hollow System.out.print( " " ); } System.out.print( "*" ); } for (j = 1 ; j<=mid-i; j++) //print the blank spaces and outer box after star System.out.print( " " ); System.out.println(); } // lower half pattern for (i = mid+ 1 ; i<n; i++) { for (j = 1 ; j<=i-mid; j++) //print the blank spaces and outer box before star System.out.print( " " ); if (i == n- 1 ) { System.out.print( "*" ); } else { System.out.print( "*" ); //in each line star at start and end position for (j = 1 ; j<= 2 *(n - i)- 3 ; j++) { //print space to make hollow System.out.print( " " ); } System.out.print( "*" ); } for (j = 1 ; j<=i-mid; j++) //print the blank spaces and outer box after star System.out.print( " " ); System.out.println(); } } // driver's code public static void main(String args[]) { int n = 7 ; printPattern(n); } } // This code is contributed by Pushpesh Raj. |
C#
// C# program using System; public class GFG{ // function to print the pattern public static void printPattern( int n) { int i, j, mid; if (n % 2 == 1) //when n is odd, increase it by 1 to make it even n++; mid = n/2; // upper half pattern for (i = 1; i <= mid; i++) { for (j = 1; j <= mid - i; j++) //print the blank spaces and outer box before star Console.Write( " " ); if (i == 1) { Console.Write( "*" ); } else { Console.Write( "*" ); //in each line star at start and end position for (j = 1; j <= 2 * i - 3; j++) { //print space to make hollow Console.Write( " " ); } Console.Write( "*" ); } for (j = 1; j <= mid - i; j++) //print the blank spaces and outer box after star Console.Write( " " ); Console.WriteLine(); } // lower half pattern for (i = mid + 1; i < n; i++) { for (j = 1; j <= i - mid; j++) //print the blank spaces and outer box before star Console.Write( " " ); if (i == n - 1) { Console.Write( "*" ); } else { Console.Write( "*" ); //in each line star at start and end position for (j = 1; j <= 2*(n - i)-3; j++) { //print space to make hollow Console.Write( " " ); } Console.Write( "*" ); } for (j = 1; j<=i-mid; j++) //print the blank spaces and outer box after star Console.Write( " " ); Console.WriteLine(); } } // driver's code public static void Main() { int n = 7; printPattern(n); } } // This code is contributed by Aman Kumar. |
Javascript
// function to print the pattern function printPattern( n) { let i,j,mid; if (n % 2 == 1) //when n is odd, increase it by 1 to make it even n++; mid = n/2; // upper half pattern for (i = 1; i <= mid; i++) { for (j = 1; j <= mid - i; j++) //print the blank spaces and outer box before star console.log( " " ); if (i == 1) { console.log( "*" ); } else { console.log( "*" ); //in each line star at start and end position for (j = 1; j<=2*i-3; j++) { //print space to make hollow console.log( " " ); } console.log( "*" ); } for (j = 1; j<=mid-i; j++) //print the blank spaces and outer box after star console.log( " " ); console.log( "<br>" ); } // lower half pattern for (i = mid+1; i<n; i++) { for (j = 1; j<=i-mid; j++) //print the blank spaces and outer box before star console.log( " " ); if (i == n-1) { console.log( "*" ); } else { console.log( "*" ); //in each line star at start and end position for (j = 1; j<=2*(n - i)-3; j++) { //print space to make hollow console.log( " " ); } console.log( "*" ); } for (j = 1; j<=i-mid; j++) //print the blank spaces and outer box after star console.log( " " ); console.log( "<br>" ); } } // driver's code let n=7; printPattern(n); |
Python3
# Python program class GFG: # function to print the pattern @staticmethod def printPattern(n): i, j, mid = 0 , 0 , 0 if n % 2 = = 1 : #when n is odd, increase it by 1 to make it even n + = 1 mid = n / / 2 # upper half pattern for i in range ( 1 , mid + 1 ): for j in range ( 1 , mid - i + 1 ): #print the blank spaces and outer box before star print ( " " , end = "") if i = = 1 : print ( "*" , end = "") else : print ( "*" , end = "") #in each line star at start and end position for j in range ( 1 , 2 * i - 3 + 1 ): #print space to make hollow print ( " " , end = "") print ( "*" , end = "") for j in range ( 1 , mid - i + 1 ): #print the blank spaces and outer box after star print ( " " , end = "") print () # lower half pattern for i in range (mid + 1 , n): for j in range ( 1 , i - mid + 1 ): #print the blank spaces and outer box before star print ( " " , end = "") if i = = n - 1 : print ( "*" , end = "") else : print ( "*" , end = "") #in each line star at start and end position for j in range ( 1 , 2 * (n - i) - 3 + 1 ): #print space to make hollow print ( " " , end = "") print ( "*" , end = "") for j in range ( 1 , i - mid + 1 ): #print the blank spaces and outer box after star print ( " " , end = "") print () # driver's code if __name__ = = '__main__' : n = 7 GFG.printPattern(n) # This code is contributed by sharmashivam215. |
* * * * * * * * * * * *
Time Complexity: O(n^2) for given input n
Auxiliary Space: O(1)
3. Hollow Diamond bounded inside a rectangular box made of horizontal and vertical dashes(-).
Write a program to Print hollow diamond pattern bound inside a box made of dash(-) and bitwise-OR(|) as shown below.
Note: For even input, print the pattern for n-1.
Example:
Input: 1
Output:

For n=1
Input: 7
Output:

For n=7
Input: 9
Output:

For n=9
Approach: To print diamond we need to print spaces before star and after the star to achieve constant increasing distance of stars.
To print the box shape we need to print ‘-‘ for i==1 (first row) & i==n (last row) and ‘|’ for j==1 (first column) and j==n (last column).
Algorithm: 1. If n is odd increment n.
2. Find mid=n/2.
3. Traverse from 1 to mid to print upper half of the pattern (say i).
4. Traverse from 1 to mid-i to print upper left most outer box (say j).
5. If (i==1) print ‘*’ (since for first row we need only one star).
6. else print ‘*’ and traverse from 1 to 2*i-3 to print spaces for hollow diamond (say j) and print ‘*’ after loop is over.
7. Traverse from 1 to mid-i to print upper right most outer box (say j).
8. Close the loop at step 3.
9. Traverse from mid+1 to n-1 to print lower half of the pattern (say i).
4. Traverse from 1 to i-mid to print lower left most outer box (say j).
5. If (i==n-1) print ‘*’ (since for last row we need only one star).
6. else print ‘*’ and traverse from 1 to 2*(n-i)-3 to print spaces for hollow diamond (say j) and print ‘*’ after loop is over.
7. Traverse from 1 to i-mid to print lower right most outer box (say j).
8. Close the loop at step 9.
C++14
#include <bits/stdc++.h> using namespace std; // function to print the pattern void printPattern( int & n) { int i,j,mid; if (n%2==1) //when n is odd, increase it by 1 to make it even n++; mid = n/2; // upper half pattern for (i = 1; i<= mid; i++) { for (j = 1; j<=mid-i; j++) { //print the blank spaces and outer box before star if (i==1) cout<< "-" ; else if (j==1) cout << "|" ; else cout<< " " ; } if (i == 1) { cout << "*" ; } else { cout << "*" ; //in each line star at start and end position for (j = 1; j<=2*i-3; j++) { //print space to make hollow cout << " " ; } cout << "*" ; } for (j = 1; j<=mid-i; j++) { //print the blank spaces and outer box after star if (i==1) cout<< "-" ; else if (j==mid-i) cout << "|" ; else cout<< " " ; } cout << endl; } // lower half pattern for (i = mid+1; i<n; i++) { for (j = 1; j<=i-mid; j++) { //print the blank spaces and outer box before star if (i==n-1) cout<< "-" ; else if (j==1) cout << "|" ; else cout<< " " ; } if (i == n-1) { cout << "*" ; } else { cout << "*" ; //in each line star at start and end position for (j = 1; j<=2*(n - i)-3; j++) { //print space to make hollow cout << " " ; } cout << "*" ; } for (j = 1; j<=i-mid; j++) { //print the blank spaces and outer box after star if (i==n-1) cout<< "-" ; else if (j==i-mid) cout << "|" ; else cout<< " " ; } cout << endl; } } // driver's code int main() { int n=12; printPattern(n); } // this code is contributed by prophet1999 |
Java
// Java code to implement the above approach import java.io.*; import java.util.*; class GFG { // function to print the pattern public static void printPattern( int n) { int i,j,mid; if (n% 2 == 1 ) //when n is odd, increase it by 1 to make it even n++; mid = n/ 2 ; // upper half pattern for (i = 1 ; i<= mid; i++) { for (j = 1 ; j<=mid-i; j++) { //print the blank spaces and outer box before star if (i== 1 ) System.out.print( "-" ); else if (j== 1 ) System.out.print( "|" ); else System.out.print( " " ); } if (i == 1 ) { System.out.print( "*" ); } else { System.out.print( "*" ); //in each line star at start and end position for (j = 1 ; j<= 2 *i- 3 ; j++) { //print space to make hollow System.out.print( " " ); } System.out.print( "*" ); } for (j = 1 ; j<=mid-i; j++) { //print the blank spaces and outer box after star if (i== 1 ) System.out.print( "-" ); else if (j==mid-i) System.out.print( "|" ); else System.out.print( " " ); } System.out.print( "\n" ); } // lower half pattern for (i = mid+ 1 ; i<n; i++) { for (j = 1 ; j<=i-mid; j++) { //print the blank spaces and outer box before star if (i==n- 1 ) System.out.print( "-" ); else if (j== 1 ) System.out.print( "|" ); else System.out.print( " " ); } if (i == n- 1 ) { System.out.print( "*" ); } else { System.out.print( "*" ); //in each line star at start and end position for (j = 1 ; j<= 2 *(n - i)- 3 ; j++) { //print space to make hollow System.out.print( " " ); } System.out.print( "*" ); } for (j = 1 ; j<=i-mid; j++) { //print the blank spaces and outer box after star if (i==n- 1 ) System.out.print( "-" ); else if (j==i-mid) System.out.print( "|" ); else System.out.print( " " ); } System.out.print( "\n" ); } } // Driver Code public static void main(String[] args) { int n= 12 ; printPattern(n); } } //this code is contributed by adityapatil12 |
Python3
# function to print the pattern def printPattern(n): if n % 2 = = 1 : # when n is odd, increase it by 1 to make it even n + = 1 mid = n / / 2 # upper half pattern for i in range ( 1 , mid + 1 ): for j in range ( 1 , mid - i + 1 ): # print the blank spaces and outer box before star if i = = 1 : print ( "-" , end = "") elif j = = 1 : print ( "|" , end = "") else : print ( " " , end = "") if i = = 1 : print ( "*" , end = "") else : print ( "*" , end = "") # in each line star at start and end position for j in range ( 1 , 2 * i - 2 ): # print space to make hollow print ( " " , end = "") print ( "*" , end = "") for j in range ( 1 , mid - i + 1 ): # print the blank spaces and outer box after star if i = = 1 : print ( "-" , end = "") elif j = = mid - i: print ( "|" , end = "") else : print ( " " , end = "") print () # lower half pattern for i in range (mid + 1 , n): for j in range ( 1 , i - mid + 1 ): # print the blank spaces and outer box before star if i = = n - 1 : print ( "-" , end = "") elif j = = 1 : print ( "|" , end = "") else : print ( " " , end = "") if i = = n - 1 : print ( "*" , end = "") else : print ( "*" , end = "") # in each line star at start and end position for j in range ( 1 , 2 * (n - i) - 2 ): # print space to make hollow print ( " " , end = "") print ( "*" , end = "") for j in range ( 1 , i - mid + 1 ): # print the blank spaces and outer box after star if i = = n - 1 : print ( "-" , end = "") elif j = = i - mid: print ( "|" , end = "") else : print ( " " , end = "") print () # driver's code n = 12 printPattern(n) # This code is contributed by prasad264 |
C#
using System; namespace Pattern { class Program { static void PrintPattern( ref int n) { int i, j, mid; if (n % 2 == 1) //when n is odd, increase it by 1 to make it even n++; mid = n / 2; // upper half pattern for (i = 1; i <= mid; i++) { for (j = 1; j <= mid - i; j++) { //print the blank spaces and outer box before star if (i == 1) Console.Write( "-" ); else if (j == 1) Console.Write( "|" ); else Console.Write( " " ); } if (i == 1) { Console.Write( "*" ); } else { Console.Write( "*" ); //in each line star at start and end position for (j = 1; j <= 2 * i - 3; j++) { //print space to make hollow Console.Write( " " ); } Console.Write( "*" ); } for (j = 1; j <= mid - i; j++) { //print the blank spaces and outer box after star if (i == 1) Console.Write( "-" ); else if (j == mid - i) Console.Write( "|" ); else Console.Write( " " ); } Console.WriteLine(); } // lower half pattern for (i = mid + 1; i < n; i++) { for (j = 1; j <= i - mid; j++) { //print the blank spaces and outer box before star if (i == n - 1) Console.Write( "-" ); else if (j == 1) Console.Write( "|" ); else Console.Write( " " ); } if (i == n - 1) { Console.Write( "*" ); } else { Console.Write( "*" ); //in each line star at start and end position for (j = 1; j <= 2 * (n - i) - 3; j++) { //print space to make hollow Console.Write( " " ); } Console.Write( "*" ); } for (j = 1; j <= i - mid; j++) { //print the blank spaces and outer box after star if (i == n - 1) Console.Write( "-" ); else if (j == i - mid) Console.Write( "|" ); else Console.Write( " " ); } Console.WriteLine(); } } static void Main( string [] args) { int n = 12; PrintPattern( ref n); } } } // This code is contributed by factworx412 |
Javascript
// JavaScript code to implement the above approach // function to print the pattern function printPattern(n) { let i, j, mid; if (n % 2 === 1) { // when n is odd, increase it by 1 to make it even n++; } mid = n / 2; // upper half pattern for (i = 1; i <= mid; i++) { let line = "" ; for (j = 1; j <= mid - i; j++) { // print the blank spaces and outer box before star if (i === 1) { line += "-" ; } else if (j === 1) { line += "|" ; } else { line += " " ; } } if (i === 1) { line += "*" ; } else { line += "*" ; // in each line star at start and end position for (j = 1; j <= 2 * i - 3; j++) { // print space to make hollow line += " " ; } line += "*" ; } for (j = 1; j <= mid - i; j++) { // print the blank spaces and outer box after star if (i === 1) { line += "-" ; } else if (j === mid - i) { line += "|" ; } else { line += " " ; } } console.log(line); } // lower half pattern for (i = mid + 1; i < n; i++) { let line = "" ; for (j = 1; j <= i - mid; j++) { // print the blank spaces and outer box before star if (i === n - 1) { line += "-" ; } else if (j === 1) { line += "|" ; } else { line += " " ; } } if (i === n - 1) { line += "*" ; } else { line += "*" ; // in each line star at start and end position for (j = 1; j <= 2 * (n - i) - 3; j++) { // print space to make hollow line += " " ; } line += "*" ; } for (j = 1; j <= i - mid; j++) { // print the blank spaces and outer box after star if (i === n - 1) { line += "-" ; } else if (j === i - mid) { line += "|" ; } else { line += " " ; } } console.log(line); } } // Driver Code let n = 12; printPattern(n); |
-----*----- | * * | | * * | | * * | |* *| * * |* *| | * * | | * * | | * * | -----*-----
Time Complexity: O(n*n)
Auxiliary Space: O(1)
This article is contributed by Shivani Ghughtyal and improved by Himanshu Patel(@prophet1999). If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Please Login to comment...