Você tem um monte de caixas pesadas e deseja empilhá-las no menor número possível de pilhas. O problema é que você não pode empilhar mais caixas em uma caixa do que ela suporta, portanto, as caixas mais pesadas devem ficar no fundo de uma pilha.
O desafio
Entrada : uma lista de pesos de caixas, em kg inteiro.
Saída : uma lista de listas que descrevem as pilhas de caixas. Isso deve usar o menor número de pilhas possível para a entrada. Para ser uma pilha válida, o peso de cada caixa na pilha deve ser maior ou igual à soma do peso de todas as caixas acima dela.
Exemplos de pilhas válidas
(De baixo para cima)
- [3]
- [1, 1]
- [3, 2, 1]
- [4, 2, 1, 1]
- [27, 17, 6, 3, 1]
- [33, 32, 1]
- [999, 888, 99, 11, 1]
Exemplos de pilhas inválidas
(De baixo para cima)
- [1, 2]
- [3, 3, 3]
- [5, 5, 1]
- [999, 888, 777]
- [4, 3, 2]
- [4321, 3000, 1234, 321]
Casos de teste de exemplo
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]]
Regras e premissas
- Regras de E / S padrão e brechas proibidas se aplicam
- Use qualquer formato conveniente para E / S
- As pilhas podem ser descritas de cima para baixo ou de baixo para cima, desde que você seja consistente.
- A ordem das pilhas (em vez das caixas dentro dessas pilhas) não importa.
- Você também pode usar as caixas de entrada como uma lista predefinida. A ordem não é particularmente importante para a entrada, desde que o problema geral não esteja sendo resolvido pela própria classificação.
- Se houver mais de uma configuração ideal de pilhas, você poderá produzir qualquer uma delas
- Você pode assumir que há pelo menos uma caixa e que todas as caixas pesam pelo menos 1 kg
- Você deve suportar pesos de até 9.999 kg, no mínimo.
- Você deve suportar até 9.999 caixas totais, no mínimo.
- Caixas com o mesmo peso são indistinguíveis, portanto, não há necessidade de anotar qual caixa foi usada onde.
Feliz golfe! Boa sorte!
code-golf
optimization
Beefster
fonte
fonte
[8, 8, 8, 5, 1]
->[[8, 8], [8, 5, 1]]
[8, 5, 8, 8, 1, 2]
->[[8, 8], [8, 5, 2, 1]]
Respostas:
Geléia , 19 bytes
Experimente online!
Óbvio -3 graças a Nick Kennedy ...
De cima para baixo.
Explicação:
fonte
JavaScript (Node.js),
139 122116 bytesEspera a entrada classificada em ordem crescente.
Experimente online!
Comentado
fonte
Python 3.8 (pré-lançamento) , 178 bytes
Experimente online!
Agora funciona em todas as entradas possíveis. (O tempo limite é excedido no TIO com mais de dez caixas, mas calcula uma resposta correta)
fonte
list(reversed(sorted(a)))
pode ser escrito comosorted(a)[::-1]
para fins de golfe.sorted(a, reverse=True)
.