La tarea
Dado el conjunto
y un entero
encuentra el enésimo subconjunto.
De entrada y salida
N se da como un entero sin signo en stdin. Debe imprimir el subconjunto enésima en un formato adecuado para su idioma (esto puede incluir [1,2,3]
, {1,2,3}
, [1, 2, 3]
, 1 2 3
, 1,2,3
etc durante el tiempo que se trata de una legible por humanos del texto de formato).
Un poco sobre subconjuntos
Existe una relación entre subconjuntos y números en la base dos. Cada dígito
especifica si el i- ésimo elemento del conjunto está dentro del subconjunto. Por ejemplo, 00000000 sería el conjunto vacío y 10000001 es el subconjunto que contiene (el último y el primer elemento). Obtiene el enésimo subconjunto al convertir el número en la base 2 y luego el subconjunto incluye todos los elementos donde . El tercer subconjunto (3 = 00000011) contiene así . El dígito más a la derecha es el dígito # 0. Está bien imprimir . El conjunto no tiene que ser ordenado.[1,8]
[1,2]
[2,1]
Addendums:
Sí, el conjunto está fijado a 1..8
. El conjunto no es parte de la entrada. Entrada es simplemente N .
Sí, puede usar formularios de entrada alternativos.
Todas las salidas esperadas para todos los N : https://tio.run/##SyotykktLixN/f/fyNS02qIoP8soJd1CwSAg2kY32LPWPaoqs7jg/38A
1
a8
, o es cualquier conjunto?"123"
sería inequívoca. Es valido?Respuestas:
Jalea , 3 bytes
Pruébalo en línea!
Cómo funciona
fuente
R ,
5226 bytesPruébalo en línea!
Convierte la entrada a sus bits y devuelve los índices basados en 1 de dónde están
TRUE
. Eso lo convierte en un puerto de la respuesta de Dennis 'Jelly .Devuelve
integer(0)
, la lista vacía de enteros, para la entrada de0
.fuente
Python 2 , 40 bytes
Pruébalo en línea!
fuente
Perl 6 , 33 bytes
Pruébalo en línea!
fuente
Python 2 , 42 bytes
Pruébalo en línea!
fuente
K4 , 7 bytes
Solución:
Ejemplo:
Primero 10 ...
Explicación:
fuente
MATLAB / Octave ,
312927 bytesreducido de 2 bytes gracias a alephalpha
reducido de 2 bytes gracias a Giuseppe
Pruébalo en línea!
fuente
@(n)9-find(dec2bin(n,8)-48)
Japt, 7 bytes
Intentalo
Intentalo
fuente
Casco , 5 bytes
Toma datos como argumento de línea de comandos no en stdin ( espero que esto esté bien ), ¡ pruébelo en línea!
Explicación
fuente
Haskell ,
5554 bytesEmite el conjunto en orden inverso, ¡ pruébelo en línea!
Versión general, 56 bytes.
Pruébalo en línea!
Explicación
El término
mapM (pure [0,1]) [1..n]
genera la lista (n=4
)[[0,0,0,0],[0,0,0,1],[0,0,1,0],..,[1,1,1,1]]
, es decir. las representaciones binarias de[0..2^n-1]
. La indexación en él conn
nos da la representación binaria den
.Ahora podemos simplemente
zip
hacerlo con los números invertidos[1..n]
y solo mantener los elementos donde el dígito binario no es cero:fuente
Carbón , 11 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Si imprimir la respuesta horizontalmente sin espacios es aceptable, entonces se puede quitar el primer carácter. Explicación:
fuente
JavaScript (ES6), 37 bytes
+4 bytes si un separador es obligatorio
+3 bytes si este separador es una coma y se permite una coma inicial
Pruébalo en línea!
fuente
Perl 6 , 21 bytes
Pruébalo en línea!
Alternativa:
fuente
Lisp común, 57 bytes
Pruébalo en línea!
fuente
Haskell , 33 bytes
Pruébalo en línea!
37 bytes
Pruébalo en línea!
Casos de prueba de nimi.
fuente
J ,
1310 bytesPruébalo en línea!
fuente
Japt, 7 bytes
Pruébelo en línea
Japt, 7 bytes
Pruébelo en línea
fuente
C # (compilador interactivo de Visual C #) , 47 bytes
Pruébalo en línea!
Parece similar a la solución Java ahora, aunque se me ocurrió la mía de forma independiente.
fuente
Python 3.6, 58 bytes
fuente
Wolfram Language (Mathematica) , 32 bytes
Pruébalo en línea!
fuente
Pari / GP , 31 bytes
Pruébalo en línea!
fuente
APL + WIN, 13 bytes
Indicaciones para N:
Pruébalo en línea! Cortesía de Dyalog Classic.
Explicación:
Devuelve el subconjunto en orden inverso
fuente
Burlesque - 8 bytes
Pruébalo en línea.
fuente
Oracle SQL, 77 bytes
Prueba en SQL Plus
fuente
MathGolf , 8 bytes
Pruébalo en línea!
Explicación
Formato de salida alternativo
Con un formato de salida más flexible (que personalmente creo que se ve bastante bien) puedo obtener un 6-byter:
En lugar de mapear, uso el implícito for-each y omito el aplanamiento. La salida se ve así:
fuente
Ruby , 31 bytes
Pruébalo en línea!
fuente
F # (Mono) , 45 bytes
Pruébalo en línea!
También implementé una función genérica / recursiva, pero es bastante fea y el recuento de bytes es mucho más grande ...
F # (Mono) , 107 bytes
Pruébalo en línea!
fuente
05AB1E , 6 bytes
Pruébelo en línea o verifique todos los casos de prueba posibles .
Explicación:
fuente
Java 8, 58 bytes
Pruébalo en línea.
Explicación:
fuente