Напишите программу или функцию, которая при n ≥ 1 возвращает количество решений ± 1 ± 2 ± 3 ± ... ± n = 0.
Для n = 6 нет решений, поэтому ответ равен 0. Для n = 4 есть два решения, поэтому ответ равен 2 (два решения: 1 - 2 - 3 + 4 = -1 + 2 + 3 - 4 = 0)
Это последовательность OEIS A063865 . Некоторые примеры ввода / вывода:
n a(n)
1 0
2 0
3 2
4 2
5 0
6 0
7 8
8 14
9 0
10 0
11 70
12 124
13 0
14 0
15 722
16 1314
Самый короткий код в байтах побеждает.
code-golf
math
arithmetic
orlp
источник
источник
Ответы:
JavaScript (ES6), 35 байт
Сохранено 1 байт благодаря @tsh
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 33 байта
Считает
n
наборы из 1 и -1, у которых произведение точек наRange[n]
равно 0.Попробуйте онлайн!
источник
Haskell , 42 байта
Попробуйте онлайн!
Это на
21 байт короче, чем любая рекурсивная функция, которую я мог бы написать.источник
05AB1E , 10 байтов
Попробуйте онлайн!
объяснение
источник
O_O
...C (gcc),
45625250 байтПорт Кевина Круйссена Java 8 ответ .
Попробуйте это онлайн здесь .
Обратите внимание, что из-за улучшений, предложенных в комментариях, код генерирует неопределенное поведение до такой степени, что он не работает при компиляции с помощью clang.
Спасибо etene за игру в гольф 3 байта. Спасибо Кевину Круйссену за игру в гольф еще 10 байтов. Спасибо Кристофу за игру в гольф еще 2 байта.
Безголовая версия:
источник
r?0:1
на!r
. 42 байтаr
, что недопустимо.n=
не нужно либо:f(n,r){n=n?f(n-1,r+n)+f(n-1,r-n):!r;}F(n){f(n,0);}
.-x = ~x+1
и, следовательно~x = -x-1
.05AB1E ,
98 байтСпасибо Emigna за сохранение байта!
Код:
Использует кодировку 05AB1E . Попробуйте онлайн!
объяснение
источник
MATL ,
1413 байтСпасибо @Giuseppe за сохранение 1 байта!
Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
Рассмотрим
n = 3
в качестве примера. Стек показывается вверх ногами, то есть, самое новое появляется ниже.источник
Желе , 8 байт
Попробуйте онлайн!
Как это работает
источник
Python 2, 74 байта
Больше забавного представления, прямого вычисления производящей функции.
источник
Октава (с пакетом коммуникаций), 39 байт
Попробуйте онлайн!
Объяснение:
Возьмите диапазон 0 ... n ^ 2-1 и преобразуйте его в двоичный файл. Это дает матрицу со всеми комбинациями 0 и 1 . Умножьте на 2 и вычтите 1, чтобы получить матрицу со всеми комбинациями -1 и +1 .
Возьмите скалярное произведение с диапазоном 1 ... n, чтобы получить все комбинации ± 1 ± 2 ... ± n . Посчитай сколько их ноль.
В основном то же самое, то же самое количество байтов:
источник
APL (Dyalog) ,
3122 байта9 байтов сохранено благодаря @ H.PWiz
Попробуйте онлайн!
источник
Python 2 и 3, 50 байт
Рекурсивный подход, как и большинство ответов:
Попробуйте онлайн
Двойной рекурсивный вызов занимает слишком много байтов ... Вероятно, есть способ упростить его.
источник
Java 8,
727170 байтПорт ответа @Arnauld 's JavaScript (ES6) .
-2 байта благодаря @ OlivierGrégoire .
Попробуйте онлайн.
Объяснение:
источник
Haskell , 55 байтов
Простой подход - вычислить все эти суммы и проверить, сколько их равно нулю.
Попробуйте онлайн!
РЕДАКТИРОВАТЬ: @ H.PWiz имеет более короткое и более элегантное решение, используя
mapM
!источник
Утилиты Bash + GNU, 63 байта
Bash, вероятно, может добиться большего успеха, чем это с рекурсивными функциями, но я не могу устоять перед этим видом
eval
/ escape / extension monstrosity:Попробуйте онлайн!
Обновление: я не думаю, что bash может лучше справляться с рекурсивными функциями. Это лучшее, что я мог сделать за 90 баллов .
eval
черт возьми, тогда.источник
Брахилог , 12 байт
Попробуйте онлайн!
объяснение
источник
Октава , 42 байта
Попробуйте онлайн!
источник
J , 32 байта
Попробуйте онлайн!
Конечно, есть много места для игры в гольф. Расширение будет следовать.
источник
Haskell , 41 байт
Попробуйте онлайн!
источник
0^abs k
.Желе , 10 байт
Попробуйте онлайн!
источник
Perl 5 ,
-p
35 байтПопробуйте онлайн!
источник
Пари / ГП , 30 байт
Попробуйте онлайн!
источник
Пролог (SWI) , 99 байт
Попробуйте онлайн!
источник
Pyth,
1413 байтовПопробуй здесь
объяснение
источник
CJam , 25 байтов
Попробуйте онлайн!
Это довольно прямой перевод решения @ emigna 05AB1E. Это конечно гольф.
источник
Stax , 9 байт
Запустите и отладьте его
Один из самых коротких ответов до сих порпобежден Желе.Я чувствую, что проверка явно того, какие знаки равны нулю, не очень удачна, поэтому вместо этого я беру блок питания и проверяю, сколько наборов в блоке питания имеют сумму половины n-го треугольного числа. Неудивительно, что этот метод имеет ту же сложность по времени, что и проверка того, какие знаки суммируются с нулем.
ASCII эквивалент:
источник
Pyth , 10 байт
Попробуйте онлайн. Кроме того, проверьте все тестовые случаи одновременно .
Explaination:
источник
J , 28 байт
Использует другое определение из OEIS, где
a(n) = coefficient of x^(n(n+1)/4) in Product_{k=1..n} (1+x^k) if n = 0 or 3 mod 4 else a(n) = 0
.Попробуйте онлайн!
объяснение
источник
Шелуха , 9 байт
Попробуйте онлайн!
объяснение
источник
Gol> <> , 26 байт
Попробуйте онлайн! или Запустите контрольные примеры от 1 до 16!
Как это работает
источник