Dado um número inteiro n
, imprima os primeiros n
números binários inclinados, indexados em 0 ou 1. Eles são chamados assim devido à forma como são gerados:
Escreva números em binário um sob o outro (justificado à direita):
........0
........1
.......10
.......11
......100
......101
......110
......111
.....1000
.........
Em seguida, você precisa colocar cada diagonal da parte inferior esquerda para a parte superior direita, de modo que cada dígito final seja o dígito final de uma diagonal. Aqui está a quarta diagonal (indexada a zero) marcada com x
's, que é 100
:
........0
........1
.......10
.......11
......10x
......1x1
......x10
......111
.....1000
.........
As diagonais inclinadas para cima em ordem são:
0
11
110
101
100
1111
1010
.......
Em seguida, converta para decimal, dando 0, 3, 6, 5, 4, 15, 10, ...
Isso é código-golfe , então o código mais curto em bytes vence.
code-golf
sequence
base-conversion
binary
mbomb007
fonte
fonte
n
ou o primeiron+1
número?Respostas:
Gelatina, 11 bytes
Experimente online!
Explicação
A transposição é a maneira mais simples de preencher a matriz para que as diagonais incorporadas funcionem. Em seguida, os reversos são adicionados para obter tudo na ordem correta.
fonte
JavaScript (ES6), 53 bytes
Indexado a 0. Não é sempre que eu uso uma função recursiva como parâmetro para
map
.fonte
Mathematica, 46 bytes
Função sem nome, recebendo um número inteiro não negativo
#
como entrada e retornando a sequência do índice 0 até o#
termo th. Constrói os números binários inclinados usandoBitAnd
(bit a bit "e") com potências apropriadas de 2.fonte
Python3,
6361 bytesUsa a fórmula do OEIS.
-2 bytes graças a Luis Mendo !
i+1
->i
fonte
Sum_{ k >= 1 such that n + k == 0 mod 2^k } 2^k
para a fórmula bit a bit mais simples?PHP, 68 bytes
recebe entrada do argumento da linha de comando, imprime números separados por sublinhados. Corra com
-r
.fonte
MATL ,
1817 bytesExperimente online!
Isso usa a fórmula do OEIS:
Código:
fonte
Perl 6 ,
5943 bytesUsa a fórmula da página OESIS.
Atualização: Alternada para a fórmula baseada em bits e baseada na resposta Python do TuukkaX .
Perl 6 , 67 bytes
Solução ingênua.
Converte os números que fazem parte da diagonal na base 2, pega o dígito correto de cada um e converte o resultado novamente na base 10.
fonte
Gelatina , 15 bytes
Isso seria mais curto do que a outra resposta Jelly se tivéssemos para imprimir apenas o n º prazo.
Experimente online!
fonte
R, 66 bytes
Função sem nome, que usa a
bin
função domiscFuncs
pacote para calcular o comprimento don
representado em binário e, em seguida, usando uma das fórmulas OEIS.fonte