Двумерные и многомерные структуры

О чём речь пока не пойдёт: матрицы и многомерные массивы из обихода математиков. Это сложная тема, требует специальных знаний, в том числе строго математических. Если надо — можно устроить отдельную лекцию для тех, к то в теме.

Списки строк

Список бывает из чего угодно

Например, список строк

Метафора «текстового экрана»

Методы .split() и .join()

Отступление: страшные конструкции вида A[1](2)[3][4](5)…

Секрет: они не страшные ☺

«Двумерный массив»

Задача моделирования данных как подзадача формализации алгоритма.

В частности, матрицы:

Чем их моделировать?

⇒ Список списков, а-ля «экран», только вместо символов — числа

О циклическом конструкторе списка

Д/З

  1. Прочитать и прощёлкать занятие про двумерные массивы на pythontutor.ru

TODO EJudge

  1. EJudge: BackBack 'Всё наоборот'

    Ввести строку, содержащую пары натуральных чисел. Числа в парах разделены двоеточием. Строка начинается и заканчивается на некоторый один и тот же символ (не цифра, но в разных случаях он может быть разным), и этот же символ стоит между парами. Вывести эти числа в обратном порядке через пробел.

    Input:

    -12:3-4:56-7:8-9:10-
    Output:

    10 9 8 7 56 4 3 12
  2. EJudge: Matrix 'Матрица'

    Ввести квадратную «матрицу» — последовательность строк, содержащих целые числа, разделённые пробелами. Вывести номер столбца, сумма элементов в котором наибольшая. Если таких столбцов несколько, вывести самый маленький номер.

    Input:

    12 34 56 78 90
    23 45 67 89  2
    23 65 90 12 45
    13  4 35 46 57
    80 79 68 57 46
    Output:

    2
  3. EJudge: Screen 'Экран'

    Написать четыре функции:

    1. screen(width, height, space), которая создаёт «текстовый экран» размером width×height, при этом «пустыми местами» в нём служат символы space. Функция возвращает только что созданный экран.

    2. show(screen), которая выводит экран screen в виде прямоугольника

    3. hline(screen, x0, x1, y, ink), которая заменяет в строке y экрана screen символы на позиции с x0 по x1-1 на строку ink, т. е. «рисует горизонтальную линию»

    4. vline(screen, x, y0, y1, ink), которая заменяет в столбце x экрана screen символы на позиции с y0 по y1-1 на строку ink, т. е. «рисует вертикальную линию»

    Реализация «экрана» — произвольная. Координаты всегда упорядочены, т. е. x0 ⩽ x1 и y0⩽y1, и не выходят за границы экрана.

    S = screen(15, 7, '.')
    vline(S, 3, 2, 6, '|')
    hline(S, 2, 13, 3, '-')
    show(S)
    Input:

    S = screen(15, 7, '.')
    vline(S, 3, 2, 6, '|')
    hline(S, 2, 13, 3, '-')
    show(S)
    Output:

    ...............
    ...............
    ...|...........
    ..-----------..
    ...|...........
    ...|...........
    ...............

Python/GeoPython2021/09_TwoDomension (last edited 2021-11-15 22:25:34 by FrBrGeorge)