Напишіть функцію (таку як 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?