Introducción:
Hace unos días leí esta publicación con el mismo título cuando la encontré en el HNQ. En esta pregunta se está discutiendo si el reclamo del presidente candidato Bernie Sanders, quien afirmó lo siguiente:
Hoy, los 26 multimillonarios más ricos del mundo, 26, poseen ahora tanta riqueza como los 3,8 mil millones de personas más pobres del planeta, la mitad de la población mundial.
Enlace al video
es cierto o no Vaya a la pregunta en sí para obtener respuestas y discusiones allí.
En cuanto al desafío real basado en esta afirmación:
Reto:
Dos entradas: una lista de números ordenada descendente y un número (donde es ).
Salida: la posible sufijo sub-lista más larga de para los que la suma total es la suma de los primeros valores en la lista .
Ejemplo:
Entradas: = [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]
y .
Salida:[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é?
Los primeros valores de la lista ( [500,200]
) suman 700
. Si tomamos todos los sufijos de los números restantes, así como sus sumas:
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
El sufijo más largo que tiene una suma menor o igual a 700
es [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 suma de 643
, así que ese es nuestro resultado.
Reglas de desafío:
- Los valores en el primer prefijo no se cuentan para el sufijo de salida. Es decir, las entradas =
[10,5,5,3]
y se traduciría en[5,3]
, y no[5,5,3]
. - I / O es flexible. Puede ingresar como una lista / secuencia / matriz de enteros / decimales / cadenas, una sola cadena delimitada, una por una a través de STDIN, etc. También puede generar una lista / secuencia / matriz de enteros / decimales / cadenas, imprima / devuelva una cadena delimitada, imprima un número en cada línea nueva, etc. Su llamada.
- La salida garantiza que no está vacía. Por lo que no tendrá que hacer frente a los casos de prueba como =
[-5,-10,-13]
y dando como resultado[]
. - Tanto (como cualquiera) la entrada y / o salida también pueden estar en orden ascendente en lugar de orden descendente si lo desea.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
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]
y que n=2
resultan en[]
" . Además, se garantiza que la lista de entrada se ordenará descendente (o ascendente si lo desea), por [1,2,3]
lo que no es una lista de entrada válida para empezar (a menos que elija una entrada ascendente, en cuyo caso [1,2]
sería el resultado).