Masz mnóstwo ciężkich pudeł i chcesz je układać w jak najmniejszej liczbie stosów. Problem polega na tym, że nie można układać na pudełku większej liczby pudeł niż jest w stanie obsłużyć, dlatego cięższe pudełka muszą znajdować się na spodzie stosu.
Wyzwanie
Dane wejściowe : lista wag skrzynek w pełnych kg.
Wyjście : lista list opisujących stosy pudeł. Musi to wykorzystywać jak najmniejszą liczbę stosów możliwych do wprowadzenia. Aby być prawidłowym stosem, waga każdego pudełka w stosie musi być większa lub równa sumie wagi wszystkich pudeł nad nim.
Przykłady prawidłowych stosów
(W kolejności od dołu do góry)
- [3]
- [1, 1]
- [3, 2, 1]
- [4, 2, 1, 1]
- [27, 17, 6, 3, 1]
- [33, 32, 1]
- [999, 888, 99, 11, 1]
Przykłady nieprawidłowych stosów
(W kolejności od dołu do góry)
- [1, 2]
- [3, 3, 3]
- [5, 5, 1]
- [999, 888, 777]
- [4, 3, 2]
- [4321, 3000, 1234, 321]
Przykładowe przypadki testowe
1
IN: [1, 2, 3, 4, 5, 6, 9, 12]
OUT: [[12, 6, 3, 2, 1], [9, 5, 4]]
2)
IN: [87, 432, 9999, 1234, 3030]
OUT: [[9999, 3030, 1234, 432, 87]]
3)
IN: [1, 5, 3, 1, 4, 2, 1, 6, 1, 7, 2, 3]
OUT: [[6, 3, 2, 1], [7, 4, 2, 1], [5, 3, 1, 1]]
4
IN: [8, 5, 8, 8, 1, 2]
OUT: [[8, 8], [8, 5, 2, 1]]
Zasady i założenia
- Obowiązują standardowe zasady we / wy i zakazane luki
- Użyj dowolnego dogodnego formatu dla I / O
- Stosy można opisywać od góry do dołu lub od dołu do góry, pod warunkiem, że jesteś spójny.
- Kolejność stosów (zamiast pudełek w tych stosach) nie ma znaczenia.
- Możesz również traktować pola wprowadzania jako listę wstępnie ustawioną. Kolejność nie jest szczególnie ważna dla danych wejściowych, o ile ogólny problem nie zostanie rozwiązany przez samo sortowanie.
- Jeśli istnieje więcej niż jedna optymalna konfiguracja stosów, możesz wyprowadzić dowolną z nich
- Możesz założyć, że jest co najmniej jedno pudełko i że wszystkie pudełka ważą co najmniej 1 kg
- Musisz wytrzymać obciążenie do 9 999 kg, co najmniej.
- Musisz obsłużyć co najmniej 9 999 wszystkich pól.
- Pudełka o tej samej masie są nierozróżnialne, więc nie trzeba dodawać adnotacji, które pudełko zostało użyte.
Miłej gry w golfa! Powodzenia!
code-golf
optimization
Wołowina
źródło
źródło
[8, 8, 8, 5, 1]
->[[8, 8], [8, 5, 1]]
[8, 5, 8, 8, 1, 2]
->[[8, 8], [8, 5, 2, 1]]
Odpowiedzi:
Galaretka , 19 bajtów
Wypróbuj online!
Oczywiste -3 dzięki Nickowi Kennedy'emu ...
Od góry do dołu.
Wyjaśnienie:
źródło
JavaScript (Node.js),
139 122116 bajtówOczekuje, że dane wejściowe zostaną posortowane w porządku rosnącym.
Wypróbuj online!
Skomentował
źródło
Python 3.8 (wersja wstępna) , 178 bajtów
Wypróbuj online!
Teraz działa na wszystkich możliwych wejściach. (Przekracza limit czasu w TIO z więcej niż dziesięcioma pudełkami, ale oblicza poprawną odpowiedź)
źródło
list(reversed(sorted(a)))
można napisać jaksorted(a)[::-1]
do golfa.sorted(a, reverse=True)
.