Given a number N, the task is to print Hut of width n.
Output
Algorithm:
- Take input for the width of the hut (n).
- If n is even, increment it by 1.
- Loop through rows from 0 to n – n/3.
- Loop through columns from 0 to n.
- Determine the character to print based on the position of the row and column:
a. If the position is on the roof, print “”.
b. If the position is on the walls, print “|” or “_” depending on the location of the position.
c. If the position is on the windows or door, print a combination of “” and “|” or “_” based on the location of the position.
d. Otherwise, print a space.
- Print a newline character after each row is completed.
Pseudocode:
1. Input n
2. If n is even, set n = n + 1
3. for i = 0 to n - n/3 do
4. for j = 0 to n do
5. if (i == n/5 || i == n - n/3 || (j == n - 1 && i >= n/5) || (j >= n/5 && j < n - n/5 && i == 0) ||
(j == 0 && i >= n/5) || (j == t && i > n/5) || (i <= n/5 && (i + j == n/5 || j - i == n/5)) ||
(j - i == n - n/5)) then
6. print "*"
7. else if (i == n/5 + n/7 && (j >= n/7 && j <= t - n/7)) then
8. print "_"
9. else if (i >= n/5 + n/7 && (j == n/7 || j == t - n/7)) then
10. print "|"
11. else
12. print " "
13. print newline
14. end for
15. end for
Below is the code to implement the above problem:
Program:
C++
#include <iostream>
using namespace std;
int hut_pattern( int n)
{
int i, j, t;
if (n % 2 == 0) {
n++;
}
for (i = 0; i <= n - n / 3; i++) {
for (j = 0; j < n; j++) {
t = 2 * n / 5;
if (t % 2 != 0) {
t--;
}
if (i == n / 5
|| i == n - n / 3
|| (j == n - 1 && i >= n / 5)
|| (j >= n / 5 && j < n - n / 5 && i == 0)
|| (j == 0 && i >= n / 5)
|| (j == t && i > n / 5)
|| (i <= n / 5 && (i + j == n / 5 || j - i == n / 5))
|| (j - i == n - n / 5)) {
cout << "*" ;
}
else if (i == n / 5 + n / 7
&& (j >= n / 7 && j <= t - n / 7)) {
cout << "_" ;
}
else if (i >= n / 5 + n / 7
&& (j == n / 7 || j == t - n / 7)) {
cout << "|" ;
}
else {
cout << " " ;
}
}
cout << "\n" ;
}
}
int main()
{
int n = 15;
hut_pattern(n);
}
|
Java
class GFG{
static void hut_pattern( int n)
{
int i, j, t;
if (n % 2 == 0 ) {
n++;
}
for (i = 0 ; i <= n - n / 3 ; i++) {
for (j = 0 ; j < n; j++) {
t = 2 * n / 5 ;
if (t % 2 != 0 ) {
t--;
}
if (i == n / 5
|| i == n - n / 3
|| (j == n - 1 && i >= n / 5 )
|| (j >= n / 5 && j < n - n / 5 && i == 0 )
|| (j == 0 && i >= n / 5 )
|| (j == t && i > n / 5 )
|| (i <= n / 5 && (i + j == n / 5 || j - i == n / 5 ))
|| (j - i == n - n / 5 )) {
System.out.print( "*" );
}
else if (i == n / 5 + n / 7
&& (j >= n / 7 && j <= t - n / 7 )) {
System.out.print( "_" );
}
else if (i >= n / 5 + n / 7
&& (j == n / 7 || j == t - n / 7 )) {
System.out.print( "|" );
}
else {
System.out.print( " " );
}
}
System.out.print( "\n" );
}
}
public static void main (String[] args) {
int n = 15 ;
hut_pattern(n);
}
}
|
Python3
def hut_pattern(n):
if n % 2 = = 0 :
n = n + 1
for i in range ( 0 , n - n / / 3 + 1 , 1 ):
for j in range ( 0 , n, 1 ):
t = 2 * n / 5
if t % 2 ! = 0 :
t = t - 1
if ((i = = n / 5 ) or (i = = n - n / 3 )
or (j = = n - 1 and i > = n / 5 ) or
(j > = n / 5 and j < n - n / 5 and i = = 0 ) or
(j = = 0 and i > = n / 5 ) or (j = = t and i > n / 5 ) or
(i < = n / 5 and (i + j = = n / 5 or j - i = = n / 5 )) or
(j - i = = n - n / 5 )):
print ( "*" ,end = " " )
elif ((i = = n / / 5 + n / / 7 ) and
(j > = n / / 7 and j < = t - n / / 7 )):
print ( "_" ,end = " " )
elif ((i > = n / / 5 + n / / 7 ) and
(j = = n / / 7 or j = = t - n / / 7 )):
print ( "|" ,end = " " )
else :
print ( " " ,end = " " )
print ( "\n" );
if __name__ = = '__main__' :
n = 15
hut_pattern(n)
|
C#
using System;
class GFG
{
public static void hut_pattern( int n)
{
int i, j, t;
if (n % 2 == 0)
{
n++;
}
for (i = 0; i <= n - n / 3; i++)
{
for (j = 0; j < n; j++)
{
t = 2 * n / 5;
if (t % 2 != 0)
{
t--;
}
if (i == n / 5 || i == n - n / 3 ||
(j == n - 1 && i >= n / 5) ||
(j >= n / 5 && j < n - n / 5 && i == 0) ||
(j == 0 && i >= n / 5) ||
(j == t && i > n / 5) ||
(i <= n / 5 && (i + j == n / 5 ||
j - i == n / 5)) ||
(j - i == n - n / 5))
{
Console.Write( "*" );
}
else if (i == n / 5 + n / 7 &&
(j >= n / 7 && j <= t - n / 7))
{
Console.Write( "_" );
}
else if (i >= n / 5 + n / 7 &&
(j == n / 7 || j == t - n / 7))
{
Console.Write( "|" );
}
else
{
Console.Write( " " );
}
}
Console.Write( "\n" );
}
}
static void Main()
{
int n = 20;
hut_pattern(n);
}
}
|
Javascript
<script>
function hut_pattern(n)
{
var i, j, t;
if (n % 2 == 0)
{
n++;
}
for (i = 0; i <= n - parseInt(n / 3); i++)
{
for (j = 0; j < n; j++)
{
t = parseInt(2 * n / 5);
if (t % 2 != 0)
{
t--;
}
if (i == parseInt(n / 5) ||
i == n - parseInt(n / 3) ||
(j == n - 1 && i >= parseInt(n / 5)) ||
(j >= parseInt(n / 5) &&
j < n - parseInt(n / 5) && i == 0) ||
(j == 0 && i >= parseInt(n / 5)) ||
(j == t && i > parseInt(n / 5)) ||
(i <= parseInt(n / 5) &&
(i + j == parseInt(n / 5) ||
j - i == parseInt(n / 5))) ||
(j - i == n - parseInt(n / 5)))
{
document.write( " *" );
}
else if (i == parseInt(n / 5) +
parseInt(n / 7) &&
(j >= parseInt(n / 7) &&
j <= t - parseInt(n / 7)))
{
document.write( "_" );
}
else if (i >= parseInt(n / 5) +
parseInt(n / 7) &&
(j == parseInt(n / 7) ||
j == parseInt(t - n / 7)))
{
document.write( "| " );
}
else
{
document.write( " " );
}
}
document.write( " <br/> " );
}
}
var n = 15;
hut_pattern(n);
</script>
|
Output:
**********
* * *
* * *
***************
* * *
* ___ * *
* | | * *
* | | * *
* | | * *
* | | * *
***************
Time complexity: O(n) where n is given the width of the hut
Auxiliary space: O(1)
Last Updated :
22 Mar, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...