Try   HackMD

Практика по теме 9. Двумерные структуры данных

На сайте http://pythontutor.ru/lessons/2d_arrays/problems/2d_max/ решить все задачи к занятию 9. Двумерные массивы

Выслать архив с решениями всех задач (файлы с расширением .py) и скриншотом с сайта, на котором видно количество решенных задач и имя текущего пользователя.

Задача 1. Максимум

Найдите индексы первого вхождения максимального элемента. Выведите два числа: номер строки и номер столбца, в которых стоит наибольший элемент в двумерном массиве. Если таких элементов несколько, то выводится тот, у которого меньше номер строки, а если номера строк равны то тот, у которого меньше номер столбца.

Программа получает на вход размеры массива n и m, затем n строк по m чисел в каждой.

Решение
(n, m) = [int(s) for s in input().split()]
a = [[int(s) for s in input().split()] for i in range(n)]
max = a[0][0]
max_i = max_j = 0
for i in range(len(a)):
    for j in range(len(a[i])):
        if a[i][j] > max:
            max = a[i][j]
            max_i, max_j = i, j
print(max_i, max_j)

Задача 2. Снежинка

Дано нечетное число n. Создайте двумерный массив из n×n элементов, заполнив его символами "." (каждый элемент массива является строкой из одного символа). Затем заполните символами "*" среднюю строку массива, средний столбец массива, главную диагональ и побочную диагональ. В результате звездочки в массиве должны образовывать изображение снежинки. Выведите полученный массив на экран, разделяя элементы массива пробелами.

Решение
n = int(input())
a = [['.'] * n for i in range(n)]
for i in range(n):
    for j in range(n):
        if i == (n // 2) or j == (n // 2) or i == j or (i+j)==n-1:
            a[i][j] = '*'
    print(' '.join(a[i]))

Задача 3. Шахматная доска

Даны два числа n и m. Создайте двумерный массив размером n×m и заполните его символами "." и "*" в шахматном порядке. В левом верхнем углу должна стоять точка.

Решение
n, m = [int(i) for i in input().split()]
a = [['.'] * m for i in range(n)]
for i in range(n):
    for j in range(m):
        if (i + j) % 2 != 0:
            a[i][j] = '*'
    print(' '.join(a[i]))

Задача 4. Диагонали, параллельные главной

Дано число n. Создайте массив размером n×n и заполните его по следующему правилу. На главной диагонали должны быть записаны числа 0. На двух диагоналях, прилегающих к главной, числа 1. На следующих двух диагоналях числа 2, и т.д.

Решение
n = int(input())
a = [[0] * n for i in range(n)]
for i in range(n):
    for j in range(n):
        a[i][j] = abs(i - j)
    print(' '.join([str(s) for s in a[i]]))

Задача 5. Побочная диагональ

Дано число n. Создайте массив размером n×n и заполните его по следующему правилу:

Числа на диагонали, идущей из правого верхнего в левый нижний угол равны 1.

Числа, стоящие выше этой диагонали, равны 0.

Числа, стоящие ниже этой диагонали, равны 2.

Полученный массив выведите на экран. Числа в строке разделяйте одним пробелом.

Решение
n = int(input())
a = [[1] * n for i in range(n)]
for i in range(n):
    for j in range(n):
        if j < n - i - 1:
            a[i][j] = 0
        elif j > n - i - 1:
            a[i][j] = 2
    print(' '.join([str(s) for s in a[i]]))

Задача 6. Поменять столбцы

Дан двумерный массив и два числа: i и j. Поменяйте в массиве столбцы с номерами i и j и выведите результат.

Программа получает на вход размеры массива n и m, затем элементы массива, затем числа i и j.

Решение оформите в виде функции swap_columns(a, i, j).

Решение