Tarea
Dada una matriz de enteros positivos, reemplace cada elemento con la paridad de la suma de los otros elementos. Se garantiza que la matriz tenga al menos 2 elementos.
Definición
- Paridad: si un número es par o impar.
Ejemplo
Para la matriz [1,2,3,1]
:
- Reemplazar
1
con la paridad de2+3+1
, es decireven
. - Reemplazar
2
con la paridad de1+3+1
, es decirodd
. - Reemplazar
3
con la paridad de1+2+1
, es decireven
. - Reemplazar
1
con la paridad de1+2+3
, es decireven
.
Salida: [even, odd, even, even]
Entrada
Una matriz de enteros positivos.
Puede tomarlo como una matriz adecuada o como una cadena de enteros positivos separados por salto de línea.
Puede suponer que la matriz y los valores dentro están dentro de la capacidad de manejo de su idioma.
Salida
Una matriz de dos valores consistentes , uno que representa odd
y otro que representa even
.
Puede generarlo como una cadena separada por salto de línea de los dos valores.
Casos de prueba
Entradas:
[1, 2, 3, 1]
[1, 2, 3, 2, 1]
[2, 2]
[100, 1001]
Salidas:
[even, odd, even, even]
[even, odd, even, odd, even]
[even, even]
[odd, even]
Nota: puede elegir otros valores consistentes que no sean odd
y even
.
Tanteo
Este es el código de golf . La respuesta más corta en bytes gana.
Se aplica la escapatoria estándar .
fuente
_SḂ
JavaScript (ES6),
38 3632 bytesUsos
0
para pares e1
impares.Prueba
fuente
c-b&1
lugar de(c-b)%2
eval(a.join`+`)
mása.reduce((x,y)=>x+y)
. Eso es inteligenteHaskell, 20 bytes
Usos
True
para valores impares yFalse
para valores pares.Pruébalo en línea!
Resta cada elemento de la suma de la lista y prueba si es impar.
f
volvió a pointfree también tiene 20 bytes:map=<<(odd.).(-).sum
.fuente
MATL ,
5, 4 bytesPruébalo en línea!
¡Un byte guardado gracias a Dennis!
Esto da '1' para impar y '0' para par. Explicación:
fuente
Alicia ,
3128 bytesPruébalo en línea!
El formato de entrada no importa mientras los enteros estén separados. El formato de salida está separado por salto de línea.
El diseño probablemente todavía no sea óptimo, pero todavía no he encontrado una manera de acortar esto.
Explicación
fuente
Pyth,
76 bytes-1 Byte gracias a @KZhang
Salidas 1 para impar, 2 para par.
¡Intentalo!
Explicación
fuente
%_2
a un GCDi2_
, incluso puede hacerd
que el código implícito cambie ami2-sQ
, guardando un byte. Las salidas se cambian a 2 para pares y 1 para impares.05AB1E (heredado) ,
43 bytesPruébalo en línea!
fuente
D
, ya que la entrada es implícita.Python 2 ,
3331 bytes-2 bytes gracias a Leaky Nun
Pruébalo en línea!
fuente
sum(x)-z&1
lugar de(sum(x)-z)%2
sum(x,z)%2
también funcionaríaR, 21 bytes
lee la lista de stdin y devuelve 0 para pares, 1 para impares. enlaza la entrada a la variable
n
dentro de la llamada ensum
lugar de llamarla afuera, es decir,n=scan();(sum(n)-n)%%2
Pruébalo en línea!
fuente
Mathematica, 13 bytes
o
fuente
Clojure, 30 bytes
Resta todos los valores de cada valor, por ejemplo, con la entrada,
[a b c d]
el segundo valor calculado esb - a - b - c - d
=-(a + c + d)
. La salida esfalse
par etrue
impar.Pero también podría usar
+
y calcular cada término subsiguiente dos veces para que no afecte la paridad.fuente
CJam , 10 bytes
Este es un bloque anónimo (función) que toma la entrada de la pila y la reemplaza por la salida.
Pruébalo en línea!
Explicación
Considere la entrada
[1 2 3 1]
.fuente
J , 6 bytes
Pruébalo en línea!
fuente
APL (Dyalog Unicode) ,
197 bytesGolfó 12 bytes gracias a @ Adám
Pruébalo en línea!
fuente
Japt , 7 bytes
Pruébalo en línea!
Explicación
fuente
Perl 5, 31 bytes
Salidas
1
para pares e impares0
.fuente
perldoc perlsub
dice : "La firma es parte del cuerpo de una subrutina. Normalmente, el cuerpo de una subrutina es simplemente un bloque de código entre paréntesis".sub
sin romperlo.sub
, por ejemplo, despuéssort
ogrep
o como un argumento a otra subrutina. Vale la pena preguntar sobre esto en Code Golf Meta .sub
solo si se usa en una función prototipada (sort
ygrep
es más o menos prototipada). Pero de lo contrario,sub
se requiere. De todos modos, jugar al golf 3 bytes omitiendosub
no es realmente interesante.Clojure (Script), 36 bytes
La salida es
true
para impar yfalse
para par. Tanto la salida como la entrada son secuencias.fuente
PHP, 50 bytes
Versiones en linea
1 para impar, 0 para par
Salida como cadena separada con
_
PHP, 72 bytes
Salida como uso de matriz
array_map
fuente
?:0
, no hace nada.foreach($_GET as$v)echo array_sum($_GET)-$v&1,_;
C,
6862 bytes1 para impar, 0 para par
Prueba detallada en línea
fuente
Retina ,
4038 bytesPruébalo en línea! Salidas 1 para impar y 0 para par. Explicación: Las dos primeras líneas duplican la entrada una vez para cada número en la entrada, pero sin el elemento en sí. Esto crea una línea en blanco adicional que luego se elimina. La entrada se convierte luego de decimal a unario, los espacios se eliminan y se calcula la paridad. Incluso la paridad se convierte a cero y los resultados se vuelven a unir en una línea. Editar: Guardado 2 bytes gracias a @FryAmTheEggman. Intenté algunas otras versiones que son conceptualmente más agradables pero que requieren demasiados bytes para expresarse:
Cambia todas las entradas a su paridad, luego voltea todas sus paridades si el total tiene paridad impar.
Suma un duplicado de la entrada, luego toma la paridad de todo, luego invierte las paridades si la suma es impar, luego elimina la suma nuevamente.
fuente
;
en espacios. Si coloca el;
al principio, puede guardar un byte eliminándolo inmediatamente en lugar de después de que se convierta en un 0.Ohm , 4 bytes
Pruébalo en línea!
Básicamente, un puerto directo de la MAT y 05AB1E respuestas. Usos
true
para pares efalse
impares.fuente
k, 9 bytes
El resultado es un
1
paraodd
y un0
para incluso. Pruébalo en línea.Convertido a pseudocódigo, sería:
fuente
Scala , 19 bytes
Pruébalo en línea!
fuente
Brain-Flak ,
946866 bytesPruébalo en línea!
Esto parece un poco largo para la tarea. Puede haber una forma más conveniente de hacer esto.
Explicación
Primero calculamos la suma de la pila con:
Pasamos por toda la pila agregando ese resultado a cada elemento y determinamos la paridad
Esto utiliza un algoritmo de mod 2 bastante bueno que se me ocurrió para este desafío.
Esto empuja 1 debajo de los decrementos de entrada hasta que la entrada llega a cero cada vez que se realiza
1-n
al 1 que colocamos anteriormente, luego elimina la entrada.fuente
Sabio ,
5452 bytesPruébalo en línea!
Explicación
Este código sería mucho más corto si no tomara tantos bytes para intercambiar los dos elementos superiores. El registro actual es
Desafortunadamente, esto constituye la mayoría del código.
Primero tomamos la suma XOR de la pila
Luego XOR esto con cada elemento y el elemento con el último bit puesto a cero
fuente
Java ,
8178 bytes3 bytes gracias a Kevin Cruissen
Pruébalo en línea!
Modifica la matriz en el lugar.
fuente
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
Pruébalo en línea!
Emite a
0
para sumas pares y1
para sumas impares separadas por nuevas líneas. El único pensamiento un poco fuera de lo común fue colocar elprint
comando dentro delfor
paso de "incremento". Intenté algunas formas "inteligentes" de imprimir, pero no guardaron bytes.Solo por risitas, si no quieres nuevas líneas:
que tiene el mismo número de bytes que el anterior, pero es un poco más obtuso.
fuente
Swift - 55 bytes
¡Finalmente vence a C! Además, 0 para pares, 1 para impares
Una función, con uso:
g(a: [1,2,3,2,1] // => 0 1 0 1 0
¡Echale un vistazo!
fuente
(x-y)%2
conx-y&1
Axioma, 45 bytes
sin verificación del tipo de entrada, posible recálculo de la suma "a" de cada elemento ... pruebas
fuente
Julia 1.0 , 17 bytes
Pruébalo en línea!
fuente