NumPy: вычисления и устройство массивов

View и copy: предсказание влияния изменений среза на исходный массив

Содержание курса

View и copy: умножение фрагмента с контролем мутации исходного массива

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.

Что нужно сделать

Напишите программу, которая выполняет два независимых эксперимента с умножением фрагмента массива:

  1. Читает из stdin одну строку с целыми числами через пробел — элементы массива. Создаёт одномерный массив source через np.array(..., dtype=int).
  2. Читает вторую строку с тремя целыми числами: a, b, factor — границы среза и множитель.
  3. Эксперимент 1 (через view). Получает view_seg = source[a:b]. Выполняет view_seg *= factor (умножение на месте). Выводит строку exp1_source=<значения через пробел> — текущие значения source.
  4. Восстанавливает исходные значения: перечитывает или пересоздаёт source из той же первой строки (сохраните её в переменную заранее).
  5. Эксперимент 2 (через copy). Получает copy_seg = source[a:b].copy(). Выполняет copy_seg *= factor. Выводит строку exp2_source=<значения через пробел> — текущие значения source.
  6. Выводит строку shares_view=<True|False> — результат np.shares_memory(source, source[a:b]) (проверка нового среза от восстановленного массива).
  7. Выводит строку shares_copy=<True|False> — результат np.shares_memory(source, source[a:b].copy()).

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

<целые числа через пробел> # элементы source
<a> <b> <factor> # границы среза и множитель

Гарантируется: 0 <= a < b <= len(source), factor >= 2.

Формат вывода

exp1_source=<значения через пробел>
exp2_source=<значения через пробел>
shares_view=<True|False>
shares_copy=<True|False>
О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    5 10 15 20 25 30
    2 5 3
    Ожидаемый вывод
    exp1_source=5 10 45 60 75 30
    exp2_source=5 10 15 20 25 30
    shares_view=True
    shares_copy=False
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

Отправьте решение, чтобы увидеть результаты тестов.