Входные данные:
Целое число, n
которое является >=0
или >=1
( f(0)
необязательно)
Выход:
n
«Й номер в следующей последовательности, или последовательность вплоть до и включая n
» го числа.
Последовательность:
(0),1,-1,-3,0,5,-1,-7,0,9,-1,-11,0,13,-1,-15,0,17,-1,-19,0,21,-1,-23,0,25,-1,-27,0,29,-1,-31,0,33,-1,-35,0,37,-1,-39,0,41,-1,-43,0,45,-1,-47,0,49,-1,-51,0,53,-1,-55,0,57,-1,-59,0,61,-1,-63,0,65,-1,-67,0,69,-1,-71,0,73,-1,-75,0,77,-1,-79,0,81,-1,-83,0,85,-1,-87,0,89,-1,-91,0,93,-1,-95,0,97,-1,-99
Как строится эта последовательность?
f(n=0) = 0
(необязательно)
f(n=1) = f(0) + n
или f(n=1) = 1
f(n=2) = f(1) - n
f(n=3) = f(2) * n
f(n=4) = f(3) / n
f(n=5) = f(4) + n
т. д.
Или в псевдокоде:
function f(integer n){
Integer result = 0
Integer i = 1
Loop as long as i is smaller than or equal to n
{
if i modulo-4 is 1:
result = result plus i
if i modulo-4 is 2 instead:
result = result minus i
if i modulo-4 is 3 instead:
result = result multiplied with i
if i modulo-4 is 0 instead:
result = result integer/floor-divided with i
i = i plus 1
}
return result
}
Но, как вы могли заметить, в последовательности есть два шаблона:
0, ,-1, ,0, ,-1, ,0, ,-1, ,0, ,-1, ,0, ,-1, ,...
,1, ,-3, ,5, ,-7, ,9, ,-11, ,13, ,-15, ,17, ,-19,...
поэтому любые другие подходы, приводящие к такой же последовательности, конечно, также вполне хороши.
Правила вызова:
- 0-индексированные и 1-индексированные входы приведут к одному и тому же результату (поэтому
f(0)
необязательно для 0-индексированных входов, если вы хотите включить его). - Вам разрешено вывести
n
ый номер этой последовательности. Или всю последовательность вверх и включаяn
номер. (Такf(5)
может привести либо либо,5
либо0,1,-1,-3,0,5
.)- Если вы решите вывести последовательность вплоть до
n
числа с номером, формат вывода будет гибким. Может быть списком / массивом, строкой с разделителями-запятыми / пробелами / новой строкой или напечатанной в STDOUT и т. Д.
- Если вы решите вывести последовательность вплоть до
- Divide (
/
) - это целочисленное / минимальное деление, которое округляется до 0 (не до отрицательной бесконечности, как в некоторых языках).
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
Дополнительные тестовые примеры выше n=100
:
Input Output
1000 0
100000 0
123 -123
1234 -1
12345 12345
123456 0