Entrada
- Una lista de entre 1 y 255 enteros positivos (inclusive), cada uno en el rango de 1 a 2 32-1 (inclusive).
- Su formato de entrada no necesita ser idéntico a los casos de prueba.
- Se requiere la entrada sin ceros a la izquierda para ser aceptada.
- No es necesario aceptar entradas con ceros a la izquierda.
- Puede usar cualquier delimitador que desee entre los enteros.
- Un entero puede estar representado por una cadena, pero los dígitos individuales de un entero específico deben ser contiguos.
- Puede elegir usar cualquier base para la entrada (incluidos binarios y unarios), siempre que la salida también esté en esa base.
Salida
- Un solo entero.
- La salida no debe tener ceros a la izquierda.
- La salida debe estar en la misma base que la entrada.
- La salida se puede calcular de la forma que desee, pero debe coincidir con el resultado del siguiente cálculo:
Calculando biplex
- Los bits de una representación binaria están numerados desde la derecha a partir de cero, por lo que el bit i está en la columna que representa 2 i .
- El i ésimo Bitsum es la suma de los i th bits de las representaciones binarias de cada uno de los números de entrada.
- El máximo de suma de bits es el valor más alto tomado por las sumas de bits.
- El mínimo de suma de bits es el valor más bajo distinto de cero tomado por las sumas de bits.
- El i ésimo dígito de la representación binaria de la salida es:
- 1 si la i ésima suma de bits es igual a la suma de bits máxima o la suma de bits mínima.
- 0 de lo contrario.
Ejemplo trabajado
Este ejemplo usa binario para entrada y salida.
Input: 100110
1101110
1100101
_______
Bitsums: 2301321
Output: 101101
El máximo de suma de bits es 3 y el mínimo de suma de bits es 1, por lo que la salida tiene 1 en todas partes que la suma de bits es 3 o 1, y 0 en todas partes.
Casos de prueba
Los casos de prueba están en la forma:
Input => Output
Los casos de prueba en binario:
[1] => 1
[10] => 10
[1, 10, 101] => 111
[11111111111111111111111111111111] => 11111111111111111111111111111111
[10010010010010010010010010010010, 10101010101010101010101010101010, 11011011011011011011011011011011] => 11100011100011100011100011100011
[10001011100010100110100101001001, 10110000111110010000111110111010, 1101110001101101011010010100101, 1010101010001011101001001010101] => 11
Los mismos casos de prueba en decimal:
[1] => 1
[2] => 2
[1, 2, 5] => 7
[4294967295] => 4294967295
[2454267026, 2863311530, 3681400539] => 3817748707
[2341103945, 2969112506, 1849078949, 1430639189] => 3
Tabla de clasificación
Gracias al fragmento de la tabla de posiciones de Martin
El operador se llamó biplex, abreviatura de plano binario extremo, luego de una discusión en el chat .
code-golf
base-conversion
binary
trichoplax
fuente
fuente
You may choose to use any base for input and output (including binary and unary), provided they are both in the same base
. Así que sí,Respuestas:
Gelatina, no competidora
14 bytes Esta respuesta no es competitiva ya que el desafío es anterior a la creación de Jelly.
Pruébalo en línea!
Cómo funciona
fuente
Pyth,
2625 bytesPruébelo en línea: Demostración o conjunto de pruebas
Explicación
fuente
_B
uso es brillanteJ,
3130242321 bytesEste es un verbo tácito y monádico que toma una lista de enteros decimales y devuelve su biplex decimal.
¡Gracias a @Zgarb por sus sugerencias, que ahorraron 4 bytes directamente y prepararon el camino para 2 más!
¡Gracias a @randomra por jugar 2 bytes más!
Casos de prueba
Cómo funciona
fuente
Minkolang 0.10 ,
10979 bytesLa entrada y la salida están en decimal. Pruébalo aquí.
Explicación
Versión antigua:
Pruébalo aquí!
Explicación
El quid de la cuestión es que la función de matriz se usa mucho (
a A
) para almacenar los bits, de los cuales se encuentran el mínimo y el máximo, y luego1
s y0
s se emiten adecuadamente, con el volcado de los principales0
s en dos lugares.fuente
Brainfuck , 619 bytes
Primera respuesta en demasiado tiempo aquí, ¡así que pensé que haría una buena!
¿Gané ... gané?
Este programa espera nuevas líneas (ASCII
10
) después de cada número binario y requiere un espacio (ASCII32
) al final.Pruebas de funcionamiento:
(Nuevas líneas agregadas después de cada caso con
++++++++++.
agregadas al final del programa)Explicación
Sigue siendo un trabajo en progreso, pero lento. Por falta de tiempo, acabo de copiar las notas que hice mientras escribía este programa, que será suficiente para una explicación por ahora:
fuente
CJam, 27 bytes
Toma datos como una lista de estilo CJam de base 10. Pruébalo aquí. Alternativamente, ejecute todos los casos de prueba (el script descarta el resultado esperado y convierte el formato de entrada según sea necesario).
Explicación
fuente
1
s en esos bits que corresponden a los planos de bits donde ocurrieron los mínimos y máximos.JavaScript (ES6),
215185176 bytesUso
Explicación
fuente
f=(a)=>{}
=f=a=>{}
2) Podría convertir susfor...in
bucles enfor...of
bucles, ahorrando algunos bytes:for(i in a)for(b=a[i]...
=for(i of a)for(b=i...
,for(i in s)r=s[i],d=...
=for(r of s)d=...
3) Bitwise O|
cambia automáticamente verdadero a 1 y falso a 0, asío+=r==q|r==d?1:0;
es lo mismoo+=r==q|r==d;
.return parseInt(o,2)
a:return+('0b'+o)
s[l-d-1]=(s[l-d-1]|0)
cons[T=l-d-1]=(s[T]|0)
. Para afeitarse más 2, reemplaceb=i.toString(2),l=b.length,d=l
cond=l=(b=i.toString(2)).length
.Julia, 141 bytes
Sin golf:
fuente
Simplex v.0.7 , 38 bytes
Simpl ified comentarios. Entrada en binario, no hay intérprete trabajando en este momento. Esperemos que los comentarios sean suficientes.
fuente
Octava, 50 bytes
Ejemplo:
fuente
@(a)
define una función anónima que toma un vector de entradaa
.[""
fuerza la salida en una cadena (creo).(b=sum(a-48))
defineb
ser el vector que contiene los bits.b==max(b)
será un vector que tiene un1
en un lugar dado si el bitum allí es un máximo, y un valor distinto0
.b(b>0)
es un vector de cada elementob
mayor que0
, por lo queb==min(b(b>0))
es un vector que contiene un1
cuando el bit es el mínimo, y de lo0
contrario. Entonces es OR juntos, y+48
para ASCII.function o=b(i)
(nueva línea)r=sum(i>48);o=['' (r==max(r)|r==min(r))+48];
JavaScript (ES6), 158
Una función con un parámetro de matriz numérica, que devuelve un número. Con el mismo recuento de bytes, podría obtener un parámetro de matriz de cadena (que contiene representaciones de base 2) y devolver una cadena de base 2: simplemente mueva el
.toString(2)
al final despuésr
.fuente
Haskell,
198182178161 caracteresTodavía soy principiante en el golf. Solo 80 reputación proviene de la respuesta.
Como funciona.
En lugar de relleno, invierto la matriz y luego agrego usando el usuario definido (&). No uso foldl1 (zipWith (+)) que es más corto porque zipWith eliminará el elemento superflous. Luego encuentro el mínimo máximo y distinto de cero, que también requería una función definida por el usuario. Luego hago coincidir el elemento con el máximo y el mínimo distinto de cero, 1 si coincide, 0 si no coincide. Luego lo invertimos y lo convertimos en número binario.
QUE HACER:
Data.List
fuente
k
,c
solo se usa una vez, por lo que no es necesario incluirlo en lawhere
cláusula. Utilizarla directamente:...||(x==a#b)...
. ¿Por qué las llaves? Enl
:concat.map show
esconcatMap show
o aún mejor>>=
:l=(>>=show).v...
. (Nota: también hay lo=<<
que hace lo mismo, pero con argumentos invertidos:)(show=<<).v...
.>>=
y=<<
trabaje en el contexto de la lista aquí y haga cosas diferentes en función u otros contextos.[]
en los últimos casos de&
y#
con_
:b&_=b
y_#l=l
.(x==b)||(x==c)
(o(x==b)||(x==a#b)
cuando lo eliminec
) se puede reemplazar porelem x[b,c]
(resp:)elem x[b,a#b]
.u=maximum
yk a=m(\x->fromEnum$elem x[u a,a#u a])a
debería funcionar_&a=a
, debe quedarse[]&a=a
, de lo contrario la primera lista se pierde si la segunda está vacía. Úselo_
solo en el último caso, tal vez ese sea su error.Python 3,
181126122 bytes(Eliminé la mayoría de las barras de recuento de bytes porque se estaba volviendo un poco ridículo). 21 bytes de descuento gracias a Eliminé la Sp3000 !
Ligeramente menos golfizado:
La entrada se espera en binario con solo espacios que separan los números. La salida también está en binario.
fuente
Javascript,
154150 bytesGracias por el método edc65 para el cálculo mínimo / máximo, acortó mi código en 4 bytes.
Explicación
fuente
f=i=>(m=0,r=[],i.map(n=>{for(k=32;k--;n=n/2|0)r[k]=~~r[k]+n%2}),r.map(n=>m+=m+(n==Math.min(...r.filter(x=>x))|n==Math.max(...r))),m)
ShapeScript , 186 bytes
Un lenguaje importante e inútil para un operador importante e inútil.
I / O está en binario. El programa espera cada número en una línea separada, cada una terminando con un salto de línea.
Pruébalo en línea!
Casos de prueba
fuente
APL, 27 bytes
Esta es una función monádica que toma una lista de enteros decimales y devuelve su biplex decimal.
Pruébelo en línea en la demostración ngn / apl .
Cómo funciona
fuente
Wolfram Language, 113 bytes
Esta versión toma la entrada de una ventana emergente, con los números ingresados en la forma "{x, y, z, ...}", (sin comillas).
Entrada:
Salida:
Toma entrada en un Manipulado dinámico como una cadena de la forma "{x, y, z}" con x, y y z como enteros de base 10 (con o sin ceros a la izquierda). La salida también está en la base 10.
Hay otras formas de ingresar esto de una manera que ahorraría en el recuento de caracteres, pero creo que esta solución es un uso elegante de una GUI dinámica que realiza el cálculo
Si desea ejecutar esto en la nube, podemos usar CloudDeploy:
Sin embargo, la implementación en la nube eleva el número de personajes hasta 256
La entrada al FormPage también es una cadena de la forma "{x, y, z}" con x, y y z como enteros de base 10.
Lo desplegué en la nube yo mismo y puedes probarlo en https://www.wolframcloud.com/objects/97b512df-64f8-4cae-979b-dba6d9622781
fuente
Pitón 3, 197
Toma en el espacio delimitado números binarios.
Versión sin golf:
fuente
C #, 255
Un programa completo, ingresado como argumentos de línea de comando - separados por espacios - en decimal.
Más legible:
fuente
Rubí, 127 bytes
Toma una matriz como entrada.
fuente
CoffeeScript, 194 bytes
Toma la entrada como números binarios separados por coma, salidas en binario.
Intentalo.
fuente
GolfScript, 46 bytes
Pruébelo en línea en Web GolfScript .
Casos de prueba
fuente
C ++, 192 bytes
Acepta la entrada de una matriz de enteros sin signo de 32 bits y un recuento de elementos en esa matriz.
Sin golf:
fuente