Введение:
Несколько дней назад я прочитал этот пост с тем же названием, когда наткнулся на него в HNQ. В этом вопросе обсуждается ли иск кандидата в президенты Берни Сандерса, который утверждал следующее:
Сегодня 26 самых богатых в мире 26-миллиардеров сегодня владеют таким же богатством, как и 3,8 млрд. Самых бедных людей на планете, то есть половина населения мира.
Ссылка на видео
это правда или нет. Пожалуйста, перейдите к самому вопросу для ответов и обсуждения там.
Что касается фактической проблемы, основанной на этом требовании:
Вызов:
Два входа: отсортированный по убыванию список номеров и номер (где равно ). Выход: самый длинный возможный суффикс суб-список , для которых общая сумма суммы первых значений в списке .≤ n 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]
[125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]
Зачем?
Первые значения списка ( ) суммируются с . Если мы берем все суффиксы оставшихся чисел, а также их суммы:[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
Самый длинный суффикс , который имеет сумму меньше или равняться 700
есть [125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]
с суммой 643
, так что это наш результат.
Правила соревнований:
- Значения в первом префиксе не учитываются в суффиксе вывода. Т.е. входы = и приведут , а нет .
[10,5,5,3]
[5,3]
[5,5,3]
- Ввод / вывод является гибким. Вы можете ввести в виде списка / потока / массива целых чисел / десятичных дробей / строк, одной строки с разделителями, один за другим через STDIN и т. Д. Вы также можете вывести в виде списка / потока / массива целых чисел / десятичных дробей / строк, распечатать / вернуть строку с разделителями, напечатать число на каждой новой строке и т. д. Ваш звонок.
- Выход гарантированно будет непустым. Таким образом, вам не придется иметь дело с тестовыми примерами, такими как = и n = 2, в результате чего .
[-5,-10,-13]
[]
- Оба (или оба) ввода и / или вывода также могут быть в порядке возрастания, а не в порядке убывания, если вы решите.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вам разрешено использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи:
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]
и n=2
приводящие к []
. » Кроме того, список ввода гарантированно будет отсортирован по убыванию (или по возрастанию, если вы выберете), поэтому [1,2,3]
для начала недопустимый список ввода (если вы не выберете ввод по возрастанию, в этом случае [1,2]
будет результат).