We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.

In the case where L is not a perfect square num, you would increase col by 1

After incresement, if row x col is smaller than L, just increase row by 1 as well.

Then you should get row, col pair based on challenge's rules.

zip_longest():

fromitertoolsimportzip_longest# Use it to combine 2 iterables:wordlist=['apple','grape','rank']print(*zip_longest(*wordlist,fillvalue='_'))# Output: ('a', 'g', 'r') ('p', 'r', 'a') ('p', 'a', 'n') ('l', 'p', 'k') ('e', 'e', '_')

importmathfromitertoolsimportzip_longestdefencryption(s):# Write your code here# Remove spaces and calculate the lengthnew_s="".join(s.split(" "))l=len(new_s)row=col=int(math.sqrt(l))ifnotmath.sqrt(l).is_integer():col=row+1ifrow*col<l:row=colgrid=[new_s[i:i+col]foriinrange(0,len(new_s),col)]new_grid=zip_longest(*grid,fillvalue="")encrypted=" ".join("".join(items)foritemsinnew_grid)returnencrypted

## Encryption

You are viewing a single comment's thread. Return to all comments →

Simple pypy3 solution using itertools lib

## Row / Column tweak logic:

Comparison: L ^ 0.5 <= row <= col <= L ^ 0.5## zip_longest():