Как покрасить двумерный массив по краям?
Пример:
2222
2002
2002
2222
По дате
По рейтингу
Для покраски двумерного массива по краям можно использовать следующий алгоритм:
Пройти по всем элементам первой и последней строки и установить их в заданное значение.
Пройти по всем элементам первого и последнего столбца (кроме уже обработанных элементов в первой и последней строке) и установить их в заданное значение.
Вот пример кода на Python, который выполняет эту задачу:
12345678910111213141516171819202122232425262728293031
def paint_edges(matrix, value):
if not matrix or not matrix[0]:
return matrix
rows = len(matrix)
cols = len(matrix[0])
# Красим первую и последнюю строку
for col in range(cols):
matrix[0][col] = value
matrix[rows - 1][col] = value
# Красим первый и последний столбец
for row in range(rows):
matrix[row][0] = value
matrix[row][cols - 1] = value
return matrix
# Пример использования
matrix = [
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]
]
painted_matrix = paint_edges(matrix, 2)
for row in painted_matrix:
print(row)
Вывод:
1234
[2, 2, 2, 2]
[2, 0, 0, 2]
[2, 0, 0, 2]
[2, 2, 2, 2]
Этот код создает двумерный массив, заполненный нулями, и затем красит его края в заданное значение (в данном случае 2).
12345678910111213141516171819
from random import randint
MATRIX_SIZE = 10
matrix = [[0] * MATRIX_SIZE for _ in range(MATRIX_SIZE)]
def random_color():
return f"\033[38;2;{randint(0, 255)};{randint(0, 255)};{randint(0, 255)}m"
reset = "\033[0m"
color1 = random_color()
color2 = random_color()
for i, row in enumerate(matrix):
for j, element in enumerate(row):
color = color1 if i == 0 or i == MATRIX_SIZE - 1 or j == 0 or j == MATRIX_SIZE - 1 else color2
print(f"{color}{element}{reset}", end=" ")
print()
Больше по теме