Ваша задача сегодня состоит в том, чтобы вывести данный член последовательности, перечисляющей все целые числа. Последовательность следующая: если у нас есть 0-индексированная функция, генерирующая последовательность f(n)
и ceil(x)
являющаяся функцией потолка, то f(0) = 0
; abs(f(n)) = ceil(n/2)
; sign(f(n))
положительно, когда n
и ceil(n/2)
оба либо четные, либо оба нечетные.
Чтобы помочь понять эту последовательность, первые несколько терминов таковы: 0 1 -1 -2 2 3 -3 -4 4 5 -5 -6 6 7 -7...
Ваша задача - написать программу, которая принимает целое число n
и выдает n
th-й член последовательности. Ввод может быть только 0 или 1 с индексом.
Тестовые случаи (0-индексированные):
0 => 0
1 => 1
2 => -1
3 => -2
4 => 2
5 => 3
Это код-гольф , побеждает меньше байтов!
Ответы:
SOGL V0.12 ,
86 байтовПопробуй здесь! или попробуйте первые пару чисел (немного изменились, чтобы это работало) с
0 индексами.
Объяснение:
Или проще:
источник
».»
по телефонуI».»⌡±
.Python 2 ,
2624 байтаПопробуйте онлайн!
источник
-~-(x&2)
для окончательного знаменателя.JavaScript (ES6), 18 байт
1-индексироваться.
демонстрация
Показать фрагмент кода
источник
C, 25 байтов
источник
f(n){n=~n/2*~-(n&2);}
gcc -O0
для x86-64 происходит компиляция версии @ cleblanc с инструкциями, которые оставляют результат умножения вeax
( godbolt.org/g/dztKPV ), но тогда это будетx86-64 gcc -O0
ответ, а не ответ C. Я не одобряю ответы C, которые ломаются с включенной оптимизацией, особенно если не считать того глупого последнего выражения как дерьмо с возвращаемым значением. Даже если это как GCC происходит с работой, что это не так, как C работает.Haskell , 26 байтов
Попробуйте онлайн!
Другие ответы на Haskell кажутся слишком сложными… ^^
источник
Пайк , 6 байт
Попробуй это здесь!
Использует подход Дзаймы ...
BeatsTies Jelly!объяснение
Шестигранные закодированные байты эквивалента будут:
68 65 51 65 56 5F
.источник
Желе , 6 байт
Попробуйте онлайн!
Использует алгоритм Дзаймы.
-1 спасибо Джонатану Аллану .
источник
Python 2 , 21 байт
Попробуйте онлайн!
источник
Mathematica, 24 байта
-14 байтов от @Миша Лаврова
источник
Boole
иOddQ
приводит к преобразованию нечетных чисел в 1 и четных чисел в 0, но здесь это не нужно: степени -1 в любом случае дают правильный ответ для всех нечетных чисел. Таким образом, вы можете сократить этот шаг(-1)^Tr@{#,s}
или просто(-1)^(#+s)
.Haskell ,
254342 байтаПопробуйте онлайн! 1-индексироваться.
Редактировать: Предыдущая версия имела знаки в неправильном порядке, спасибо @ Potato44 за указание. Исправлено на 18 байт ...
Редактировать 2: Спасибо BMO за -1 байт!
источник
Python 3 , 29 байт
Попробуйте онлайн!
источник
(-1)**(n%4>1)
довольно запутанный способ написания(1-(n&2))
;)Pyth , 9 байт
Попробуй это здесь!
Использует подход Дзаймы .
источник
Haskell, 36 байт
Попробуйте онлайн!
источник
05AB1E , 6 байтов
Попробуйте онлайн!
Использует алгоритм Дзаймы.
источник
Пакетный, 29 байт
источник
JavaScript (ES6), 18 байт
0 индексированные.
источник
Javascript, 17 байт
Показать фрагмент кода
Этот 0 проиндексирован. Это полностью битовый обман.
источник
Кубически 23 байта
(1-индексированных)
Попробуйте онлайн!
Основными сложностями при написании кода в Cubically являются:
Итак, это решение рассчитать
где
/
обозначает целочисленное деление. Для этого нужна только 1 временная переменная и константы 1 и 2.Объяснение:
источник
TI-Basic (TI-84 Plus CE), 20 байтов
Полная программа, которая называется как
5:prgmNAME
.TI-Basic - это токенизированный язык , все токены, используемые здесь, являются одним байтом, за исключением
remainder(
двух.‾
представляет собой регуляторный токен, который набирается (-)ключом.Примеры:
Объяснение:
Та же формула, что и для функции Y-var:
источник
постоянный ток , 16 байтов
Я уверен, что есть способ сделать 0..1 до -1..1 в dc короче, но пока нет идей.
Попробуйте онлайн!
источник
Java 8, 15 байт
РЕДАКТИРОВАТЬ: Java действительно самый короткий из не-гольф-языков ?! o.o
Объяснение:
Попробуй это здесь.
Я буду использовать таблицу ниже как ссылку на то, что происходит.
~n
равно-n-1
.~n/2
результатом будет последовательность0,-1,-1,-2,-2,-3,-3,-4,-4,-5,-5,...
n&2
приведет либо0
либо2
, либо , в последовательности0,0,2,2,0,0,2,2,0,0,2,...
~-x
равно(x-1)
, поэтому~-(n&2)
(((n&2)-1)
) приводит к последовательности-1,-1,1,1,-1,-1,1,1,-1,-1,1,...
~n/2
и~-(n&2)
дает правильную последовательность, заданную в задаче:0,1,-1,-2,2,3,-3,-4,4,5,-5,...
Обзорная таблица:
источник
Brain-Flak ,
86747270 байтПопробуйте онлайн!
объяснение
Этот код состоит из двух частей. Первая часть
делает мускул вычисления. Он определяет,
ceil(n/2)
стоит ли отменять вывод или нет.Чтобы объяснить, как это работает, я сначала объясню, как можно рассчитать
ceil(n/2)
. Это можно сделать с помощью следующего кодаЭто отсчитывает от n каждый раз, когда он выполняет not (
([{}]())
) на счетчике и добавляет счетчик к результату. Поскольку счетчик равен нулю половину времени, мы увеличиваем только каждый второй запуск, начиная с первого.Теперь я хочу также вычислить знак наших результатов. Для этого мы запускаем другой счетчик. Этот счетчик изменяет состояние, только если первый счетчик выключен. Таким образом, мы получаем желаемый шаблон. Мы поместили эти два счетчика в стек для облегчения перемещения их, когда придет время.
Теперь, когда мы закончили это вычисление, наш стек выглядит так
Поэтому нам нужно проделать определенную работу, чтобы получить желаемый результат, как это делает вторая часть.
источник
Perl 5 , 32 + 1 (
-p
) = 33 байтаПопробуйте онлайн!
источник
Протон , 23 байта
Попробуйте онлайн!
Порт Халварда .
Протон , 23 байта
Попробуйте онлайн!
Порт Лики решения .
Немного больше протонов, 24 байта:
источник
QBIC ,
2726 байтовобъяснение
источник
Clojure 122 байта
Многословно, даже когда играешь в гольф. Я собираюсь голосовать здесь за симпатии ... :-)
Golfed:
Ungolfed:
источник
Excel VBA 32-разрядная,
3937 байтФункция анонимного непосредственного окна VBE, которая принимает входные данные из ячейки
A1
и выводит их в непосредственное окно VBEОграничено 32-битным, поскольку
A^B
недопустимо в 64-битном режиме (A ^B
настолько близко, насколько это возможно)источник
(-1)
и^[Int
нужно?Юлия 0,6 , 16 байт
Это просто решение Java, за исключением того, что мне нужно
÷
для целочисленного деления.Попробуйте онлайн!
источник