Podczas podnoszenia ciężarów chcę uzyskać określony ciężar, mocując kilka płyt do pręta.
Mam następujące tablice:
- 6 płytek po 1 kg każda
- 6 płytek po 2,5 kg każda
- 6 płytek po 5 kg każda
- 6 płytek po 10 kg każda
Sam pręt waży 10 kg.
Dozwolone jest jedynie mocowanie płyt parami - są one przymocowane na każdym końcu pręta, a układ na dwóch końcach musi być całkowicie symetryczny (np. Przymocowanie dwóch 5-kilogramowych płyt na jednym końcu i jednej 10-kilogramowej płyty na drugi koniec jest zabroniony ze względów bezpieczeństwa).
Stwórz program lub funkcję, która mówi mi, ile płyt każdego rodzaju muszę użyć, aby uzyskać daną całkowitą wagę. Dane wejściowe to liczba całkowita większa niż 11; wynikiem jest lista / tablica / ciąg 4 liczb. Jeśli nie jest możliwe połączenie istniejących płyt w celu uzyskania docelowej masy, wypisz zerową / pustą tablicę, niepoprawny ciąg, wyrzuć wyjątek lub coś takiego.
Jeśli istnieje kilka rozwiązań, kod musi wypisać tylko jedno (nie zmuszaj użytkownika do wyboru - jest zbyt zajęty innymi rzeczami).
Przypadki testowe:
12 -> [2 0 0 0] - 2 plates of 1 kg plus the bar of 10 kg
13 -> [0 0 0 0] - a special-case output that means "impossible"
20 -> [0 0 2 0] - 2 plates of 5 kg + bar
20 -> [0 4 0 0] - a different acceptable solution for the above
21 -> [6 2 0 0] - 6 plates of 1 kg + 2 plates of 2.5 kg + bar
28 -> [0 0 0 0] - impossible
45 -> [0 2 6 0] - a solution for a random number in range
112 -> [2 4 6 6] - a solution for a random number in range
121 -> [6 6 6 6] - maximal weight for which a solution is possible
Jeśli Twój kod wyświetla liczby w odwrotnej kolejności (od grubej płyty do lekkiej), podaj ją wyraźnie, aby uniknąć pomyłek.