Вхід:
Ціле число , 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 тощо.
- Якщо ви вирішите вивести послідовність до і включати
/
Поділ ( ) - це ділення на ціле число / підлогу, яке округляється до 0 (а не до негативної нескінченності, як це має місце в деяких мовах).
Загальні правила:
- Це код-гольф , тому найкоротша відповідь у байтах виграє.
Не дозволяйте мовам з кодовим гольфом відштовхувати вас від публікації відповідей з мов, що не кодують гольф. Спробуйте придумати якомога коротшу відповідь на "будь-яку" мову програмування. - Стандартні правила застосовуються до вашої відповіді, тому вам дозволяється використовувати STDIN / STDOUT, функції / метод із відповідними параметрами та повним програмами типу return. Твій дзвінок.
- Лазівки за замовчуванням заборонені.
- Якщо можливо, додайте посилання з тестом для вашого коду.
- Також, будь ласка, додайте пояснення, якщо це необхідно.
Додаткові тестові випадки вище n=100
:
Input Output
1000 0
100000 0
123 -123
1234 -1
12345 12345
123456 0