Introdução:
Alguns dias atrás, li este post com o mesmo título quando o encontrei no HNQ. Nesta questão, está sendo discutido se a reivindicação do candidato a presidente Bernie Sanders, que reivindicou o seguinte:
Hoje, os 26 bilionários mais ricos do mundo, 26, agora possuem tanta riqueza quanto os 3,8 bilhões de pessoas mais pobres do planeta, metade da população mundial.
Link para o vídeo
é verdade ou não. Por favor, vá para a pergunta em si para obter respostas e discussões lá.
Quanto ao desafio real com base nessa reivindicação:
Desafio:
Duas entradas: uma lista de números ordenada decrescente e um número (onde é ). Output: a maior sub-lista possível sufixo de para que a soma total é a soma dos primeiros valores na lista .L ≤ n L
Exemplo:
Entradas: = e .
Saída:[500,200,150,150,125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]
[125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]
Por quê?
Os primeiros valores da lista ( ) somam . Se pegarmos todos os sufixos dos números restantes, bem como suas somas:[500,200]
700
Suffix: Sum:
[-3] -3
[-2,-3] -5
[0,-2,-3] -5
[1,0,-2,-3] -4
[2,1,0,-2,-3] -2
[2,2,1,0,-2,-3] 0
[3,2,2,1,0,-2,-3] 3
[5,3,2,2,1,0,-2,-3] 8
[5,5,3,2,2,1,0,-2,-3] 13
[5,5,5,3,2,2,1,0,-2,-3] 18
[5,5,5,5,3,2,2,1,0,-2,-3] 23
[10,5,5,5,5,3,2,2,1,0,-2,-3] 33
[10,10,5,5,5,5,3,2,2,1,0,-2,-3] 43
[20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 63
[30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 93
[30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 123
[40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 163
[50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 213
[55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 268
[75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 343
[75,75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 418
[100,75,75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 518
[125,100,75,75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 643
[150,125,100,75,75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 793
[150,150,125,100,75,75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3] 943
O sufixo mais longo que tem uma soma menor ou igual a 700
é [125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]
com uma soma de 643
, portanto esse é o nosso resultado.
Regras do desafio:
- Os valores no primeiro prefixo não são contados no sufixo de saída. Ou seja, as entradas = e resultariam em , e não .
[10,5,5,3]
[5,3]
[5,5,3]
- A E / S é flexível. Você pode inserir como uma lista / fluxo / array de números inteiros / decimais / strings, uma única string delimitada, uma a uma através de STDIN, etc. Você pode gerar como uma lista / stream / array de inteiros / decimais / strings imprima / retorne uma sequência delimitada, imprima um número em cada nova linha, etc. Sua ligação.
- A saída é garantida para não estar vazia. Então você não terá que lidar com casos de teste como = e , resultando em . n = 2
[-5,-10,-13]
[]
- Tanto (ou qualquer) a entrada e / ou saída também podem estar em ordem crescente, em vez de ordem decrescente, se você optar por isso.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste:
Inputs: L=[500,200,150,150,125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3], n=2
Output: [125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]
Inputs: L=[10,5,5,3], n=2
Output: [5,3]
Inputs: L=[7,2,1,-2,-4,-5,-10,-12], n=7
Output: [-12]
Inputs: L=[30,20,10,0,-10,-20,-30], n=1
Output: [20,10,0,-10,-20,-30]
Inputs: L=[100,35,25,15,5,5,5,5,5,5,5,5,5,5,5,5,5], n=1
Output: [15,5,5,5,5,5,5,5,5,5,5,5,5,5]
Inputs: L=[0,-5,-10,-15], n=2
Output: [-10,-15]
Inputs: L=[1000,999,998,900,800,766,525,525,400,340,120,110,80,77,33,12,0,-15,-45,-250], n=2
Output: [525,525,400,340,120,110,80,77,33,12,0,-15,-45,-250]
Inputs: L=[10,5,5], n=1
Output: [5,5]
[131000000000, 96500000000, 82500000000, 76000000000, (7.7 billion more entries)]
:: p
L = [-5,-10,-13]
e n=2
resultando em []
. " Além disso, a lista de entrada é garantida para ser descendente ordenada (ou ascendente se você optar por), portanto, [1,2,3]
não é uma lista de entrada válida para começar (a menos que você escolha entrada ascendente, nesse caso, [1,2]
seria o resultado).