Вызов
Предположим, у вас есть список чисел и целевое значение. Найдите набор всех комбинаций ваших чисел, которые складываются в целевое значение, возвращая их в виде индексов списка.
Вход и выход
Ввод будет принимать список чисел (не обязательно уникальный) и целевой суммы суммирования. Выходными данными будет набор непустых списков, каждый список содержит целочисленные значения, соответствующие положению значений в исходном входном списке.
Примеры
Input: values = [1, 2, 1, 5], target = 8
Output: [ [0,1,3], [1,2,3] ]
Input: values = [4.8, 9.5, 2.7, 11.12, 10], target = 14.8
Output: [ [0,4] ]
Input: values = [7, 8, 9, -10, 20, 27], target = 17
Output: [ [1,2], [0,3,4], [3,5] ]
Input: values = [1, 2, 3], target = 7
Output: [ ]
счет
Это код-гольф , поэтому выигрывает самый короткий код!
code-golf
permutations
soapergem
источник
источник
Ответы:
Шелуха , 10 байт
1-индексироваться. Попробуйте онлайн!
объяснение
Это использует последнее дополнение к Husk,
η
(действуют на индексы). Идея состоит в том, что онаη
принимает функцию более высокого порядкаα
(здесь - встроенную лямбда-функцию) и списокx
, а также вызываетα
функцию индексацииx
(которая находится⁰
в приведенной выше программе) и индексыx
. Например,ṁ⁰
берет подмножество индексов, сопоставляет индексирование сx
ними и суммирует результаты.источник
JavaScript (ES6), 96 байт
Принимает ввод в синтаксисе карри
(list)(target)
.Контрольные примеры
Это потерпит неудачу во втором тестовом случае, если 4.8 и 10 были поменяны местами из-за ошибки точности IEEE 754 - то есть,
14.8 - 4.8 - 10 == 0
но14.8 - 10 - 4.8 != 0
. Я думаю, что это хорошо , хотя где-то в мета может быть более релевантная ссылка.Показать фрагмент кода
комментарии
источник
reduce
с? Я должен выразить это.Python 2 , 110 байт
Попробуйте онлайн!
источник
R ,
8584 байтаПопробуйте онлайн!
1-индексироваться.
combn
обычно возвращает amatrix
, но параметрsimplify=F
возвращаетlist
вместо этого, что позволяетc
объединить все результаты вместе.combn(I,i,,F)
возвращает все комбинации индексов, и мы беремN(l,i,sum)==k
в качестве индекса этот список, чтобы определить те, которые равныk
.источник
J ,
3231 байтПопробуйте онлайн!
источник
4 :'<@I.t#~x=1#.y#~t=.#:}.i.2^#y'
. Попробуйте онлайн!Japt , 14 байт
Проверьте это онлайн!
Как это устроено
источник
m,
. Я имелÊo à k@VnXx@gX
для того же количества байтов.Чистый ,
10410298 байтПопробуйте онлайн!
источник
[1, 2, -1, 5] 0 --> [[],[2,0]]
Требуется набор непустых списков.Haskell , 76 байт
Попробуйте онлайн!
источник
[1, 2, -1, 5]#0 --> [[],[0,2]]
Требуется набор непустых списков.Желе , 11 байт
Попробуйте онлайн!
1-индексироваться. 4 байта расходуются на возвращение индексов, а не только самих элементов.
-1 байт благодаря пользователю 202729
-1 байт благодаря Джонатану Аллану
источник
⁴
не требуется , если вы используетеç
вместоÇ
.Wolfram Language (Mathematica) , 43 байта
1-индексироваться.
Попробуйте онлайн!
источник
Python 3 , 144 байта
Попробуйте онлайн!
0 индексированные. 44 байта ушло на возвращение индексов, а не только самих элементов.
источник
Брахилог ,
1815 байтПопробуйте онлайн!
-3 байта, потому что теперь он работает как генератор . (Возможно, возможно больше играть в гольф, но обходить необходимость использования индексов неудобно.)
источник
hiᶠ⊇z+ʰXh~t?∧Xt
выходит на такую же длину.Perl 6 , 45 байт
Проверь это
Expanded:
источник
APL (NARS), 49 символов, 98 байтов
1-индексированных; тестовое задание:
комментарий:
источник
Pyth, 11 байт
Попробуйте онлайн здесь или проверьте все тестовые примеры сразу здесь .
источник