import string
def strinfigy(matrix):
out = ""
for row in matrix:
out += "".join(map(str, row))
return out
def destringify(stringified, rows, columns):
assert(rows > 0 and columns > 0)
assert(len(stringified) == rows * columns)
matrix = []
for row_number in range(rows):
start = row_number * columns
end = start + columns
matrix.append([letter for letter in stringified[start:end]])
return matrix
def sizes(matrix):
rows = len(matrix)
assert(rows > 0)
columns = len(matrix[0])
for row in matrix:
assert(columns == len(row))
return rows, columns
def transpose(matrix):
rows, columns = sizes(matrix)
# prepate a matrix with size columns x rows
out = [list(range(rows)) for i in range(columns)]
# transpose
for i in range(rows):
for j in range(columns):
out[j][i] = matrix[i][j]
return out
def main():
alphabet = string.ascii_lowercase
rows, columns = 5, 4
stringified_in = alphabet[:rows * columns]
matrix = destringify(stringified_in, rows, columns)
transposed = transpose(matrix)
stringified_out = strinfigy(transposed)
print("> stringified format")
print(stringified_in)
print("> matrix")
for row in matrix:
print(row)
print("> transposed matrix")
for row in transposed:
print(row)
print("> stringified out")
print(stringified_out)
if __name__ == '__main__':
main()