Este tweet lista os pedidos possíveis para as asas de um restaurante chinês 1 :
Ao pedir Pizza, costumo calcular qual tamanho me dá a melhor relação preço-pizza, que é um cálculo simples. No entanto, minimizar o preço de um pedido neste restaurante não é uma tarefa tão simples, então eu gostaria de estar preparado para o meu próximo pedido lá.
Desafio
Dado um número inteiro maior ou igual a , sua tarefa é retornar um pedido possível que minimize o preço (mais barato em geral) e o número de transações.
Exemplo
Se eu pedir Wings, a melhor pechincha custará . No entanto, existem vários pedidos que custarão esse valor, a saber:
[50,50],[25,25,50],[25,25,25,25]
Como o primeiro pedido utilizará a menor quantidade de transações ( ), o resultado será [50,50]
.
Regras
- A entrada será um número inteiro
- A saída será uma lista / matriz / ... de tamanhos de pedidos que somam e minimizam o preço do pedido
- você pode optar por devolver todos os pedidos possíveis
Casos de teste
4 -> [4] (4.55)
23 -> [23] (26.10)
24 -> [6,18],[9,15],[12,12] (27.20)
31 -> [6,25] (34.60)
32 -> [4,28],[6,26],[7,25] (35.75)
33 -> [4,29],[5,28],[6,27],[7,26],[8,25] (36.90)
34 -> [6,28],[9,25] (38.00)
35 -> [35] (39.15)
125 -> [125] (139.00)
200 -> [25,50,125] (222.40)
201 -> [26,50,125] (223.55)
250 -> [125,125] (278.00)
251 -> [26,50,50,125] (279.15)
418 -> [15,28,125,125,125],[18,25,125,125,125] (465.20)
1001 -> [26,50,50,125,125,125,125,125,125,125] (1113.15)
12345 -> [15,80,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[25,70,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[45,50,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125] (13728.10)
Nota: listar Estes testcases todas as saídas possíveis, incluindo o preço, você só é obrigado a saída de um e você não exigido para a saída do preço!
1: Você pode encontrar os dados como um CSV aqui .
Respostas:
JavaScript (ES6), 123 bytes
Retorna a ordem como uma sequência separada por espaço.
Experimente online!
Quão?
Não podemos comprar50. 4 25 2 × 26 n = 52 25 + 27
fonte
JavaScript (Node.js) ,
112108106105 bytesExperimente online!
Otimizado a partir da resposta de Arnauld
Diferenças
467 bytes salvos)fonte
Retina 0.8.2 ,
160155 bytesExperimente online! O link inclui o cabeçalho que testa todos os valores den n
Converta para unário.
Repita até que não seja possível comprar mais ofertas.
Encontre uma maneira de comprar transações e capture e duplique uma delas.
As ofertas são adquiridas nas seguintes condições:
Compre 80 asas se deixar 0, 6, 9, 12, 15, 18, 25 ou 28 asas.
Compre 70 asas, se é tudo o que precisamos.
Compre 9 asas se isso deixar 15 ou 40 asas.
Compre 30, 35, 40 ou 45 asas, se é tudo o que precisamos.
Compre 26, 27, 28 ou 29 asas, se é tudo o que precisamos.
Compre de 4 a 23 asas, se é tudo o que precisamos.
Compre 125, 50 ou 25 asas, se pudermos e se ainda pudermos comprar mais asas exatamente. Observe que temos essas opções no final da alternância para que as compras exatas sejam testadas primeiro.
fonte