Вам дан массив A из n строго положительных целых чисел с n ≥ 2 .
Ваша задача - сопоставить каждую запись A i с:
- 1, если A j mod A i нечетно для каждого j такого, что 1 ≤ j ≤ n и j ≠ i
- 2, если A j mod A i четно для каждого j такого, что 1 ≤ j ≤ n и j ≠ i
- 0 иначе (смешанные паритеты)
пример
Для A = [73, 50, 61] имеем:
- 50 мод 73 = 50 , 61 мод 73 = 61 → смешанный
- 73 мод 50 = 23 , 61 мод 50 = 11 → все нечетно
- 73 мод 61 = 12 , 50 мод 61 = 50 → все четные
Следовательно, ожидаемый результат равен [0, 1, 2] .
правила
- Вы можете использовать любые три различных значения (любого типа) вместо 0 , 1 и 2, если они согласованы. Пожалуйста, укажите ваше сопоставление, если вы не используете тот, который описан в конкурсе.
- Если есть какие-либо сомнения по этому поводу, ноль является четным .
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах!
Контрольные примеры
[ 1, 2 ] --> [ 2, 1 ]
[ 3, 4 ] --> [ 1, 1 ]
[ 1, 2, 3 ] --> [ 2, 1, 0 ]
[ 4, 4, 4 ] --> [ 2, 2, 2 ]
[ 73, 50, 61 ] --> [ 0, 1, 2 ]
[ 941, 459, 533 ] --> [ 1, 0, 0 ]
[ 817, 19, 928, 177 ] --> [ 1, 2, 1, 1 ]
[ 312, 463, 336, 729, 513 ] --> [ 0, 2, 0, 0, 0 ]
[ 53, 47, 33, 87, 81, 3, 17 ] --> [ 0, 0, 0, 1, 0, 2, 0 ]
[1]
,[0, 1]
и[1, 1]
работу?Ответы:
Python 2 ,
686766 байт-1 байт благодаря Mr. Xcoder
-1 байт благодаря ovs
Попробуйте онлайн!
Возвращает
1,0,2
вместо0,1,2
.источник
(k<1)
с0**k
на -1 байт.Желе , 9 байт
Возвращает [1, 1], [0, 1], [1] вместо 0, 1, 2 .
Попробуйте онлайн!
Как это устроено
источник
‘ṬUḄ
сQ€Ḅ
, чтобы сохранить байты?Q€
может вернуться[0, 1]
или[1, 0]
.[1]
,[1,1]
и[0,1]
три различных значения, поэтому%þœ-€0Ḃ‘Ṭ
должны быть приемлемы для 9. РЕДАКТИРОВАТЬ - ах, я вижу, вы задали этот точный вопрос :)¹-Ƥ%"%2‘Ṭ
MATL , 12 байт
При этом используется
0
,-1
,1
вместо того0
,1
,2
соответственно.Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
C (gcc) ,
118114979291 байтчетыредвадцать один байт благодаря Петру Кордесу ; предложение использовать другое отображение выходного значения;[0 1 2] ~ [3 2 1]
,[0 1 2] ~ [ ]
,for(i=0;i<n;i++,putchar...
кfor(i=~0;++i<n;putchar...
.Попробуйте онлайн!
источник
f(I,7)
перезаписывает первый элементI[]
(A[]
в f ()) одним из аргументов, которые вы используете в качестве локальных.f()
предполагается, что arg был передан в стеке вызывающей стороной, но вызывающая сторона этого не знала, и что в действительности находится в стеке выше адреса возвратаA[0]
. (т.е. этот UB вызвалt
иA[0]
иметь тот же адрес). В любом случае, это только UB в вашей тестовой функции на TIO.execlp("/usr/bin/objdump", "objdump", "-drwC", "-Mintel", argv[0], 0);
в main, чтобы получить ассемблер от gcc 7.2.1 TIO, который не совсем соответствовал моему Arch Linux gcc 7.2.1. Превратив эту разборку обратно в asm-источник для вызывающей функции, я мог бы воспроизвести ее локально внутри gdb и точно подтвердить, что происходит.o|=1<<(A[j]%A[i]%2)
без необходимости какого-либо необычного декодирования дляo
.o|=1<<...
вместо чего-то вродеo|=1<<(t=...
.Mathematica,
574948 байтЭто возвращает:
False.True
для 0 (смешанный)True.True
за 1 (все нечетно)False.False
на 2 (все ровно)Попробуйте онлайн!
Вот немного более длинная альтернатива (49 байтов):
Этот возвращает:
1
для 0 (смешанный)-1
за 1 (все нечетно)0
на 2 (все ровно)Попробуйте онлайн!
источник
Красный , 101 байт
Попробуйте онлайн!
Возвращает
1 0
для смешанного,1
для нечетного и0
для четногоисточник
JavaScript (ES6), 46 байт
Возвращает -1 (четное), 1 (нечетное) и 0 (смешанное).
Как это устроено:
d
Аккумулятор будет:!a[d+1]
== false,!d
== 1,false - 1
== -1 )!a[d+1]
== true,!d
== 0,true - 0
== 1 )!a[d+1]
== false,!d
== 0,false - 0
== 0 )Тестовые случаи:
Показать фрагмент кода
источник
J ,
2720 байтПопробуйте онлайн!
Использует [1 0] [1] [0] вместо 0 1 2
Объяснение:
|/~
- составляет стол с остатками:2|
нечетный или четный? :<@~.@}:@\:"1
- отсортировать, отбросить последний элемент (всегда ноль), сохранить элементы iquenique и пометить каждую строку:источник
2/:~@:|"1]|1]\.]
возвратом списка пар.Рубин ,
5856 байтВозвращает [0, 1], [1], [0] вместо 0, 1, 2 (то есть [0] для всех четных, [1] для всех нечетных и [0, 1] для смешанных).
Попробуйте онлайн!
источник
Perl, 38 байт
Включает
+3
в себя-p
Выходы 1 для всех четных, 2 для всех нечетных, 3 для смешанных
источник
Чисто ,
956563 байтаПопробуйте онлайн!
Как лямбда, взяв
[Int]
и вернувшись[Int]
, сопоставляя:0
: смешанный1
: все даже-1
: все странноисточник
Perl 5 ,
7169 + 1 (-a
) = 70 байтПопробуйте онлайн!
источник
Pari / GP , 42 байта
Возвращает
[0, 0], [0, 1], [1, 0]
вместо0, 1, 2
.Попробуйте онлайн!
источник
Java 8,
9189 байтtruetrue
вместо2
дажеfalsefalse
вместо1
нечетныхtruefalse
вместо0
смешанногоОбъяснение:
Попробуйте онлайн.
источник
Clojure, 82 байта
Полный пример с выходным преобразованием:
источник