Разделяемый базовый массив, copy и подсрезы
Содержание курса
Наблюдение за подсрезом
Когда несколько наблюдателей смотрят в одно окно, то, что видит один, неизбежно замечает и другой. Именно так устроены срезы в Go: два среза, указывающих на общий базовый массив, делят не только значения, но и судьбу каждой ячейки. Пока длина и ёмкость позволяют, запись через один срез молча меняет то, что читает другой.
Представьте, что у вас есть длинная лента данных, а кто-то вырезал из неё узкое окно — два соседних элемента посередине. Это окно живёт не само по себе: оно по-прежнему опирается на ту же ленту. Если теперь в это окно дописать новое значение, оно встанет ровно в ту ячейку исходной ленты, которая следовала сразу за правым краем окна. Лента об этом «не знала» и не давала согласия — но именно в ней теперь лежит новое число.
Цель здесь — наглядно поймать этот момент: взять исходный срез, выделить из него подсрез, добавить в подсрез одно значение и затем вывести оба среза рядом. Результат покажет, что добавление не осталось внутри подсреза, а проявилось в исходном — молчаливое свидетельство общей памяти.
Что уже дано
Входной срез всегда содержит не менее четырёх целых чисел.
Что нужно сделать
Реализуйте ObserveWindow(values []int, added int) [][]int. Возьмите подсрез values[1:3], добавьте в него added через append и верните [][]int{values, window}. В этом диапазоне у подсреза есть ёмкость для добавления, поэтому добавленное значение должно стать видимым и в исходном срезе.
Ввод и вывод
Функция получает срез и одно число. Она возвращает исходный срез после наблюдаемого изменения и получившееся окно. Читать stdin и печатать результат не нужно.
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
- Тест 1Ввод
[[10,20,30,40],99]
Ожидаемый вывод[[10,20,30,99],[20,30,99]]
Как проверяется решение
Функция из package main вызывается автоматически. Возвращайте результат, main() и печать ответа не нужны. Значения JSON сравниваются без учёта порядка ключей объекта.
Отправьте решение, чтобы увидеть результаты тестов.
