При умножении мономов в базисе Милнора для алгебры Стинрода часть алгоритма включает перечисление определенных «допустимых матриц».
Даны два списка неотрицательных целых чисел r 1 , ..., r m и s 1 , ..., s n , матрицы неотрицательных целых чисел X
допустимо, если
Сумма j-го столбца меньше или равна s j :
Сумма i-го ряда, взвешенная по степеням 2, меньше или равна r i :
задача
Напишите программу, которая берет пару списков r 1 , ..., r m и s 1 , s 1 , ..., s n и вычисляет количество допустимых матриц для этих списков. Ваша программа может дополнительно принимать m и n в качестве дополнительных аргументов, если это необходимо.
Эти числа могут быть введены в любом понравившемся формате, например, сгруппированы в списки или закодированы в одинарном формате, или как угодно.
Вывод должен быть положительным целым числом
- Применяются стандартные лазейки.
счет
Это код гольф: выигрывает самое короткое решение в байтах.
Примеры:
Для [2]
и [1]
есть две допустимые матрицы:
Для [4]
и [1,1]
есть три допустимых матрицы:
Для [2,4]
и [1,1]
есть пять допустимых матриц:
Тестовые случаи:
Input: [1], [2]
Output: 1
Input: [2], [1]
Output: 2
Input: [4], [1,1]
Output: 3
Input: [2,4], [1,1]
Output: 5
Input: [3,5,7], [1,2]
Output: 14
Input: [7, 10], [1, 1, 1]
Output: 15
Input: [3, 6, 16, 33], [0, 1, 1, 1, 1]
Output: 38
Input: [7, 8], [3, 3, 1]
Output: 44
Input: [2, 6, 15, 18], [1, 1, 1, 1, 1]
Output: 90
Input: [2, 6, 7, 16], [1, 3, 2]
Output: 128
Input: [2, 7, 16], [3, 3, 1, 1]
Output: 175
источник
Ответы:
JavaScript (ES7), 163 байта
Контрольные примеры
NB : я удалил два самых трудоемких тестовых примера из этого фрагмента, но они также должны пройти.
Показать фрагмент кода
комментарии
источник
Желе , 26 байт
Полная программа, принимающая S , R, которая печатает счет
Попробуйте онлайн!
Как?
источник
Wolfram Language (Mathematica) , 101 байт
Пусть Mathematica решит ее как систему неравенств над целыми числами. Я установил символьный массив
f
и разделил его на три группы неравенств.Join@@
просто сводит список дляSolve
.Попробуйте онлайн!
источник
Mathematica 139 байт
Попробуйте онлайн
Объяснение: Делит каждое из r i на степени 2, а затем делает все кортежи с одним разложением на степени два для каждого целого числа, вычитает итоговые значения столбца из списка s i . Подсчитайте количество кортежей, которые делают все оставшиеся записи положительными.
источник