Beim Gewichtheben möchte ich ein bestimmtes Gewicht erreichen, indem ich mehrere Platten an einer Stange befestige.
Ich habe folgende Platten:
- 6 Teller à 1 kg
- 6 Teller à 2,5 kg
- 6 Teller à 5 kg
- 6 Teller à 10 kg
Die Stange selbst wiegt 10 kg.
Die Platten dürfen nur paarweise angebracht werden - sie sind an jedem Ende der Stange angebracht, und die Anordnung an den beiden Enden muss vollständig symmetrisch sein (z. B. Anbringen von zwei 5-kg-Platten an einem Ende und einer 10-kg-Platte an das andere Ende ist aus Sicherheitsgründen verboten).
Erstellen Sie ein Programm oder eine Funktion, die mir sagt, wie viele Platten jeder Art ich verwenden muss, um ein bestimmtes Gesamtgewicht zu erhalten. Die Eingabe ist eine Ganzzahl größer als 11; Die Ausgabe ist eine Liste / ein Array / eine Zeichenfolge mit 4 Zahlen. Wenn es unmöglich ist, vorhandene Platten zu kombinieren, um das Zielgewicht zu erhalten, geben Sie ein Null / Leer-Array, eine ungültige Zeichenfolge aus, lösen Sie eine Ausnahme oder ähnliches aus.
Wenn es mehrere Lösungen gibt, darf der Code nur eine ausgeben (lassen Sie den Benutzer nicht wählen - er ist zu beschäftigt mit anderen Dingen).
Testfälle:
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
Wenn Ihr Code die Zahlen in umgekehrter Reihenfolge ausgibt (von der schweren bis zur leichten Platte), geben Sie dies bitte explizit an, um Verwechslungen zu vermeiden.