Помогите с объяснением задачи
Задача "Заполнение змейкой"
Условие:
По данным числам nn и mm заполните двумерный массив размером n×m числами от 1 до n×mn×m “змейкой”, как показано в примере.

n = int(input('Введите число строк(n) '))
m = int(input('Введите число столбцов(m) '))
for j in range(n):
print(' '.join([str(i + 1 + m * j) for i in range(m)][::pow(-1, j)]))
Пожалуйста, подробно объясните решение данной задачи. Как можно подробнее. Заранее спасибо)
Ответы (1 шт):
надо заполнить матрицу сначала слева направо, потом справа налево, потом слева направо и т.д.
сначала проходим по всем строкам (n штук)
for j in range(n):
для каждой строки формируем строку в виде списка чисел (вернее чисел переведённых в строки)
[str(i + 1 + m * j) for i in range(m)][::pow(-1, j)]
потом все числа из списка соединяем в одну строку через разделитель пробел
текущий номер числа вычисляется по формуле:
i + 1 + m * j
для всех нечётных строк переворачивается сформированная строка
[::pow(-1, j)]
это срез строки в которую входят все символы строки, но в обратном направлении, если j нечётное иначе в прямом направлении
P.S.
кстати можно обойтись и без join и без срезов строки:
т.е. можно все сделать одной формулой
for j in range(n):
print(*[j * m + i + 1 + (j % 2) * (m - 2 * i - 1) for i in range(m)], sep=' ')
т.е. формируется строка чисел (именно чисел, а не строк) и выводится через разделитель пробел