Advertisement
Woobinda

Matrix

Nov 30th, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.99 KB | None | 0 0
  1. def letters_to_ASCII(martix):
  2.     """Analyse values in matrix and replace letters to ASCII code,
  3.     creating an array of values which have been replaced.
  4.     """
  5.     values_to_replace = []
  6.     for row in matrix:
  7.         for value in row:
  8.             if isinstance(value, str):
  9.                 row[row.index(value)] = ord(value)
  10.                 values_to_replace.append(ord(value))
  11.     return matrix, values_to_replace
  12.  
  13.  
  14. def get_matrix_params(matrix):
  15.     """Function return matrix length and matrix values,
  16.     sorted from min to max
  17.     """
  18.     matrix_length = len(matrix)
  19.     matrix_values = []
  20.     for row in matrix:
  21.         for value in row:
  22.             matrix_values.append(value)
  23.     matrix_values.sort()
  24.     return matrix_length, matrix_values
  25.  
  26.  
  27. def create_new_matrix(matrix_length, matrix_values):
  28.     """
  29.     Create a new matrix with a diagonal with minimum values
  30.     """
  31.     minimal_diagonal = matrix_values[:matrix_length]
  32.     other_values = matrix_values[matrix_length:]
  33.     new_matrix = []
  34.     while other_values:
  35.         new_matrix.append(other_values[:matrix_length - 1])
  36.         other_values = other_values[matrix_length - 1:]
  37.  
  38.     for i in range(matrix_length):
  39.         new_matrix[i].insert(i, minimal_diagonal[i])
  40.     return new_matrix
  41.  
  42.  
  43. def ASCII_to_letters(new_martix, values_to_replace):
  44.     """Analyse values in matrix and replace ASCII to letters
  45.     in previously replaced values
  46.     """
  47.     for row in new_martix:
  48.         for value in row:
  49.             if value in values_to_replace:
  50.                 row[row.index(value)] = chr(value)
  51.     return new_martix
  52.  
  53.  
  54. if __name__ == '__main__':
  55.  
  56.     matrix = [[83, 255, -99, 711, 'w', 199],
  57.               [670, 'Q', 134, 219, 164, 178],
  58.               [135, 123, 330, 241, 177, 213],
  59.               ['q', 169, 143, 154, 194, 126],
  60.               [956, 459, 444, 122, 555, 453],
  61.               [333, 677, 888, 832, 245, 228]]
  62.  
  63.  
  64.     ASCII_matrix, values_to_replace = letters_to_ASCII(matrix)
  65.  
  66.     matrix_length, matrix_values = get_matrix_params(ASCII_matrix)
  67.  
  68.     new_matrix = create_new_matrix(matrix_length, matrix_values)
  69.  
  70.     result_matrix = ASCII_to_letters(new_matrix, values_to_replace)
  71.  
  72.     for row in result_matrix:
  73.         print(row)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement