I am just trying to solve one of the puzzle which is explained below:
The sentence
if man was meant to stay on the ground god would have given us roots
after 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.