Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Эрнест Сирязев Знаток (279), на голосовании 2 месяца назад
Пример:
2222
2002
2002
2222
Голосование за лучший ответ
Минирсику писику Гуру (2853) 3 месяца назад
Для покраски двумерного массива по краям можно использовать следующий алгоритм:

Пройти по всем элементам первой и последней строки и установить их в заданное значение.

Пройти по всем элементам первого и последнего столбца (кроме уже обработанных элементов в первой и последней строке) и установить их в заданное значение.

Вот пример кода на Python, который выполняет эту задачу:
 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)
Вывод:
 [2, 2, 2, 2] 
[2, 0, 0, 2]
[2, 0, 0, 2]
[2, 2, 2, 2]
Этот код создает двумерный массив, заполненный нулями, и затем красит его края в заданное значение (в данном случае 2).
꧁Tester꧂ ︎ Мудрец (19191) 3 месяца назад
 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()
Похожие вопросы