A tarefa
Dado o conjunto
e um inteiro
encontre o enésimo subconjunto.
Entrada / Saída
N é dado como um número inteiro não assinado em stdin. Você deve imprimir o subconjunto Nth em um formato adequado para o seu idioma (pode incluir [1,2,3]
, {1,2,3}
, [1, 2, 3]
, 1 2 3
, 1,2,3
etc. durante o tempo que é uma legível texto formato).
Um pouco sobre subconjuntos
Há um relacionamento entre subconjuntos e números na base dois. Cada dígito
especifica se o i- ésimo elemento do conjunto está dentro do subconjunto. Por exemplo, 00000000 seria o conjunto vazio e 10000001 é o subconjunto que contém (o último e o primeiro elemento). Você obtém o enésimo subconjunto convertendo o número na base 2 e, em seguida, o subconjunto inclui todos os elementos em que . O terceiro subconjunto (3 = 00000011) contém assim . O dígito mais à direita é o número 0. Está tudo bem para imprimir . O conjunto não precisa ser classificado.[1,8]
[1,2]
[2,1]
Adendos:
Sim, o conjunto está fixo em 1..8
. O aparelho não faz parte da entrada. A entrada é apenas N .
Sim, você pode usar formulários de entrada alternativos.
Todas as saídas esperadas para todos os N : https://tio.run/##SyotykktLixN/f/fyNS02qIoP8soJd1CwSAg2kY32LPWPaoqs7jg/38A
1
para8
, ou é um conjunto?"123"
seria inequívoca. Isso é válido?Respostas:
Geléia , 3 bytes
Experimente online!
Como funciona
fonte
R ,
5226 bytesExperimente online!
Converte a entrada em seus bits e retorna os índices baseados em 1 de onde eles estão
TRUE
. Isso faz deste um porto da resposta de Dennis 'Jelly .Retorna
integer(0)
, a lista vazia de números inteiros, para entrada de0
.fonte
Python 2 , 40 bytes
Experimente online!
fonte
Perl 6 , 33 bytes
Experimente online!
fonte
Python 2 , 42 bytes
Experimente online!
fonte
K4 , 7 bytes
Solução:
Exemplo:
10 primeiros ...
Explicação:
fonte
MATLAB / Oitava ,
312927 bytesreduzido de 2 bytes graças a alefalpha
reduzido de 2 bytes graças a Giuseppe
Experimente online!
fonte
@(n)9-find(dec2bin(n,8)-48)
Japonês, 7 bytes
Tente
Tente
fonte
Casca , 5 bytes
Recebe a entrada como argumento da linha de comando e não no stdin ( espero que esteja tudo bem ), tente online!
Explicação
fonte
Haskell ,
5554 bytesEmite o conjunto na ordem inversa, experimente online!
Versão geral, 56 bytes
Experimente online!
Explicação
O termo
mapM (pure [0,1]) [1..n]
gera a lista (n=4
)[[0,0,0,0],[0,0,0,1],[0,0,1,0],..,[1,1,1,1]]
- ie. as representações binárias de[0..2^n-1]
. A indexação nele comn
nos dá a representação binária den
.Agora podemos fazer
zip
isso apenas com os números invertidos[1..n]
e manter apenas os elementos onde o dígito binário é diferente de zero:fonte
Carvão , 11 bytes
Experimente online! Link é a versão detalhada do código. Se a impressão da resposta horizontalmente sem espaços for aceitável, o primeiro caractere poderá ser removido. Explicação:
fonte
JavaScript (ES6), 37 bytes
+4 bytes se um separador for obrigatório
+3 bytes se esse separador for uma vírgula e uma vírgula inicial for permitida
Experimente online!
fonte
Perl 6 , 21 bytes
Experimente online!
Alternativo:
fonte
Lisp comum, 57 bytes
Experimente online!
fonte
Haskell , 33 bytes
Experimente online!
37 bytes
Experimente online!
Casos de teste de nimi.
fonte
J ,
1310 bytesExperimente online!
fonte
Japonês, 7 bytes
Teste on-line
Japonês, 7 bytes
Teste on-line
fonte
C # (compilador interativo do Visual C #) , 47 bytes
Experimente online!
Parece semelhante à solução Java agora, embora eu tenha inventado a minha independentemente.
fonte
Python 3.6, 58 bytes
fonte
Wolfram Language (Mathematica) , 32 bytes
Experimente online!
fonte
Pari / GP , 31 bytes
Experimente online!
fonte
APL + WIN, 13 bytes
Solicita N:
Experimente online! Cortesia de Dyalog Classic
Explicação:
Retorna o subconjunto na ordem inversa
fonte
Burlesco - 8 bytes
Experimente online.
fonte
Oracle SQL, 77 bytes
Teste no SQL Plus
fonte
MathGolf , 8 bytes
Experimente online!
Explicação
Formato de saída alternativo
Com um formato de saída mais flexível (que eu pessoalmente acho muito bom), posso criar um 6-byter:
Em vez de mapear, uso o implícito para cada um e pulo o achatamento. A saída fica assim:
fonte
Ruby , 31 bytes
Experimente online!
fonte
F # (Mono) , 45 bytes
Experimente online!
Também implementei uma função genérica / recursiva, mas é muito feia e a contagem de bytes é muito maior ...
F # (Mono) , 107 bytes
Experimente online!
fonte
05AB1E , 6 bytes
Experimente online ou verifique todos os casos de teste possíveis .
Explicação:
fonte
Java 8, 58 bytes
Experimente online.
Explicação:
fonte