Tulis fungsi (seperti placeAt) yang mengambil larik integer non-negatif dan indeks yang merupakan integer non-negatif. Itu harus menempatkan 1 pada indeks yang diberikan, mungkin menggeser entri lain dengan satu tempat untuk mengosongkan tempat itu, dengan 0 berdiri untuk tempat kosong.
- Jika entri pada indeks yang diinginkan adalah 0, isilah dengan 1.
- Jika tidak, cari 0 terdekat di sebelah kiri indeks. Geser entri satu tempat tersisa ke 0 untuk memberi ruang, lalu isi indeks dengan 1.
- Jika tidak ada 0 ke kiri, lakukan hal yang sama ke kanan.
- Jika tidak ada yang mungkin (yaitu jika tidak ada 0), kembalikan array tidak berubah.
Item ini diindeks 0. Nama fungsi bisa apa saja yang Anda inginkan.
Contoh:
(Surat mewakili nilai integer positif.)
[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
Ini adalah tantangan kode golf. Entri terpendek pada akhir 9 hari menang.
[0, 2, 0, 2] placeAt 3, apakah itu legal untuk diproduksi [2, 0, 2, 1]? Apakah kode yang diperlukan untuk benar-benar menjadi fungsi yang disebut placeAt? Perhatikan bahwa beberapa bahasa tidak memiliki fungsi. "Melempar pengecualian" mungkin juga tidak berlaku untuk beberapa bahasa; Saya sarankan mengizinkan output yang menunjukkan kesalahan.
[2, 0, 2, 1]ini bukan keluaran legal, karena Anda harus selalu menggeser elemen sesedikit mungkin, dan Anda dapat memberi nama fungsi apa pun yang Anda inginkan.

0?