Napisz funkcję (taką jak placeAt), która pobiera tablicę nieujemnych liczb całkowitych i indeks, który jest nieujemną liczbą całkowitą. Powinien umieścić 1 przy danym indeksie, prawdopodobnie przesuwając inne wpisy o jedno miejsce, aby opuścić to miejsce, przy czym 0 oznacza puste miejsca.
- Jeśli wpis o pożądanym indeksie to 0, wypełnij go 1.
- W przeciwnym razie poszukaj najbliższego 0 po lewej stronie indeksu. Przesuwaj wpisy o jedno miejsce w lewo na 0, aby zrobić miejsce, a następnie wypełnij indeks 1.
- Jeśli po lewej nie ma 0, zrób to samo w prawo.
- Jeśli żadna z nich nie jest możliwa (tzn. Jeśli nie ma wartości 0), zwróć tablicę bez zmian.
Pozycje są indeksowane według 0. Nazwa funkcji może być dowolna.
Przykłady:
(Litery oznaczają dowolne dodatnie wartości całkowite.)
[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
To wyzwanie dla golfa. Wygrywa najkrótszy wpis na koniec 9 dni.
[0, 2, 0, 2] placeAt 3czy produkcja jest legalna [2, 0, 2, 1]? Czy kod musi być faktycznie wywoływaną funkcją placeAt? Pamiętaj, że niektóre języki nie mają dokładnie takich funkcji. „Zgłaszanie wyjątku” może również nie dotyczyć niektórych języków; Sugeruję zezwolenie na wyjście wskazujące na błąd.
[2, 0, 2, 1]nie jest to legalne wyjście, ponieważ zawsze powinieneś przesunąć jak najmniej elementów i możesz nazwać funkcję, jak chcesz.

0?