Você recebe uma matriz A de n números inteiros estritamente positivos, com n ≥ 2 .
Sua tarefa é mapear cada entrada A i para:
- 1 se A j mod A i for ímpar para cada j, de modo que 1 ≤ j ≤ n e j ≠ i
- 2 se A j mod A i for par para cada j tal que 1 ≤ j ≤ nej and i
- 0 caso contrário (paridades mistas)
Exemplo
Para A = [73, 50, 61] , temos:
- 50 mod 73 = 50 , 61 mod 73 = 61 → misturado
- 73 mod 50 = 23 , 61 mod 50 = 11 → todos ímpares
- 73 mod 61 = 12 , 50 mod 61 = 50 → tudo par
Portanto, a saída esperada é [0, 1, 2] .
Regras
- Você pode usar três valores distintos (de qualquer tipo) em vez de 0 , 1 e 2 , desde que sejam consistentes. Especifique seu mapeamento se você não estiver usando o descrito no desafio.
- Se houver alguma dúvida sobre isso, zero é par .
- Isso é código-golfe , então a resposta mais curta em bytes vence!
Casos de teste
[ 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]
e[1, 1]
trabalho?Respostas:
Python 2 ,
686766 bytes-1 byte graças ao Sr. Xcoder
-1 byte graças ao ovs
Experimente online!
Retorna
1,0,2
vez0,1,2
.fonte
(k<1)
com0**k
por -1 byte.Geléia , 9 bytes
Retorna [1, 1], [0, 1], [1] em vez de 0, 1, 2 .
Experimente online!
Como funciona
fonte
‘ṬUḄ
porQ€Ḅ
para salvar um byte?Q€
poderia retornar[0, 1]
ou[1, 0]
.[1]
,[1,1]
e[0,1]
são três valores distintos de modo%þœ-€0Ḃ‘Ṭ
deve ser aceitável para 9. EDIT - ah eu vejo que você fez esta pergunta exata :)¹-Ƥ%"%2‘Ṭ
MATL , 12 bytes
Isto usa
0
,-1
,1
em vez de0
,1
,2
respectivamente.Experimente online! Ou verifique todos os casos de teste .
Explicação
fonte
C (gcc) ,
118114979291 bytesquatrovinte e um bytes graças a Peter Cordes ; sugerindo usar um mapeamento de valor de saída diferente;[0 1 2] ~ [3 2 1]
.[0 1 2] ~ [ ]
.for(i=0;i<n;i++,putchar...
parafor(i=~0;++i<n;putchar...
.Experimente online!
fonte
f(I,7)
substitui o primeiro elemento deI[]
(A[]
em f ()) por um dos argumentos que você está usando como locais.f()
assume que arg foi passado na pilha pelo chamador, mas o chamador não sabia disso e o que realmente está na pilha acima do endereço de retorno éA[0]
. (ou seja, esse UB causout
eA[0]
tem o mesmo endereço). De qualquer forma, este é apenas UB na sua função de teste no TIO.execlp("/usr/bin/objdump", "objdump", "-drwC", "-Mintel", argv[0], 0);
ao main para obter o ASM do gcc 7.2.1 do TIO, que não correspondia exatamente ao meu gcc 7.2.1 do Arch Linux. Depois de transformar essa desmontagem novamente na fonte asm para a função de chamada, eu poderia reproduzi-la localmente dentro do gdb e confirmar exatamente o que estava acontecendo.o|=1<<(A[j]%A[i]%2)
sem precisar de decodificação sofisticadao
.o|=1<<...
vez de algo do tipoo|=1<<(t=...
.Mathematica,
574948 bytesIsso retorna:
False.True
para 0 (misto)True.True
para 1 (todos ímpares)False.False
para 2 (todos iguais)Experimente online!
Aqui está uma alternativa um pouco mais longa (49 bytes):
Este retorna:
1
para 0 (misto)-1
para 1 (todos ímpares)0
para 2 (todos iguais)Experimente online!
fonte
Vermelho , 101 bytes
Experimente online!
Retorna
1 0
para misto,1
para ímpar e0
para parfonte
JavaScript (ES6), 46 bytes
Retorna -1 (par), 1 (ímpar) e 0 (misto).
Como funciona:
O
d
acumulador será:!a[d+1]
== falso,!d
== 1,false - 1
== -1 )!a[d+1]
== verdadeiro,!d
== 0,true - 0
== 1 )!a[d+1]
== falso,!d
== 0,false - 0
== 0 )Casos de teste:
Mostrar snippet de código
fonte
J ,
2720 bytesExperimente online!
Usa [1 0] [1] [0] em vez de 0 1 2
Explicação:
|/~
- cria uma tabela com os restantes:2|
ímpar ou par? :<@~.@}:@\:"1
- classifique, solte o último elemento (sempre um zero), mantenha os elementos únicos e encaixe cada linha:fonte
2/:~@:|"1]|1]\.]
retorno de uma lista de pares.Ruby ,
5856 bytesRetorna [0, 1], [1], [0] em vez de 0, 1, 2 (ou seja, [0] para todos pares, [1] para todos ímpares e [0, 1] para mistos).
Experimente online!
fonte
Perl, 38 bytes
Inclui
+3
para-p
Saídas 1 para todos os pares, 2 para todos os ímpares, 3 para misto
fonte
Limpo ,
956563 bytesExperimente online!
Como lambda, pegando
[Int]
e retornando[Int]
, mapeando para:0
: misturado1
: tudo par-1
: todos ímparesfonte
Perl 5,
7169 + 1 (-a
) = 70 bytesTry it online!
fonte
Pari/GP, 42 bytes
Returns
[0, 0], [0, 1], [1, 0]
instead of0, 1, 2
.Try it online!
fonte
Java 8,
9189 bytestruetrue
instead of2
for evenfalsefalse
instead of1
for oddtruefalse
instead of0
for mixedExplanation:
Try it online.
fonte
Clojure, 82 bytes
A complete example with output conversion:
fonte