Rangoli

Osama Mohamed
3 min readOct 7, 2023

--

Rangoli

The code provided prints a rangoli pattern:

def rangoli(size):
"""
Prints a rangoli pattern of the specified size to the console.

Args:
size: The size of the rangoli pattern.
"""

This line defines a function called rangoli(), which takes a single integer parameter called size.

The function will print a rangoli pattern of the specified size to the console.

The size parameter specifies the number of letters in the longest line of the rangoli pattern.

The rangoli pattern will be a diamond shape, with the longest line in the middle and the shortest lines at the top and bottom.

alphabet = [chr(char) for char in range(97, 123)]

This line creates a list of all the letters in the alphabet, starting from ‘a’ and ending at ‘z’.

The alphabet variable is a list of all the letters in the alphabet. It is created using the chr() function and the range() function.

The chr() function converts an integer to a Unicode character.

The range() function generates a sequence of numbers from 97 to 122, which are the ASCII codes for the letters 'a' to 'z'.

rangoli_list = []

This line creates an empty list called rangoli_list. This list will be used to store the rangoli patterns.

for letter in range(size):

This line starts a for loop that iterates over the numbers from 0 to size - 1.

alpha_str = '-'.join(alphabet[letter:size])

This line creates a string called alpha_str by joining the letters in the alphabet from the current letter to the last letter with hyphens.

For example, if size is 6, then alpha_str will be equal to the string a-b-c-d-e-f.

rangoli_list.append((alpha_str[::-1] + alpha_str[1:]).center(4 * size - 3, '-'))

This line appends a rangoli pattern to the rangoli_list list.

The rangoli pattern is created by first reversing the alpha_str string and then joining it back to the original string, again with hyphens.

For example, if alpha_str is equal to f-e-d-c-b-a, then the reversed string would be a-b-c-d-e-f.

The string is then centered within a string of hyphens that is 4 times the size of the rangoli pattern minus 3 characters long.

The [::-1] operator reverses the alpha_str string.

The .center() method centers the string within a string of hyphens that is the specified width.

The 4 * size - 3 expression calculates the width of the border around the rangoli pattern.

print('\n'.join(rangoli_list[:0:-1] + rangoli_list))

This line prints the rangoli patterns to the console, separated by a newline character.

The function also reverses the list of rangoli patterns before printing them, so that the largest pattern is printed first and the smallest pattern is printed last.

The [:0:-1] operator reverses the rangoli_list list.

The \n character represents a newline character.

rangoli(6)

This line calls the rangoli() function with a size of 6.

This will print the following rangoli pattern to the console:

----------f----------
--------f-e-f--------
------f-e-d-e-f------
----f-e-d-c-d-e-f----
--f-e-d-c-b-c-d-e-f--
f-e-d-c-b-a-b-c-d-e-f
--f-e-d-c-b-c-d-e-f--
----f-e-d-c-d-e-f----
------f-e-d-e-f------
--------f-e-f--------
----------f----------

Here is the source code on GitHub :

Rangoli

--

--

No responses yet