Latar Belakang
Saya memiliki deretan magnet yang kuat dan banyak benda logam di antara mereka. Di mana magnet akan menarik mereka?
Memasukkan
Input Anda adalah array bilangan bulat non-negatif, yang akan berisi setidaknya satu 1. Anda dapat menggunakan format apa pun yang masuk akal.
The 0s array mewakili ruang kosong, dan 1s mewakili magnet tetap. Semua angka lainnya adalah benda logam, yang ditarik oleh magnet. Setiap objek akan ditarik ke arah magnet terdekat (jika ada dasi, objek tersebut ditarik ke kanan), dan ia bergerak ke arah itu hingga menyentuh magnet atau objek lain. Pada akhirnya, semua benda berkerumun di sekitar magnet. Urutan objek dipertahankan.
Keluaran
Output Anda adalah larik di mana setiap objek telah ditarik sedekat mungkin dengan magnet terdekat. Seharusnya memiliki format yang sama dengan input.
Contoh
Pertimbangkan array
[0,0,2,0,1,1,0,2,0,3,0,5,0,1,0]
Yang paling kiri 2akan ditarik ke arah pasangan magnet pertama, seperti halnya yang kedua 2. The 3memiliki magnet empat langkah di kedua arah, sehingga akan ditarik ke kanan. Yang 5juga akan ditarik ke kanan, dan itu bergerak di antara 3magnet. Output yang benar adalah
[0,0,0,2,1,1,2,0,0,0,0,3,5,1,0]
Aturan dan penilaian
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji kasus
[0,1,0] -> [0,1,0]
[1,0,2,0,0,1,0] -> [1,2,0,0,0,1,0]
[7,0,5,0,0,1,0] -> [0,0,0,7,5,1,0]
[1,0,3,0,1,0,3,0,1] -> [1,0,0,3,1,0,0,3,1]
[1,0,0,0,0,0,0,7,3] -> [1,7,3,0,0,0,0,0,0]
[1,2,3,4,5,6,7,8,9,10,11,0,0,0,1] -> [1,2,3,4,5,6,7,0,0,0,8,9,10,11,1]
[12,3,0,0,1,0,1,3,0,0,6,12,0,0,0,1] -> [0,0,12,3,1,0,1,3,6,0,0,0,0,0,12,1]
1adalah ide bagus!