Arka fon
Bir dizi güçlü mıknatısım ve aralarında bir sürü metal objem var. Mıknatıslar onları nereye çekecek?
Giriş
Girişiniz, en az bir tane içeren negatif olmayan bir tamsayı dizisidir 1
. Herhangi bir makul formatı kullanabilirsiniz.
Dizinin 0
s değeri boş alanı ve 1
s sabit mıknatısları temsil eder. Diğer tüm sayılar, mıknatıslar tarafından çekilen metal nesnelerdir. Her nesne en yakın mıknatısa doğru çekilir (bir kravat varsa, nesne sağa çekilir) ve mıknatısa veya başka bir nesneye çarpana kadar bu yönde hareket eder. Sonunda, tüm nesneler mıknatısların etrafında kümelenmiştir. Nesnelerin sırası korunur.
Çıktı
Çıktınız, her nesnenin mümkün olduğunca en yakın mıknatısa çekildiği dizidir. Girdi ile aynı biçime sahip olmalıdır.
Misal
Diziyi düşünün
[0,0,2,0,1,1,0,2,0,3,0,5,0,1,0]
En soldaki 2
, ikinci mıknatıs gibi ilk mıknatıs çiftine doğru çekilir 2
. Her 3
iki yönde dört adım ötedeki bir mıknatıs vardır, bu yüzden sağa çekilir. 5
Ayrıca sağa çekti ve aralarında gider alır 3
ve mıknatıs. Doğru çıktı
[0,0,0,2,1,1,2,0,0,0,0,3,5,1,0]
Kurallar ve puanlama
Tam bir program veya işlev yazabilirsiniz. En düşük bayt sayısı kazanır ve standart boşluklara izin verilmez.
Test senaryoları
[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
iyi bir fikirdir!