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 0
s array mewakili ruang kosong, dan 1
s 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 2
akan ditarik ke arah pasangan magnet pertama, seperti halnya yang kedua 2
. The 3
memiliki magnet empat langkah di kedua arah, sehingga akan ditarik ke kanan. Yang 5
juga akan ditarik ke kanan, dan itu bergerak di antara 3
magnet. 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]
1
adalah ide bagus!