Tarefa
Dada uma matriz de números inteiros positivos, substitua cada elemento pela paridade da soma dos outros elementos. A matriz é garantida para ter pelo menos 2 elementos.
Definição
- Paridade: se um número é ímpar ou par.
Exemplo
Para a matriz [1,2,3,1]
:
- Substitua
1
pela paridade de2+3+1
, ieeven
. - Substitua
2
pela paridade de1+3+1
, ieodd
. - Substitua
3
pela paridade de1+2+1
, ieeven
. - Substitua
1
pela paridade de1+2+3
, ieeven
.
Saída: [even, odd, even, even]
Entrada
Uma matriz de número inteiro positivo.
Você pode tomá-lo como uma matriz adequada ou como uma sequência de números inteiros positivos separados por avanço de linha.
Você pode assumir que a matriz e os valores internos estão dentro da capacidade de manipulação do seu idioma.
Saída
Uma matriz de dois valores consistentes , um representando odd
, um representando even
.
Você pode produzi-lo como uma sequência separada por avanço de linha dos dois valores.
Casos de teste
Entradas:
[1, 2, 3, 1]
[1, 2, 3, 2, 1]
[2, 2]
[100, 1001]
Saídas:
[even, odd, even, even]
[even, odd, even, odd, even]
[even, even]
[odd, even]
Nota: você pode escolher outros valores consistentes além de odd
e even
.
Pontuação
Isso é código-golfe . A resposta mais curta em bytes vence.
A brecha padrão se aplica.
fonte
_SḂ
JavaScript (ES6),
38 3632 bytesUsa
0
para pares e1
ímpares.Teste
fonte
c-b&1
em vez de(c-b)%2
eval(a.join`+`)
maisa.reduce((x,y)=>x+y)
. Isso é inteligenteHaskell, 20 bytes
Usa
True
para valores ímpares eFalse
para valores pares.Experimente online!
Subtraia cada elemento da soma da lista e teste se é ímpar.
f
virou-se para pointfree também tem 20 bytes:map=<<(odd.).(-).sum
.fonte
MATL ,
5, 4 bytesExperimente online!
Um byte economizado graças ao Dennis!
Isso fornece '1' para ímpar e '0' para par. Explicação:
fonte
Alice ,
3128 bytesExperimente online!
O formato de entrada não importa, desde que os números inteiros sejam separados. O formato de saída é separado por avanço de linha.
O layout provavelmente ainda não é o ideal, mas ainda não encontrei uma maneira de encurtar isso.
Explicação
fonte
Pitão,
76 bytes-1 Byte graças a @KZhang
Saídas 1 para ímpar, 2 para par.
Tente!
Explicação
fonte
%_2
para um GCDi2_
, você pode fazer od
implícito alterar o código parami2-sQ
, salvando um byte. As saídas são alteradas para 2 para par e 1 para ímpar.05AB1E (legado) ,
43 bytesExperimente online!
fonte
D
, pois a entrada é implicitamente.Python 2 ,
3331 bytes-2 bytes graças a Leaky Nun
Experimente online!
fonte
sum(x)-z&1
em vez de(sum(x)-z)%2
sum(x,z)%2
também funcionariaR, 21 bytes
lê a lista de stdin e retorna 0 para par, 1 para ímpar. vincula a entrada à variável
n
dentro da chamada emsum
vez de chamá-la para fora, ou seja,n=scan();(sum(n)-n)%%2
Experimente online!
fonte
Mathematica, 13 bytes
ou
fonte
Clojure, 30 bytes
Subtrai todos os valores de cada valor por vez, por exemplo, com a entrada,
[a b c d]
o 2º valor calculado éb - a - b - c - d
=-(a + c + d)
. A saída éfalse
para par etrue
ímpar.Mas você também pode usar
+
e calcular cada termo subseqüente duas vezes para não afetar a paridade.fonte
CJam , 10 bytes
Este é um bloco anônimo (função) que pega a entrada da pilha e a substitui pela saída.
Experimente online!
Explicação
Considere entrada
[1 2 3 1]
.fonte
J , 6 bytes
Experimente online!
fonte
APL (Dyalog Unicode) ,
197 bytesGolfou 12 bytes graças a @ Adám
Experimente online!
fonte
Japonês , 7 bytes
Experimente online!
Explicação
fonte
Perl 5, 31 bytes
Saídas
1
para ímpar e0
par.fonte
perldoc perlsub
diz : "A assinatura faz parte do corpo de uma sub-rotina. Normalmente, o corpo de uma sub-rotina é simplesmente um bloco de código".sub
sem quebrá-lo.sub
, por exemplo, depoissort
ougrep
ou como argumento para outra sub-rotina. Vale a pena perguntar sobre o Code Golf Meta .sub
apenas se for utilizada numa função de protótipo (sort
egrep
for mais ou menos prototipada). Mas, caso contrário,sub
é necessário. Independentemente, jogar 3 bytes por omissãosub
não é realmente interessante.Clojure (Script), 36 bytes
A saída é
true
para ímpar efalse
para par. Tanto a saída como a entrada são sequências.fonte
PHP, 50 bytes
Versões Online
1 para ímpar, 0 para par
Saída como sequência separada por
_
PHP, 72 bytes
Saída como uso de matriz
array_map
fonte
?:0
que não faz nada.foreach($_GET as$v)echo array_sum($_GET)-$v&1,_;
C,
6862 bytes1 para ímpar, 0 para par
Teste Detalhado Online
fonte
Retina ,
4038 bytesExperimente online! Saídas 1 para ímpar e 0 para par. Explicação: As duas primeiras linhas duplicam a entrada uma vez para cada número na entrada, mas sem o próprio elemento. Isso cria uma linha em branco extra que é excluída. A entrada é então convertida de decimal para unária, os espaços são excluídos e a paridade calculada. Paridade uniforme é então convertida em zero e os resultados são reunidos novamente em uma linha. Editar: salvou 2 bytes graças a @FryAmTheEggman. Eu tentei algumas outras versões que são conceitualmente mais agradáveis, mas que levam muitos bytes para serem expressas:
Altera todas as entradas para sua paridade e, em seguida, vira todas as suas paridades se o total tiver paridade ímpar.
Soma uma duplicata da entrada, pega a paridade de tudo, inverte as paridades se a soma for ímpar e exclui a soma novamente.
fonte
;
s de volta em espaços. Se você colocar o;
no início, poderá salvar um byte, excluindo-o imediatamente, em vez de depois que ele se converta em 0.Ohm , 4 bytes
Experimente online!
Basicamente uma porta direta do MATL e 05AB1E respostas. Usa
true
para pares efalse
ímpares.fonte
k, 9 bytes
A saída é um
1
paraodd
e um0
para par. Experimente online.Convertido em pseudocódigo, seria:
fonte
Scala , 19 bytes
Experimente online!
fonte
Flak cerebral ,
946866 bytesExperimente online!
Isso parece um pouco longo para a tarefa. Pode haver uma maneira mais conveniente de fazer isso.
Explicação
Primeiro calculamos a soma da pilha com:
Percorremos toda a pilha, adicionando esse resultado a cada elemento e determinando a paridade
Isso usa um algoritmo mod 2 bem legal que eu criei para esse desafio.
Isso empurra 1 sob os decréscimos de entrada até que a entrada chegue a zero cada vez que executa
1-n
o 1 colocado anteriormente e, em seguida, remove a entrada.fonte
Sábio ,
5452 bytesExperimente online!
Explicação
Esse código seria muito menor se não fossem necessários tantos bytes para trocar os dois principais elementos. O registro atual é
Infelizmente, isso constitui a maioria do código.
Primeiro pegamos a soma XOR da pilha
Em seguida, fazemos XOR isso com cada elemento e o elemento com o último bit zerado
fonte
Java ,
8178 bytes3 bytes graças a Kevin Cruissen
Experimente online!
Modifica a matriz no local.
fonte
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 bytes
Experimente online!
Emite a
0
para somas pares e1
ímpares separadas por novas linhas. O único pensamento até um pouco fora da caixa foi colocar oprint
comando dentro dofor
etapa "incremento". Tentei algumas maneiras "inteligentes" de imprimir, mas elas não salvaram bytes.Apenas para rir, se você não quiser novas linhas:
que tem a mesma contagem de bytes que acima, mas é um pouco mais obtuso.
fonte
Swift - 55 bytes
Finalmente bate C! Além disso, 0 para par, 1 para ímpar
Uma função, com uso:
g(a: [1,2,3,2,1] // => 0 1 0 1 0
Confira!
fonte
(x-y)%2
x-y&1
Axioma, 45 bytes
sem verificação do tipo de entrada, possível recálculo da soma "a" de cada elemento ... testes
fonte
Julia 1.0 , 17 bytes
Experimente online!
fonte