задача
Ваша задача проста - сгенерировать последовательность, которая, учитывая индекс i
, значение в этой позиции является суммой квадратов от 0
до, i
где i >= 0
.
Пример:
Input: 0
Output: 0 (0^2)
Input: 4
Output: 30 (0^2 + 1^2 + 2^2 + 3^2 + 4^2)
Input: 5
Output: 55 (0^2 + 1^2 + 2^2 + 3^2 + 4^2 + 5^2)
Спецификация:
- Вы не можете вводить и выводить последовательность бесконечно;
- Вы можете принимать
N
и выводитьNth
элемент последовательности; - Вы можете взять
N
и вывести первыеN
элементы последовательности.
code-golf
number
sequence
arithmetic
Фелипе Нарди Батиста
источник
источник
f(1) == 1 * 1 (1)
иf(24) == 70 * 70 (4900)
.f(1) = 1
?f(0) = 0
. я указал, что на несколько ответов, которые не соответствовали этому требованию,f(0) = 0
Требование разрушила несколько моих решений :(Ответы:
Желе , 3 байта
Попробуйте онлайн!
FGITW
объяснение
источник
Ræ.R
Python 2 , 22 байта
Попробуйте онлайн!
При этом используется формула замкнутой формы n * (n + 1) * (2 * n + 1) / 6 . Код выполняет следующие операции:
Умножается на n (
n*
):~n
), что по существу означает -1-n .*~(n*2)
), что означает -1-2n .Делит на 6 (
/6
).Python 2 , 27 байт
Попробуйте онлайн!
Сохранено 1 байт благодаря Rod и 1 благодаря GB .
источник
MATL , 3 байта
... или их?
Попробуйте онлайн!
объяснение
источник
JavaScript (ES6), 16 байт
демонстрация
Показать фрагмент кода
Как?
Выражение
n+++n
анализируется какn++ + n
(1) . Не то чтобы это действительноn + ++n
имело значение, потому что в этом случае тоже сработало бы.Следовательно:
который оценивается как сумма (k = 0 ... n) (k²) .
(1) Это можно проверить, выполнив
n='2';console.log(n+++n)
которое дает целое число5
, тогда какn + ++n
даст строку'23'
.источник
05AB1E , 3 байта
Попробуйте онлайн!
объяснение
источник
Brain-Flak , 36 байт
Попробуйте онлайн!
источник
({<(({}))>{({})({}[()])}{}<({}[()])>})
для 38Brain-Flak , 34 байта
Попробуйте онлайн!
Как это работает?
Изначально у меня была та же идея, что и у Райли 1, но было неправильно использовать нольер. Затем я понял, что
Вычисляет n 2 - n.
Зачем? Ну мы знаем
Вычисляет n 2 и повторяет n раз. Это означает, что если мы поменяем порядок двух нажатий, мы перейдем от увеличения суммы на n + (n-1) каждый раз к увеличению суммы на (n-1) + (n-1) каждый раз. Это уменьшит результат на единицу за цикл, делая наш результат n 2 - n. На верхнем уровне эта -n отменяется с помощью n, сгенерированного толчком, который мы обнуляли, облегчая необходимость обнуления и экономя нам два байта.
Brain-Flak , 36 байт
Попробуйте онлайн!
Вот еще одно решение: оно не такое уж и гольфовое, но довольно странное, поэтому я подумал, что оставлю это как вызов, чтобы выяснить, как это работает.
Если вы не в Brain-Flak, но вы все еще хотите, чтобы задача здесь, это как суммирование.
1: я придумал свое решение прежде, чем я посмотрел на ответы здесь. Так что никакого плагиата здесь нет.
источник
Шелуха , 3 байта
Попробуйте онлайн!
источник
Ом v2 , 3 байта
Попробуйте онлайн!
объяснение
источник
Japt , 3 байта
Попробуй это здесь.
-1 спасибо Шегги .
Объяснение:
источник
p2
.Brain-Flak , 46 байтов
Попробуйте онлайн!
источник
({{({})({}[()])}{}}{})
и сэкономит вам 10 байтов. (Если это не имеет смысла, пингуйте меня в третьем стеке )CJam , 10 байтов
Попробуйте онлайн!
источник
ri),_.*:+
илиri),2f#:+
?Wolfram Language (Mathematica) , 14 байтов
Попробуйте онлайн!
источник
#.#&@Range@#&
сохраняет байт#.#&@*Range
,На самом деле , 3 байта
Попробуйте онлайн!
Принимает в
N
качестве входных данных и выводитN
элемент в последовательности.Объяснение:
источник
APL (Dyalog) ,
75 байтов2 байта сохранены благодаря @Mego
Попробуйте онлайн!
Как?
⍳
- диапазон+.×
- скалярное произведение⍨
- с собойисточник
¨⍳
это необходимоR, 17 байт
Довольно просто, он использует тот факт , что
^
(возведение в степень) является векторизованную в R .источник
(x=0:scan())%*%x
короче на байт, но я считаю, что вам нужно,cat
чтобы получить вывод.cat
, он выводит матрицу 1x1.cat
необходимо для того, чтобы квалифицироваться как полная программа. Если вы хотите изменить это, ответьте на этот вопрос и получите некоторую популярность среди других R людей на сайте.CJam , 9 байт
Попробуйте онлайн!
объяснение
В качестве альтернативы:
Это возводит в квадрат каждый элемент путем сопоставления
2#
вместо использования попарных произведений. И просто для удовольствия другая альтернатива, которая становится неточной для больших входных данных, потому что она использует арифметику с плавающей точкой:источник
Юлия ,
1614 байтов2 байта сохранены благодаря @MartinEnder
Попробуйте онлайн!
Как?
(x=1:n)
создает диапазон1
дляn
и назначитьx
,⋅
точка продукта сx
.источник
Лабиринт , 11 байт
Попробуйте онлайн!
Печатает последовательность бесконечно.
объяснение
Указатель инструкции просто продолжает бегать вокруг квадрата кода снова и снова:
источник
Cubix , 15 байтов
Попробуйте онлайн!
Мой код немного грустный
):
Вычисляет
n*(n+1)*(2n+1)/6
источник
Befunge , 16 байт
Используя формулу замкнутой формы n * (n + 1) * (2n + 1) / 6 .
Попробуйте онлайн!
Befunge , 38 байт
Используя цикл.
Попробуйте онлайн!
источник
Haskell, 20 байтов
Попробуйте онлайн!
источник
Excel, 19 байт
источник
Гексагония , 23 байта
Попробуйте онлайн!
объяснение
Развернутая:
Это действительно просто линейная программа,
/
используемая для некоторого перенаправления. Линейный код:Который вычисляет n (n + 1) (2n + 1) / 6 . Он использует следующие края памяти:
Где точка памяти (MP) начинается с края, обозначенного n , указывающего на север.
Теоретически может быть возможно вписать эту программу в длину стороны 3, потому что
/
они не нужны для вычислений,:
могут быть повторно использованы для завершения программы, а некоторые из них также'"=+*{
могут быть многократно использованы, принося необходимое количество Команды ниже 19 (максимум для длины стороны 3). Я сомневаюсь, что можно найти такое решение вручную, если оно вообще существует.источник
> <> ,
151311 байтСохранено 2 байта благодаря Не дерево
Попробуйте онлайн!
Выводит последовательность бесконечно.
источник
-v
флага):::1+:}+**6,n
( Попробуйте онлайн! )N=1
): попробуйте онлайн!l
. Проверка с помощью OP, можно ли начинать с 1.l
идею из ответа Лабиринта Мартина Эндера .)Pyth ,
75 байтов благодаря Стивену НОбъяснение:
Мое первое решение
Попробуйте онлайн!
Объяснение:
источник
Нейм , 3 байта
Это могло быть проблемой, чтобы продемонстрировать встроенные в Neim полигональные числа, но, очевидно, нет.
Попробуйте онлайн!
источник
Оазис , 4 байта
Попробуйте онлайн!
объяснение
источник
Брахилог , 5 байт
Попробуйте онлайн!
объяснение
источник
Gaia , 3 байта
Попробуйте онлайн!
источник