Цель : учитывая положительное целое число n
:
- Если
n
нечетно, выведите списокn
номеров, ближайших к ним,0
в порядке возрастания - Если
n
четное, выведите значение Falsey.
Тестовые случаи :
5 -> [-2,-1,0,1,2]
4 -> false (or any Falsey value)
1 -> [0]
Ссылочная реализация
function update(){
var num = +document.getElementById("yield").value;
if(num){
var out = document.getElementById("output");
if(num % 2 == 1){
// base is balanced
var baseArr = [];
for(var i=0;i<num;i++){
baseArr.push(i-Math.floor(num/2));
}
out.innerHTML = baseArr.join(" ");
} else {
out.innerHTML = "false";
}
} else {
out.innerHTML = "<i>enter input</i>";
}
}
setInterval(update,1);
* {
font-family: "Constantia", "Consolas", monospace;
}
[type="number"] {
width: 10px;
width: 2em;
}
#output {
font-family: "Consolas", monospace;
}
Input: <input type="number" id="yield" value="3"> is <span id="output"><i>enter input</i></span>
code-golf
math
number
number-theory
Конор О'Брайен
источник
источник
Ответы:
Pyth, 10 байт
Попробуйте онлайн.
Как это работает
источник
APL,
161513 байтСпасибо @Dennis за -2 байта!
Это монадическая последовательность, которая дает пустой массив для равномерного ввода. Ниже приведена схема:
Во-первых,
⊢×2|⊢
дает время ввода его мод 2; то есть, шансы будут давать себя, и эвены дают 0. Мы используем ,⍳
чтобы создать список чисел от 1 до , что (⍳0
дает пустой массив), а затем вычесть половину входа и пол.источник
Mathematica,
323024 байтаТрюк с игрой в код: последний аргумент
And
не должен быть логическим.источник
Floor
.Range[-a,a=...]
похоже, работает, сохраняя еще один байт.OddQ@#&&Range@#-(#+1)/2&
PowerShell,
5052 байтаУф. Довольно подробный ответ. Принимает ввод
$a
, затем устанавливает новую переменную$b
как «floor» из$a/2
. Создает новый диапазон чисел от(0-$b)
до$b
, а затемjoin
диапазон с пробелами, и имеет его в качестве второго элемента двухэлементного массива (первый элемент -0
). Затем использует$a%2
для индексации в этот массив для вывода.Альтернативная версия, использующая более «традиционный» поток if / else, на 54 байта:
Edit - необходимо добавить логику для вывода значения Falsey, если ввод четный
источник
(0-$b)
на просто-$b
. Кроме того, просто умножение на*0
приведет к выводу пустой строки (в PowerShell значение false). (см .: codegolf.stackexchange.com/a/63005/45925 )Haskell,
373631 байтНесбалансированность указывается пустым списком. Пример использования:
g 7
->[-3,-2,-1,0,1,2,3]
.@xnor нашел 5 байтов. Спасибо!
источник
g n=[x|x<-[-div n 2..(n+1)/2],odd n]
одинаково долго.g n=[1|odd n]>>[-div n 2..div n 2]
g n=[1|odd n]>>take n[-div n 2..]
также сохраняет символJavaScript (ES6),
44434241 байтвычеркнуто 44 все еще регулярно 44; (
Для нечетных входных данных возвращает целочисленный массив длины с
x
центром в0
; для четного, возвращает 0. Я думаю, что это так коротко, как может. (Сохранено пару байтов благодаря @ edc65 и @ ן nɟuɐɯɹɐ ן oɯ!)Альтернатива ES6: (42 байта, благодаря @intrepidcoder)
Предложения приветствуются!
источник
x%2&&[for(y of...]
сохраняет байт.n=>Array(n&1&&n--).fill().map((x,i)=>i-n/2)
если разрешен возврат пустого массиваx=>x%2&&[for(y of Array(x--).keys())y-x/2]
42.Минколанг 0,10 , 18 байт
объяснение
источник
J, 12 байт
Это монадический глагол, который возвращает
0
(ложь) для четных чисел. Попробуйте его в Интернете с J.js .Тестовый забег
Как это работает
источник
DUP , 31 байт
Try it here.
Анонимная лямбда. Применение:
объяснение
источник
Python 2,
3432 байтаПрямо сейчас я не уверен, смогу ли я вывести все, что захочу, если он не сбалансирован, поэтому в настоящее время это просто возвращает пустой список в случае несбалансированной базы. Это анонимная лямбда-функция, поэтому дайте ей имя, чтобы использовать ее.
источник
k%2*
, вы можете избежать Parens.CJam,
1312 байтЭто анонимная функция, которая извлекает целое число из стека и возвращает массив цифр (нечетное основание) или пустой массив (четное основание) взамен. Попробуйте онлайн в интерпретаторе CJam .
Как это работает
источник
О, 18
Живая демоверсия.
источник
Витси,
2725 БайтЗавтра я собираюсь сыграть в гольф, но мне действительно пора идти спать.
источник
TeaScript , 16 байт
18Довольно просто Специальные символы на самом деле являются просто «сокращениями» для более длинных последовательностей кода.
Я до сих пор не сделал постоянные ссылки, поэтому вам придется скопировать вставить в переводчик
объяснение
Этот ответ не конкурирует
источник
F #, 38 байт
Результат фальси - пустой список.
источник
𝔼𝕊𝕄𝕚𝕟 21 символ / 37 байт
Try it here (Firefox only).
Вот 20-символьный / 35-байтовый ответ (не конкурирующий, поскольку в ответе используются изменения, внесенные после того, как вопрос задан):
Try it here (Firefox only).
источник
Japt,
2119 байтJapt - это сокращенная версия Ja vaScri pt .
Для нечетных входных данных возвращает целочисленный массив длины с
x
центром в0
; для четного, возвращает 0. Грубый перевод JS:где
x.range(y)
создает список целых чисел отx
доy
. Проверьте это онлайн!В современном Japt это только 11 байтов:
Попробуйте онлайн!
источник
R, 30 байт
Грубо говоря,
x:-x
возвращает целые числа отx
до-x
, где я установилx
в(1-n)/2
. Я также использую фактор modulo-2n%%2
в определении,x
чтобы принудительноx
обнулить, когдаn
четное, и в этом случае0:0
возврат0
(фальси).источник
Perl, 36 байт
У меня такое ощущение, что это можно сократить:
Диапазон обрабатывает числа с плавающей точкой как целые числа, поэтому, например, 5/2 = 2,5 автоматически преобразуется в 2.
(Если форматирование не имеет значения, удалите
$,=$";
в общей сложности 30 байтов).источник
Powershell, 49 байт
Четные числа оцениваются,
$false
поскольку они обеспечивают вывод пустой строки.Нечетные числа выводят точную справочную строку. Вы можете сохранить еще 4 байта (сейчас
45
), удалив[]
из выходной строки.Powershell, 36 байт
Это дает тот же результат, но выводит список чисел, разделенных символами новой строки:
источник
Perl 6, 25 байт
Самое короткое лямбда-выражение, которое я мог придумать, которое выводит список, а не диапазон:
Тестирование:
Это использует тот факт, что Perl 6 рассматривает число
0
как ложное значение. Если результат должен быть точно,False
вы можете заменить$_%2
на$_!%%2
.источник
05AB1E , 8 байтов (не конкурирует)
Язык ставит после проблемы и, следовательно, не конкурирует. Код:
Попробуйте онлайн!
Объяснение:
Использует кодировку CP-1252 .
источник
PHP, 50 байт
программа, принимает данные из STDIN, печатает
_
список с разделителями или0
.или
функция принимает аргумент, возвращает массив или
0
.источник
Java, 145 байт
Пояснение: Извините, я знаю, что это действительно долго. Я не видел ответа для java, поэтому решил вставить его. Дайте мне знать, если мне нужно написать основную функцию (я не уверен, является ли это политикой или нет). По сути, он делит число на два и умножает его на -1 для нижней границы, а для верхней границы он просто использует число, деленное на два. Я немного новичок на этой странице, так что, если я ничего не отформатировал, дайте мне знать. Кроме того, я знаю, что ответы можно сократить с помощью лямбда-функций, но я не знаю, как их использовать, и я не уверен, поддерживает ли их Java.
Вот более читаемая версия, которая менее похожа на гольф:
источник
return
- возвращаемое значение является допустимой формой вывода), а не нужно использоватьSystem.out
, хотя в этом случае дляreturn
работы вам потребуется хранить частично построены списки в строке). Последние версии Java поддерживают лямбды, и они обычно выходят короче, чем «обычные» определения функций. (Кроме того, почему лидирующие пробелы?)Рубин, 25 байт
источник
Рубин, 27 байт
Создает анонимную лямбда-функцию, которая будет возвращать массив
n
чисел, ближайший к 0, если n нечетно, и возвращает nil (значение Falsey в ruby) в противном случае.Рубин округляет свое целочисленное деление в сторону -infinity, но
0-n/2
оно короче-n/2+1
(поскольку знак минус в любом случае есть), и поскольку n теперь считается положительным, округление работает в мою пользу.Старая версия (28 байт)
источник