from itertools import zip_longest
def transpose( n) :
lines = map ( list , n.splitlines ( ) )
transp = list ( zip_longest( *lines, fillvalue= ' ' ) )
print ( '\n ' .join ( [ '' .join ( line) .rstrip ( ) for line in transp] ) )
def transpose_one_line( n) :
print ( '\n ' .join ( [ '' .join ( line) .rstrip ( ) for line in list ( zip_longest( *list ( map ( list , n.splitlines ( ) ) ) , fillvalue= ' ' ) ) ] ) )
print ( '\n -------Simple Test:-------\n ' )
n1 = """Some
text."""
transpose( n1)
print ( '\n -------Advanced Test:-------\n ' )
n2 = """package main
import "fmt"
func main() {
queue := make(chan string, 2)
queue <- "one"
queue <- "twoO"
close(queue)
for elem := range queue {
fmt.Println(elem)
}
}"""
transpose( n2)
ZnJvbSBpdGVydG9vbHMgaW1wb3J0IHppcF9sb25nZXN0CgpkZWYgdHJhbnNwb3NlKG4pOgogICAgbGluZXMgPSBtYXAobGlzdCwgbi5zcGxpdGxpbmVzKCkpCiAgICB0cmFuc3AgPSBsaXN0KHppcF9sb25nZXN0KCpsaW5lcywgZmlsbHZhbHVlPScgJykpCiAgICBwcmludCgnXG4nLmpvaW4oWycnLmpvaW4obGluZSkucnN0cmlwKCkgZm9yIGxpbmUgaW4gdHJhbnNwXSkpCgpkZWYgdHJhbnNwb3NlX29uZV9saW5lKG4pOgogICAgcHJpbnQoJ1xuJy5qb2luKFsnJy5qb2luKGxpbmUpLnJzdHJpcCgpIGZvciBsaW5lIGluIGxpc3QoemlwX2xvbmdlc3QoKmxpc3QobWFwKGxpc3QsIG4uc3BsaXRsaW5lcygpKSksIGZpbGx2YWx1ZT0nICcpKV0pKQoKCgpwcmludCgnXG4tLS0tLS0tU2ltcGxlIFRlc3Q6LS0tLS0tLVxuJykKbjEgPSAiIiJTb21lCnRleHQuIiIiCnRyYW5zcG9zZShuMSkKCnByaW50KCdcbi0tLS0tLS1BZHZhbmNlZCBUZXN0Oi0tLS0tLS1cbicpCm4yID0gIiIicGFja2FnZSBtYWluCgppbXBvcnQgImZtdCIKCmZ1bmMgbWFpbigpIHsKICAgIHF1ZXVlIDo9IG1ha2UoY2hhbiBzdHJpbmcsIDIpCiAgICBxdWV1ZSA8LSAib25lIgogICAgcXVldWUgPC0gInR3b08iCiAgICBjbG9zZShxdWV1ZSkKICAgIGZvciBlbGVtIDo9IHJhbmdlIHF1ZXVlIHsKICAgICAgICBmbXQuUHJpbnRsbihlbGVtKQogICAgfQp9IiIiCnRyYW5zcG9zZShuMik=