获取正确的代码输出以读取矩阵

时间:2019-11-02 19:40:44

标签: python arrays matrix

我无法获得正确的代码输出。给定键顺序,我想按该顺序读取列。对于前。如果我有[4,2,3,1],我会读第一列最后,第二列第二,第三列第三,最后一列。数字本身是顺序,索引是列号。

我已经基于密钥的长度创建了一个矩阵。在其余位置填充“ -1”

 col = len(key_order) 

# calculate maximum row of the matrix 
row = int(math.ceil(len(text) / col)) 

fill_null = int((row * col) - msg_len) 
msg_lst.extend('-1' * fill_null) 


matrix = [msg_lst[i: i + col]  
          for i in range(0, len(msg_lst), col)] 

    # read matrix column-wise
for i in range(col):
    current_index = key_order[i] 
    ciphertext += ''.join([row[current_index]  
                      for row in matrix]) 

以上工作。但是,仅当键具有不同的值时,它才有效。我们可能会得到测试用例,其中键具有重复项,例如5623143,我必须水平而不是垂直读取值。关于如何获取我的代码的任何指示?在这里有更好的解释:http://www.crypto-it.net/eng/simple/myszkowski-transposition.html?tab=1

   Key: 5623143
   text:A Midsummer Nights Dream
 matrix would look like: [['A', 'M', 'I', 'D', 'S', 'U', 'M'], ['M', 'E', 'R', 'N', 'I', 'G', 'H'], ['T', 'S', 'D', 'R', 'E', 'A', 'M']]
correct result:   SIEIRDDMNHRMUGAAMTMES
my result: SIEUGAMESIRDAMTDNRIRD

0 个答案:

没有答案