Напишите функцию (например, placeAt
), которая принимает массив неотрицательных целых чисел и индекс, который является неотрицательным целым числом. Он должен ставить 1 по данному индексу, возможно, сдвигая другие записи на одно место, чтобы освободить это место, а 0 означает пустые места.
- Если запись с нужным индексом равна 0, заполните ее 1.
- В противном случае ищите ближайший 0 слева от индекса. Сдвиньте записи на одну позицию слева в это 0, чтобы освободить место, затем заполните индекс 1.
- Если слева нет 0, сделайте то же самое, двигаясь направо.
- Если ни то, ни другое невозможно (т. Е. Если нет 0), вернуть массив без изменений.
Элементы с 0 индексами. Имя функции может быть чем угодно.
Примеры:
(Буквы обозначают любые положительные целые значения.)
[a, b, 0, c, d, 0] placeAt 2 // output [a, b, 1, c, d, 0] place 2 is 0, just fill
[a, b, 0, c, d, 0] placeAt 3 // output [a, b, c, 1, d, 0] place 3 is filled, shift items left
[a, b, 0, c, d, 0] placeAt 0 // output [1, a, b, c, d, 0] place 0 is filled, can't shift left, shift items right
[a, b, 0, c, d, 0] placeAt 1 // output [a, 1, b, c, d, 0] place 1 is filled, can't shift left, shift items right
[0, a, b, 0, c, d, 0] placeAt 2 // output [a, b, 1, 0, c, d, 0] place 2 is filled, shift items left
[0, a, b, 0, c, d, 0] placeAt 4 // output [0, a, b, c, 1, d, 0] place 4 is filled, shift items left (notice you keep shifting up until a 0)
[0, 2, 0, 2] placeAt 3 // output [0, 2, 2, 1] place 3 is filled, shift items left
Это кодовый вызов для гольфа. Самый короткий вход в конце 9 дней побеждает.
[0, 2, 0, 2] placeAt 3
законно ли выводить [2, 0, 2, 1]
? Требуется ли код для вызова функции placeAt
? Обратите внимание, что некоторые языки не имеют функций. «Брось исключение» также может не относиться к некоторым языкам; Я бы предложил разрешить вывод, указывающий на ошибку.
[2, 0, 2, 1]
это недопустимый вывод, так как вы всегда должны сдвигать как можно меньше элементов, и вы можете называть функцию как хотите.
0
?