Привет! В этой статье я расскажу о том, как реализовать циклический сдвиг элементов прямоугольной матрицы на п элементов вправо или вниз с помощью Python.
Основная идея
Циклический сдвиг элементов матрицы на p элементов вправо или вниз означает, что элементы, выходящие за пределы строки или столбца, ″перемещаются″ на противоположную сторону. Например, при сдвиге вправо элементы последнего столбца перемещаются на первую позицию, а при сдвиге вниз элементы последней строки перемещаются на первую позицию.
Решение
Для решения этой задачи мы можем использовать следующий подход⁚
- Создаем функцию, которая принимает на вход матрицу, количество элементов для сдвига (p) и режим (вправо или вниз).
- Проверяем, является ли заданное количество элементов для сдвига (p) корректным. Если p больше количества элементов в строке или столбце матрицы, то устанавливаем p равным остатку от деления на количество элементов в строке или столбце.
- В зависимости от режима (вправо или вниз) выполняем следующие действия⁚
- Вправо⁚ для каждой строки матрицы выполняем сдвиг p элементов вправо.
- Вниз⁚ для каждого столбца матрицы выполняем сдвиг p элементов вниз.
- Печатаем полученную после сдвига матрицу.
Вот как может выглядеть код, реализующий этот подход⁚
def cyclic_shift(matrix, p, mode)⁚
rows len(matrix)
cols len(matrix[0])
if p > rows or p > cols⁚
p p % rows if mode 'вниз' else p % cols
if mode 'вправо'⁚
for i in range(rows)⁚
matrix[i] matrix[i][-p⁚] matrix[i][⁚-p]
elif mode 'вниз'⁚
for j in range(cols)⁚
column [matrix[i][j] for i in range(rows)]
column column[-p⁚] column[⁚-p]
for i in range(rows)⁚
matrix[i][j] column[i]
return matrix
# Пример использования
matrix [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]]
p 2
mode 'вниз'
shifted_matrix cyclic_shift(matrix, p, mode)
for row in shifted_matrix⁚
print(row)
В этом примере мы имеем матрицу 3×4 и хотим выполнить циклический сдвиг всех элементов на 2 позиции вниз. После сдвига матрица будет выглядеть следующим образом⁚
[9, 10, 11, 12]
[1, 2, 3, 4]
[5, 6, 7, 8]
В этой статье я показал, как реализовать циклический сдвиг элементов прямоугольной матрицы на p элементов вправо или вниз с помощью Python. Теперь вы можете использовать этот код, чтобы эффективно осуществлять сдвиг элементов в своих проектах.
Удачи в программировании!