Quando faccio sollevamento pesi, voglio fare un peso specifico attaccando più piastre a una barra.
Ho i seguenti piatti:
- 6 piatti da 1 kg ciascuno
- 6 piatti da 2,5 kg ciascuno
- 6 piatti da 5 kg ciascuno
- 6 piatti da 10 kg ciascuno
La barra stessa pesa 10 kg.
È consentito solo fissare le piastre in coppia: sono fissate a ciascuna estremità della barra e la disposizione alle due estremità deve essere completamente simmetrica (ad esempio, attaccando due piastre da 5 kg a un'estremità e una piastra da 10 kg a l'altra estremità è vietata per motivi di sicurezza).
Crea un programma o una funzione che mi dice quante piastre di ogni tipo devo usare per ottenere un dato peso totale. L'input è un numero intero maggiore di 11; l'output è un elenco / array / stringa di 4 numeri. Se è impossibile combinare piastre esistenti per ottenere il peso target, produrre un array zero / vuoto, una stringa non valida, generare un'eccezione o qualcosa del genere.
Se ci sono diverse soluzioni, il codice deve produrre solo una (non far scegliere all'utente - è troppo impegnato con altre cose).
Casi test:
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
Se il codice emette i numeri nell'ordine opposto (dalla piastra pesante a quella leggera), specificarlo esplicitamente per evitare confusione.