задача
Учитывая массив положительных целых чисел, замените каждый элемент с четностью суммы других элементов. Массив гарантированно содержит как минимум 2 элемента.
Определение
- Четность: четное или нечетное число.
пример
Для массива [1,2,3,1]
:
- Заменить
1
с четностью2+3+1
, т.е.even
. - Заменить
2
с четностью1+3+1
, т.е.odd
. - Заменить
3
с четностью1+2+1
, т.е.even
. - Заменить
1
с четностью1+2+3
, т.е.even
.
Выход: [even, odd, even, even]
вход
Массив натуральных чисел.
Вы можете принять его как правильный массив или как строку положительных целых чисел, разделенных переводом строки.
Вы можете предположить, что массив и значения внутри находятся в пределах возможностей обработки вашего языка.
Выход
Массив из двух последовательных значений , одно представляющее odd
, другое представляющее even
.
Вы можете вывести его в виде строки двух значений, разделенных переводом строки.
Testcases
Входы:
[1, 2, 3, 1]
[1, 2, 3, 2, 1]
[2, 2]
[100, 1001]
Выходы:
[even, odd, even, even]
[even, odd, even, odd, even]
[even, even]
[odd, even]
Примечание: вы можете выбрать другие непротиворечивые значения, кроме odd
и even
.
счет
Это код-гольф . Кратчайший ответ в байтах побеждает.
Применяется стандартная лазейка .
источник
_SḂ
JavaScript (ES6),
38 3632 байтаИспользует
0
для четных и1
нечетных.Тест
источник
c-b&1
вместо(c-b)%2
eval(a.join`+`)
болееa.reduce((x,y)=>x+y)
. Это умноHaskell, 20 байтов
Используется
True
для нечетных значений иFalse
для четных значений.Попробуйте онлайн!
Вычтите каждый элемент из суммы списка и проверьте, нечетен ли он.
f
обратился к pointfree также имеет 20 байт:map=<<(odd.).(-).sum
.источник
MATL ,
5, 4 байтаПопробуйте онлайн!
Один байт сохранен благодаря Денису!
Это дает «1» для нечетного и «0» для четного. Объяснение:
источник
Алиса ,
3128 байтПопробуйте онлайн!
Формат ввода не имеет значения, если целые числа разделены. Выходной формат разделен переводом строки.
Расположение, вероятно, все еще не оптимально, но я еще не нашел способ сократить это.
объяснение
источник
Pyth,
76 байтов-1 байт благодаря @KZhang
Выходы 1 для нечетных, 2 для четных.
Попытайся!
объяснение
источник
%_2
по GCDi2_
, вы можете даже сделатьd
неявное изменение кода наmi2-sQ
, сохраняя байт. Выходы изменяются на 2 для четного и 1 для нечетного.05AB1E (наследие) ,
43 байтаПопробуйте онлайн!
источник
D
, поскольку ввод неявно.Python 2 ,
3331 байт-2 байта благодаря Leaky Nun
Попробуйте онлайн!
источник
sum(x)-z&1
вместо(sum(x)-z)%2
sum(x,z)%2
также будет работатьR, 21 байт
читает список из стандартного ввода и возвращает 0 для четного, 1 для нечетного. связывает ввод с переменной
n
внутри вызоваsum
вместо вызова его снаружи, т.е.n=scan();(sum(n)-n)%%2
Попробуйте онлайн!
источник
Mathematica, 13 байт
или
источник
Clojure, 30 байтов
Вычитает все значения из каждого значения по очереди, например, при вводе
[a b c d]
2-е вычисленное значение равноb - a - b - c - d
=-(a + c + d)
. Выходfalse
для четного иtrue
нечетного.Но вы также можете использовать
+
и рассчитывать каждый последующий член дважды, чтобы он не влиял на четность.источник
CJam , 10 байтов
Это анонимный блок (функция), который принимает входные данные из стека и заменяет их выходными данными.
Попробуйте онлайн!
объяснение
Рассмотрим ввод
[1 2 3 1]
.источник
J , 6 байт
Попробуйте онлайн!
источник
APL (Dyalog Unicode) ,
197 байтовГольф 12 байтов благодаря @ Adám
Попробуйте онлайн!
источник
Japt , 7 байт
Попробуйте онлайн!
объяснение
источник
Perl 5, 31 байт
Выходы
1
для нечетных и0
для четных.источник
perldoc perlsub
говорит : «Подпись - это часть тела подпрограммы. Обычно тело подпрограммы - это просто блок кода в скобках».sub
не нарушив ее.sub
, например , послеsort
илиgrep
или в качестве аргумента другой подпрограммы. Об этом стоит спросить на Code Golf Meta .sub
только в том случае, если она используется в функции-прототипе (sort
иgrep
более или менее является прототипом). Но в противном случаеsub
требуется. Несмотря на это, игра в гольф 3 байта, опускаяsub
не очень интересно.Clojure (скрипт), 36 байт
Выход
true
для нечетных иfalse
четных. И вывод, и ввод являются последовательностями.источник
PHP, 50 байт
Онлайн версии
1 для нечетного, 0 для четного
Вывести в виде строки, разделенной
_
PHP, 72 байта
Вывод как использование массива
array_map
источник
?:0
это ничего не делает.foreach($_GET as$v)echo array_sum($_GET)-$v&1,_;
C
6862 байта1 для нечетного, 0 для четного
Подробное Попробовать онлайн
источник
Сетчатка ,
4038 байтПопробуйте онлайн! Выходы 1 для нечетных и 0 для четных. Объяснение: Первые две строки дублируют ввод один раз для каждого числа на входе, но без самого элемента. Это создает дополнительную пустую строку, которая затем удаляется. Затем ввод преобразуется из десятичного в унарный, пробелы удаляются и вычисляется четность. Затем четность преобразуется в ноль, и результаты объединяются в одну строку. Редактировать: Сохранено 2 байта благодаря @FryAmTheEggman. Я попробовал некоторые другие версии, которые концептуально более приятны, но требуют слишком много байтов для выражения:
Изменяет все входные данные на их четность, затем переворачивает все их четности, если итоговое значение имеет нечетную четность.
Суммирует дубликат ввода, затем берет паритет всего, затем инвертирует паритеты, если сумма нечетная, затем снова удаляет сумму.
источник
;
обратно в пробелы. Если вы поместите;
в начале, то вы можете сохранить байт, удалив его сразу, а не после того, как он преобразуется в 0.Ом , 4 байта
Попробуйте онлайн!
В основном прямой порт MATL и 05AB1E отвечает. Использует
true
для четных иfalse
нечетных.источник
к, 9 байт
Выход
1
дляodd
, и0
для даже. Попробуйте онлайн.Преобразованный в псевдокод, это будет:
источник
Скала , 19 байт
Попробуйте онлайн!
источник
Brain-Flak ,
946866 байтПопробуйте онлайн!
Это кажется немного длинным для задачи. Там может быть более удобный способ сделать это.
объяснение
Сначала мы вычисляем сумму стека с помощью:
Мы проходим весь стек, добавляя этот результат к каждому элементу и определяем сопряжение
Здесь используется довольно крутой алгоритм мода 2, который я придумал для этой задачи.
Это толкает 1 к уменьшению входного значения, пока входное значение не достигнет нуля каждый раз, выполняя
1-n
1, которое мы поместили ранее, затем удаляет входное значение.источник
Мудрый ,
5452 байтаПопробуйте онлайн!
объяснение
Этот код был бы намного короче, если бы для замены двух верхних элементов не понадобилось так много байтов. Текущая запись
Это, к сожалению, составляет большую часть кода.
Сначала мы берем сумму XOR стека
Затем мы XOR это с каждым элементом и элемент с последним битом обнуляется
источник
Ява ,
8178 байт3 байта благодаря Кевину Круассену
Попробуйте онлайн!
Изменяет массив на месте.
источник
void f(int[]a){int s=0,i=a.length;for(int x:a)s+=x;for(;i-->0;a[i]=s-a[i]&1);}
AWK , 64 байта
Попробуйте онлайн!
Выводит a
0
для четных и1
нечетных сумм, разделенных символами новой строки. Единственное даже немного нестандартное мышление заключалось в размещенииprint
команды внутриfor
шаг «увеличения». Я попробовал несколько «умных» способов печати, но они не сохранили байты.Просто для хихиканья, если вы не хотите перевода строки:
который имеет тот же счетчик байтов, что и выше, но немного более тупой.
источник
Swift - 55 байт
Наконец-то бьет С! Кроме того, 0 для четного, 1 для нечетного
Функция, с использованием:
g(a: [1,2,3,2,1] // => 0 1 0 1 0
Проверьте это!
источник
(x-y)%2
наx-y&1
Аксиома, 45 байт
нет проверки на тип ввода, возможен пересчет суммы "a" каждого элемента ... тесты
источник
Юлия 1,0 , 17 байт
Попробуйте онлайн!
источник