I am just trying to solve one of the puzzle which is explained below:
if man was meant to stay on the ground god would have given us rootsafter removing spaces is 54 characters long, so it is written in the form of a grid with 7 rows and 8 columns.
The encoded message is obtained by displaying the characters in a column, inserting a space, and then displaying the next column and inserting a space, and so on. For example, the encoded message for the above rectangle is:
imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau
For more conditions please refer here:
from math import ceil, sqrt from string import whitespace def encrypt(string): enc_string = string.translate(None,whitespace) length = len(enc_string) #calculate the no of colums for the grid columns = int(ceil(sqrt(length))) #form a list of strings each of length equal to columns split_string = [enc_string[i:i+columns] for i in range(0, len(enc_string), columns)] #encrypted list of strings new_string =  for string in split_string: for i in range(len(string)): try: #replace the element in the list with the new string new_string[i] = new_string[i].replace(new_string[i], new_string[i] + string[i]) except IndexError: #exception indicates that the string needs be added with new Index new_string.append(string[i]) return " ".join(new_string) if __name__ == "__main__": s = raw_input().strip() result = encrypt(s) print(result)
Please help me if multiple for loops can be avoided and any other improvements.