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
1con la paridad de2+3+1, es decireven. - Reemplazar
2con la paridad de1+3+1, es decirodd. - Reemplazar
3con la paridad de1+2+1, es decireven. - Reemplazar
1con 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 oddy 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 oddy 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
0para pares e1impares.Prueba
fuente
c-b&1lugar de(c-b)%2eval(a.join`+`)mása.reduce((x,y)=>x+y). Eso es inteligenteHaskell, 20 bytes
Usos
Truepara valores impares yFalsepara valores pares.Pruébalo en línea!
Resta cada elemento de la suma de la lista y prueba si es impar.
fvolvió 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
%_2a un GCDi2_, incluso puede hacerdque 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&1lugar de(sum(x)-z)%2sum(x,z)%2también funcionaríaR, 21 bytes
lee la lista de stdin y devuelve 0 para pares, 1 para impares. enlaza la entrada a la variable
ndentro de la llamada ensumlugar de llamarla afuera, es decir,n=scan();(sum(n)-n)%%2Prué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 esfalsepar etrueimpar.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
1para pares e impares0.fuente
perldoc perlsubdice : "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".subsin romperlo.sub, por ejemplo, despuéssortogrepo como un argumento a otra subrutina. Vale la pena preguntar sobre esto en Code Golf Meta .subsolo si se usa en una función prototipada (sortygrepes más o menos prototipada). Pero de lo contrario,subse requiere. De todos modos, jugar al golf 3 bytes omitiendosubno es realmente interesante.Clojure (Script), 36 bytes
La salida es
truepara impar yfalsepara 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_mapfuente
?: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
truepara pares efalseimpares.fuente
k, 9 bytes
El resultado es un
1paraoddy un0para 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-nal 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
0para sumas pares y1para sumas impares separadas por nuevas líneas. El único pensamiento un poco fuera de lo común fue colocar elprintcomando dentro delforpaso 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)%2conx-y&1Axioma, 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