Top.Mail.Ru
Ответы

Как покрасить двумерный массив по краям?

Пример:
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()