Последовательности и цикл for

Операции над объектами как совокупность методов

Цикл for

Кстати,

Последовательности

Операции над последовательностями

Константные последовательности на примере кортежа

Cтрока (введение)

Списки — модифицируемые последовательности

Имеют метод .__setitem__()

Колоды:

Имитация многомерных структур данных

Соиспользование связанных объектов

Отсутствие «подковёрного» копирования

Вычислимые последовательности

Значения не хранятся, а вычисляются .__getitem__()-ом

Д/З

Напоминалка:

Собственно задание:

  1. Прочитать и прощёлкать тьюториалпро цикл for)

  2. EJudge: CountSort 'Сортировка подчсётом'

    Вводится последовательность пар натуральных чисел, не превышающих 100, последняя строка ввода — пустая. Вывести её в лексикографически отсортированном по возрастанию виде. Дополнительные условия:

    • из составных типов данных можно пользоваться только списками и кортежами (для вывода — строками),
    • целиком последовательность в памяти хранить нельзя!
    Input:

    2, 100
    12, 4
    2, 2
    5, 8
    2, 100
    33, 33
    12, 4
    Output:

    2, 2
    2, 100
    2, 100
    5, 8
    12, 4
    12, 4
    33, 33
  3. EJudge: AbsoluteSupreme 'Частичный порядок'

    На вход подаются тройки чисел через запятую, последняя строка ввода — пустая. Между тройками введён частичный порядок: (x₀, x₁, x₂) ≪ (y₀, y₁, y₂), если ∃ i, j, k: (x₀, x₁, x₂) ≠ (yᵢ, yⱼ, yₖ) и x₀ ⩽ yᵢ, x₁ ⩽ yⱼ и x₂ ⩽ yₖ, i≠j≠k. Отсортировать последовательность по убыванию, по возможности не меняя следования элементов: каждая тройка должна быть «не меньше» (т. е. утверждение A ≪ B неверно) следующих за ней. Разрешается использовать устойчивый «тяжёлый» алгоритм сортировки с квадратичной сложностью (например, сортировку выбором).

    • <!> В формулировке присутствует неоднозначность, так что в этом семестре в качестве решения необходимо реализовать описанный ниже неэффективный алгоритм (чуть ли не кубической сложности):

      1. Найти первую тройку, которая не меньше всех остальных
      2. Удалить её из списка и вставить в его начало
      3. Повторить п. п. (1) - (3) над оставшимся фрагментом списка (без вставленного элемента)
    Input:

    7,5,2
    1,7,1
    1,2,3
    12,11,0
    2,3,4
    6,7,8
    Output:

    12, 11, 0
    6, 7, 8
    7, 5, 2
    1, 7, 1
    2, 3, 4
    1, 2, 3
  4. EJudge: SpiralDigits 'Цифры по спирали'

    Ввести целые M и N, вывести последовательность 0 1 2 3 4 5 6 7 8 9 0 1 2 3 … в виде спирально (по часовой стрелке, из верхнего левого угла) заполненной таблицы N×M (N строк, M столбцов). Не забываем про то, что M и N могут быть чётными, нечётными и неизвестно, какое больше.

    Input:

    6,5
    Output:

    0 1 2 3 4 5
    7 8 9 0 1 6
    6 7 8 9 2 7
    5 6 5 4 3 8
    4 3 2 1 0 9
  5. EJudge: HalfTranspose 'Недостранспонировали'

    Ввели N строк по N целых чисел (для удобства представлены тут цифрами). Полученную матрицу

    • 1234
      5678
      9012
      3456

    попытались «транспонировать на 45° по часовой стрелке» — получилось примерно так:

    •    1
        5 2
       9 6 3
      3 0 7 4
       4 1 8
        5 2
         6

    При этом способе поворота между числами образовались «пустые места» каждое размеров в одно число, размер матрицы увеличился до 2N-1 × 2N-1. Затем все числа «упали на свободные места под ними» — переместились до ближайшей незанятой ячейки:

    •    1
        562
       90173
      3456284

    Ввести построчно через запятую элементы исходной квадратной матрицы. Вывести построчно через запятую элементы получившейся матрицы (без учёта свободных ячеек)

    Input:

    1,2,3,4
    5,6,7,8
    9,0,1,2
    3,4,5,6
    Output:

    1
    5,6,2
    9,0,1,7,3
    3,4,5,6,2,8,4

LecturesCMC/PythonIntro2024/03_SequencesFor (последним исправлял пользователь FrBrGeorge 2024-09-23 13:22:18)