"""
#####
####
###
##
#

- divide the problem; instead of printing the half square, print the full square; instead of printing a full square 
  print the first lint with 5 # then find the logic to print half square
"""
for row in range(5):
    s = ""
    s += "#" * (5 - row)
    print(s)

"""
#
##
###
####
###
##
#

- Display a row of symbols of a particular length using a loop
- Display a series of rows using nested loops
- Create a varying number of symbols in each row using an algebraic expression instead of a fixed value
- Discover the correct algebraic expression through experimentation and analysis

#                               ####            1
##                              ####            2
###                             ####            3
####      ####                  ####            4
###                             ####            3
##                              ####            2
#                               ####            1

(e)         (f)                  (g)            (h)

What if we count the empty spaces instead of the hash marks,
To get the right number of hash marks, think of each row as  having four boxes, and then subtract the number of empty spaces. 
If each row has four boxes of which abs(4 - row) are empty spaces, 
then the number of boxes with hash marks will be given by 4 - abs(4 - row).
"""
n = 7
for row in range(1, n + 1):
    s = ""
    s += "#" * (4 - abs(4 - row))
    print(s)

