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