View и copy: предсказание влияния изменений среза на исходный массив
Содержание курса
View vs copy: предсказание и проверка мутации через shares_memory
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая демонстрирует разницу между view и copy на одном массиве:
- Читает из
stdinодну строку с целыми числами через пробел. Создаёт одномерный массивoriginalчерезnp.array(..., dtype=int). - Читает вторую строку с двумя целыми числами
startиstop— границы среза. - Читает третью строку с двумя целыми числами
idxиval— позиция и новое значение для мутации. - Получает view
v = original[start:stop]и копиюc = original[start:stop].copy(). - Выводит строку
shares_view=<bool>— результатnp.shares_memory(original, v). - Выводит строку
shares_copy=<bool>— результатnp.shares_memory(original, c). - Выполняет
v[idx] = val. Выводит строкуoriginal_after_view=<значения через пробел>— текущие значенияoriginal. - Выполняет
c[idx] = val. Выводит строкуoriginal_after_copy=<значения через пробел>— текущие значенияoriginal.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
<n целых чисел через пробел> # элементы original
<start> <stop> # границы среза
<idx> <val> # позиция и значение для мутации
Гарантируется: 0 <= start < stop <= len(original), 0 <= idx < stop - start.
Формат вывода
shares_view=<True|False>
shares_copy=<True|False>
original_after_view=<значения через пробел>
original_after_copy=<значения через пробел>
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Проверяется тестами (1)
- Тест 1Ввод
10 20 30 40 50 60 1 4 0 99
Ожидаемый выводshares_view=True shares_copy=False original_after_view=10 99 30 40 50 60 original_after_copy=10 99 30 40 50 60
Решение
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
