Introduzione:
Qualche giorno fa ho letto questo post con lo stesso titolo quando l'ho trovato nell'HNQ. In questa domanda si sta discutendo se la richiesta del presidente candidato Bernie Sanders, che ha affermato quanto segue:
Oggi i 26 miliardari più ricchi del mondo, 26, ora possiedono la stessa ricchezza dei 3,8 miliardi più poveri del pianeta, metà della popolazione mondiale.
Link al video
è vero o no. Per favore vai alla domanda stessa per risposte e discussioni lì.
Per quanto riguarda la vera sfida basata su questa affermazione:
Sfida:
Due input: una lista numerica decrescente e un numero (dove è ).
Output: il sottoelenco del suffisso più lungo possibile di per cui la somma totale è la somma della prima valori nella lista .
Esempio:
Ingressi: = [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]
e .
Produzione:[125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]
Perché?
I primi valori dell'elenco ( [500,200]
) si sommano a 700
. Se prendiamo tutti i suffissi dei numeri rimanenti, nonché le loro somme:
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
Il suffisso più lungo che ha una somma inferiore o uguale 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]
con una somma di 643
, quindi questo è il nostro risultato.
Regole della sfida:
- I valori nel primo prefisso non vengono conteggiati nel suffisso di output. Cioè input L = e n = 2
[10,5,5,3]
comporterebbe[5,3]
, e non[5,5,3]
. - L'I / O è flessibile. Puoi inserire come elenco / flusso / array di numeri interi / decimali / stringhe, una singola stringa delimitata, uno a uno tramite STDIN, ecc. È anche possibile eseguire l'output come elenco / flusso / array di numeri interi / decimali / stringhe, stampa / restituisce una stringa delimitata, stampa un numero su ogni nuova riga, ecc. La tua chiamata.
- L'output è garantito per non essere vuoto. Quindi non dovrai occuparti di casi di test come =
[-5,-10,-13]
e risultanti[]
. - Entrambi (o uno) l'ingresso e / o l'output possono anche essere in ordine crescente anziché in ordine decrescente se lo si desidera.
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta si applicano le regole standard I / O predefinite , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e tipo di ritorno, programmi completi. La tua chiamata.
- Scappatoie predefiniteSono vietate le .
- Se possibile, aggiungi un link con un test per il tuo codice (ad es TIO ).
- Inoltre, si consiglia vivamente di aggiungere una spiegazione per la risposta.
Casi test:
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
risultanti []
. " Inoltre, l'elenco di input è garantito in ordine decrescente (o crescente se si sceglie di), quindi [1,2,3]
non è un elenco di input valido per cominciare (a meno che non si scelga un input crescente, nel qual caso [1,2]
sarebbe il risultato).