HackerRank Python: Text Alignment Solution

Table of Contents

Question

In Python, a string of text can be aligned left, right and center.

.ljust(width)

This method returns a left aligned string of length width.

>>> width = 20
>>> print 'HackerRank'.ljust(width,'-')
HackerRank----------  

.center(width)

This method returns a centered string of length width.

>>> width = 20
>>> print 'HackerRank'.center(width,'-')
-----HackerRank-----

.rjust(width)

This method returns a right aligned string of length width.

>>> width = 20
>>> print 'HackerRank'.rjust(width,'-')
----------HackerRank

Task

You are given a partial code that is used for generating the HackerRank Logo of variable thickness.
Your task is to replace the blank (______) with rjust, ljust or center.

Input Format

A single line containing the thickness value for the logo.

Constraints

The thickness must be an odd number.

0 < thickness < 50Output Format

Output the desired logo.

Sample Input

5

Sample Output

    H    
   HHH   
  HHHHH  
 HHHHHHH 
HHHHHHHHH
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHHHHHHHHHHHHHHHHHHHHHH   
  HHHHHHHHHHHHHHHHHHHHHHHHH   
  HHHHHHHHHHHHHHHHHHHHHHHHH   
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
                    HHHHHHHHH 
                     HHHHHHH  
                      HHHHH   
                       HHH    
                        H 

Solution

				
					thickness = int(input())

c = 'H'

# Top Cone
for i in range(thickness):
    print((c * i).rjust(thickness-1) + c + (c * i).ljust(thickness-1))

# Top Pillars
for i in range(thickness+1):
    print((c * thickness).center(thickness * 2) + (c * thickness).center(thickness * 6))

# Middle Belt
for i in range((thickness+1)//2):
    print((c * thickness * 5).center(thickness * 6))

# Bottom Pillars
for i in range(thickness+1):
    print((c * thickness).center(thickness * 2) + (c * thickness).center(thickness * 6))

# Bottom Cone
for i in range(thickness):
    print(((c * (thickness-i-1)).rjust(thickness) + c + (c * (thickness-i-1)).ljust(thickness)).rjust(thickness * 6))

				
			
  1. The input thickness is read from the user as the number of lines in the logo.

  2. The character c is set to 'H', which will be used to construct the logo.

  3. The first loop generates the top cone of the logo. It iterates from 0 to thickness-1 and prints each line. The line is constructed by combining the left padding, the character c, and the right padding using the rjust and ljust methods.

  4. The second loop generates the top pillars of the logo. It iterates from 0 to thickness and prints each line. The line is constructed by centering the character c repeated thickness times within the total width of the top and bottom sections.

  5. The third loop generates the middle belt of the logo. It iterates (thickness+1)//2 times and prints each line. The line is constructed by centering the character c repeated thickness * 5 times within the total width of the logo.

  6. The fourth loop generates the bottom pillars of the logo. It iterates from 0 to thickness and prints each line. The line is constructed similarly to the top pillars.

  7. The fifth loop generates the bottom cone of the logo. It iterates from 0 to thickness-1 and prints each line. The line is constructed similarly to the top cone, with additional right padding to align the cone with the rest of the logo.

If you find anything wrong in this Solution, feel free to reach us in the comment section.

Sharing Is Caring:

Leave a Comment