tło
Mam między nimi rząd silnych magnesów i wiązkę metalowych przedmiotów. Gdzie przyciągną ich magnesy?
Wejście
Twoje dane wejściowe to tablica nieujemnych liczb całkowitych, która będzie zawierać co najmniej jedną 1
. Możesz użyć dowolnego rozsądnego formatu.
Do 0
S w tablicy oznaczają pustą przestrzeń, a 1
y stanowią magnesy stałe. Wszystkie pozostałe liczby są metalowymi przedmiotami ciągniętymi przez magnesy. Każdy obiekt jest przyciągany w kierunku najbliższego magnesu (jeśli jest krawat, obiekt jest ciągnięty w prawo) i porusza się w tym kierunku, dopóki nie trafi w magnes lub inny przedmiot. W końcu wszystkie obiekty skupiły się wokół magnesów. Kolejność obiektów zostaje zachowana.
Wynik
Twój wynik to tablica, w której każdy obiekt został przyciągnięty tak blisko najbliższego magnesu, jak to możliwe. Powinien mieć ten sam format co dane wejściowe.
Przykład
Rozważ tablicę
[0,0,2,0,1,1,0,2,0,3,0,5,0,1,0]
Najbardziej wysunięty w lewo 2
ciągnie się w kierunku pierwszej pary magnesów, podobnie jak druga 2
. 3
Posiada magnes czterech kroków w obu kierunkach, tak robi pociągnął w prawo. 5
Również dostaje zjechał na prawo i przechodzi pomiędzy 3
i magnesu. Prawidłowe wyjście to
[0,0,0,2,1,1,2,0,0,0,0,3,5,1,0]
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
[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
to fajny pomysł!Retina ,
9772 bajtówDane wejściowe powinny być oddzieloną przecinkami listą jednych liczb całkowitych (wiodące i końcowe ograniczniki, takie jak
[...]
działa dobrze).Tutaj uruchom wszystkie przypadki testowe. (Dla wygody powoduje to automatyczną konwersję zi na dziesiętne).
Oto zupełnie inny pomysł, który pozwala uniknąć kosztownych grup równoważących poprzez zastosowanie wielu etapów. Obecnie jest 6 bajtów dłużej, ale może być bardziej golfowy:
źródło
JavaScript (ES6), 108 bajtów
Wyjaśnienie
Iteruje nad każdą komórką i jeśli zawiera metal, sprawdza, czy następna komórka w kierunku najbliższego magnesu jest pusta, a jeśli tak, to tam ją przenosi. Proces ten powtarza się wiele razy, aż cały metal przesunął się tak daleko, jak to możliwe.
źródło
PHP, 337 znaków
Tak, to jest bardzo długie, ponieważ PHP nie jest tak naprawdę językiem do gry w golfa, ale działa, a Miałem ZABAWĘ, więc jest dla mnie w porządku. Oczywiście jestem otwarty na możliwe zwarcia.
Jest też mała funkcja
błędu,która myśli, więc na przykład tutaj:wygląda na to, że 12 magicznie znalazło się przed 3, ale to nieprawda!
3 szanuje większą liczbę i pozwala zbliżyć się do magety!
źródło