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
Java
Python
C#
PHP
Javascript
Output
#
# #
# #
# #
# #
# #
###########
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;
void printPattern( int & n)
{
int i,j,mid;
if (n%2==1)
n++;
mid = n/2;
for (i = 1; i<= mid; i++) {
for (j = 1; j<=mid-i; j++)
cout<< " " ;
if (i == 1) {
cout << "*" ;
} else {
cout << "*" ;
for (j = 1; j<=2*i-3; j++) {
cout << " " ;
}
cout << "*" ;
}
for (j = 1; j<=mid-i; j++)
cout<< " " ;
cout << endl;
}
for (i = mid+1; i<n; i++) {
for (j = 1; j<=i-mid; j++)
cout<< " " ;
if (i == n-1) {
cout << "*" ;
} else {
cout << "*" ;
for (j = 1; j<=2*(n - i)-3; j++) {
cout << " " ;
}
cout << "*" ;
}
for (j = 1; j<=i-mid; j++)
cout<< " " ;
cout << endl;
}
}
int main() {
int n=7;
printPattern(n);
}
|
Java
class GFG{
static void printPattern( int n)
{
int i,j,mid;
if (n% 2 == 1 )
n++;
mid = n/ 2 ;
for (i = 1 ; i<= mid; i++) {
for (j = 1 ; j<=mid-i; j++)
System.out.print( " " );
if (i == 1 ) {
System.out.print( "*" );
} else {
System.out.print( "*" );
for (j = 1 ; j<= 2 *i- 3 ; j++) {
System.out.print( " " );
}
System.out.print( "*" );
}
for (j = 1 ; j<=mid-i; j++)
System.out.print( " " );
System.out.println();
}
for (i = mid+ 1 ; i<n; i++) {
for (j = 1 ; j<=i-mid; j++)
System.out.print( " " );
if (i == n- 1 ) {
System.out.print( "*" );
} else {
System.out.print( "*" );
for (j = 1 ; j<= 2 *(n - i)- 3 ; j++) {
System.out.print( " " );
}
System.out.print( "*" );
}
for (j = 1 ; j<=i-mid; j++)
System.out.print( " " );
System.out.println();
}
}
public static void main(String args[])
{
int n = 7 ;
printPattern(n);
}
}
|
C#
using System;
public class GFG{
public static void printPattern( int n)
{
int i, j, mid;
if (n % 2 == 1)
n++;
mid = n/2;
for (i = 1; i <= mid; i++) {
for (j = 1; j <= mid - i; j++)
Console.Write( " " );
if (i == 1) {
Console.Write( "*" );
} else {
Console.Write( "*" );
for (j = 1; j <= 2 * i - 3; j++) {
Console.Write( " " );
}
Console.Write( "*" );
}
for (j = 1; j <= mid - i; j++)
Console.Write( " " );
Console.WriteLine();
}
for (i = mid + 1; i < n; i++) {
for (j = 1; j <= i - mid; j++)
Console.Write( " " );
if (i == n - 1) {
Console.Write( "*" );
} else {
Console.Write( "*" );
for (j = 1; j <= 2*(n - i)-3; j++) {
Console.Write( " " );
}
Console.Write( "*" );
}
for (j = 1; j<=i-mid; j++)
Console.Write( " " );
Console.WriteLine();
}
}
public static void Main()
{
int n = 7;
printPattern(n);
}
}
|
Javascript
function printPattern( n)
{
let i,j,mid;
if (n % 2 == 1)
n++;
mid = n/2;
for (i = 1; i <= mid; i++) {
for (j = 1; j <= mid - i; j++)
console.log( " " );
if (i == 1) {
console.log( "*" );
} else {
console.log( "*" );
for (j = 1; j<=2*i-3; j++) {
console.log( " " );
}
console.log( "*" );
}
for (j = 1; j<=mid-i; j++)
console.log( " " );
console.log( "<br>" );
}
for (i = mid+1; i<n; i++) {
for (j = 1; j<=i-mid; j++)
console.log( " " );
if (i == n-1) {
console.log( "*" );
} else {
console.log( "*" );
for (j = 1; j<=2*(n - i)-3; j++) {
console.log( " " );
}
console.log( "*" );
}
for (j = 1; j<=i-mid; j++)
console.log( " " );
console.log( "<br>" );
}
}
let n=7;
printPattern(n);
|
Python3
Output
*
* *
* *
* *
* *
* *
*
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;
void printPattern( int & n)
{
int i,j,mid;
if (n%2==1)
n++;
mid = n/2;
for (i = 1; i<= mid; i++) {
for (j = 1; j<=mid-i; j++) {
if (i==1)
cout<< "-" ;
else if (j==1)
cout << "|" ;
else cout<< " " ;
}
if (i == 1) {
cout << "*" ;
} else {
cout << "*" ;
for (j = 1; j<=2*i-3; j++) {
cout << " " ;
}
cout << "*" ;
}
for (j = 1; j<=mid-i; j++) {
if (i==1)
cout<< "-" ;
else if (j==mid-i)
cout << "|" ;
else cout<< " " ;
}
cout << endl;
}
for (i = mid+1; i<n; i++) {
for (j = 1; j<=i-mid; j++) {
if (i==n-1)
cout<< "-" ;
else if (j==1)
cout << "|" ;
else cout<< " " ;
}
if (i == n-1) {
cout << "*" ;
} else {
cout << "*" ;
for (j = 1; j<=2*(n - i)-3; j++) {
cout << " " ;
}
cout << "*" ;
}
for (j = 1; j<=i-mid; j++) {
if (i==n-1)
cout<< "-" ;
else if (j==i-mid)
cout << "|" ;
else cout<< " " ;
}
cout << endl;
}
}
int main() {
int n=12;
printPattern(n);
}
|
Java
import java.io.*;
import java.util.*;
class GFG
{
public static void printPattern( int n)
{
int i,j,mid;
if (n% 2 == 1 )
n++;
mid = n/ 2 ;
for (i = 1 ; i<= mid; i++) {
for (j = 1 ; j<=mid-i; j++) {
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( "*" );
for (j = 1 ; j<= 2 *i- 3 ; j++) {
System.out.print( " " );
}
System.out.print( "*" );
}
for (j = 1 ; j<=mid-i; j++) {
if (i== 1 )
System.out.print( "-" );
else if (j==mid-i)
System.out.print( "|" );
else System.out.print( " " );
}
System.out.print( "\n" );
}
for (i = mid+ 1 ; i<n; i++) {
for (j = 1 ; j<=i-mid; j++) {
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( "*" );
for (j = 1 ; j<= 2 *(n - i)- 3 ; j++) {
System.out.print( " " );
}
System.out.print( "*" );
}
for (j = 1 ; j<=i-mid; j++) {
if (i==n- 1 )
System.out.print( "-" );
else if (j==i-mid)
System.out.print( "|" );
else System.out.print( " " );
}
System.out.print( "\n" );
}
}
public static void main(String[] args)
{
int n= 12 ;
printPattern(n);
}
}
|
Python3
def printPattern(n):
if n % 2 = = 1 :
n + = 1
mid = n / / 2
for i in range ( 1 , mid + 1 ):
for j in range ( 1 , mid - i + 1 ):
if i = = 1 :
print ( "-" , end = "")
elif j = = 1 :
print ( "|" , end = "")
else :
print ( " " , end = "")
if i = = 1 :
print ( "*" , end = "")
else :
print ( "*" , end = "")
for j in range ( 1 , 2 * i - 2 ):
print ( " " , end = "")
print ( "*" , end = "")
for j in range ( 1 , mid - i + 1 ):
if i = = 1 :
print ( "-" , end = "")
elif j = = mid - i:
print ( "|" , end = "")
else :
print ( " " , end = "")
print ()
for i in range (mid + 1 , n):
for j in range ( 1 , i - mid + 1 ):
if i = = n - 1 :
print ( "-" , end = "")
elif j = = 1 :
print ( "|" , end = "")
else :
print ( " " , end = "")
if i = = n - 1 :
print ( "*" , end = "")
else :
print ( "*" , end = "")
for j in range ( 1 , 2 * (n - i) - 2 ):
print ( " " , end = "")
print ( "*" , end = "")
for j in range ( 1 , i - mid + 1 ):
if i = = n - 1 :
print ( "-" , end = "")
elif j = = i - mid:
print ( "|" , end = "")
else :
print ( " " , end = "")
print ()
n = 12
printPattern(n)
|
C#
using System;
namespace Pattern
{
class Program
{
static void PrintPattern( ref int n)
{
int i, j, mid;
if (n % 2 == 1)
n++;
mid = n / 2;
for (i = 1; i <= mid; i++)
{
for (j = 1; j <= mid - i; j++)
{
if (i == 1)
Console.Write( "-" );
else if (j == 1)
Console.Write( "|" );
else Console.Write( " " );
}
if (i == 1)
{
Console.Write( "*" );
}
else
{
Console.Write( "*" );
for (j = 1; j <= 2 * i - 3; j++)
{
Console.Write( " " );
}
Console.Write( "*" );
}
for (j = 1; j <= mid - i; j++)
{
if (i == 1)
Console.Write( "-" );
else if (j == mid - i)
Console.Write( "|" );
else Console.Write( " " );
}
Console.WriteLine();
}
for (i = mid + 1; i < n; i++)
{
for (j = 1; j <= i - mid; j++)
{
if (i == n - 1)
Console.Write( "-" );
else if (j == 1)
Console.Write( "|" );
else Console.Write( " " );
}
if (i == n - 1)
{
Console.Write( "*" );
}
else
{
Console.Write( "*" );
for (j = 1; j <= 2 * (n - i) - 3; j++)
{
Console.Write( " " );
}
Console.Write( "*" );
}
for (j = 1; j <= i - mid; j++)
{
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);
}
}
}
|
Javascript
function printPattern(n) {
let i, j, mid;
if (n % 2 === 1) {
n++;
}
mid = n / 2;
for (i = 1; i <= mid; i++) {
let line = "" ;
for (j = 1; j <= mid - i; j++) {
if (i === 1) {
line += "-" ;
}
else if (j === 1) {
line += "|" ;
}
else {
line += " " ;
}
}
if (i === 1) {
line += "*" ;
}
else {
line += "*" ;
for (j = 1; j <= 2 * i - 3; j++) {
line += " " ;
}
line += "*" ;
}
for (j = 1; j <= mid - i; j++) {
if (i === 1) {
line += "-" ;
}
else if (j === mid - i) {
line += "|" ;
}
else {
line += " " ;
}
}
console.log(line);
}
for (i = mid + 1; i < n; i++) {
let line = "" ;
for (j = 1; j <= i - mid; j++) {
if (i === n - 1) {
line += "-" ;
}
else if (j === 1) {
line += "|" ;
}
else {
line += " " ;
}
}
if (i === n - 1) {
line += "*" ;
}
else {
line += "*" ;
for (j = 1; j <= 2 * (n - i) - 3; j++) {
line += " " ;
}
line += "*" ;
}
for (j = 1; j <= i - mid; j++) {
if (i === n - 1) {
line += "-" ;
}
else if (j === i - mid) {
line += "|" ;
}
else {
line += " " ;
}
}
console.log(line);
}
}
let n = 12;
printPattern(n);
|
Output
-----*-----
| * * |
| * * |
| * * |
|* *|
* *
|* *|
| * * |
| * * |
| * * |
-----*-----
Time Complexity: O(n*n)
Auxiliary Space: O(1)
Last Updated :
27 Mar, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...