Desafio:
Aqui temos os 100 primeiros itens de uma sequência:
6,5,4,3,2,1,66,65,64,63,62,61,56,55,54,53,52,51,46,45,44,43,42,41,36,35,34,33,32,31,26,25,24,23,22,21,16,15,14,13,12,11,666,665,664,663,662,661,656,655,654,653,652,651,646,645,644,643,642,641,636,635,634,633,632,631,626,625,624,623,622,621,616,615,614,613,612,611,566,565,564,563,562,561,556,555,554,553,552,551,546,545,544,543,542,541,536,535,534,533,...
Como esta sequência é formada? Primeiro, temos o número no intervalo [6, 1]
(todos os valores possíveis de um único dado, do mais alto para o mais baixo). Em seguida, temos os números [66..61, 56..51, 46..41, 36..31, 26..21, 16..11]
(todos os valores possíveis possíveis de dois dados do maior para o menor). Etc.
Isso está relacionado à sequência OEIS A057436: Contém apenas os dígitos de 1 a 6 , mas com todos os números com a mesma quantidade de dígitos classificados para trás na sequência.
O desafio é escolher uma dessas três opções para sua função / programa com a sequência acima:
- Pegue uma entrada e produza o ésimo valor dessa sequência, onde ela pode ser indexada em 0 ou 1.
- Pegue uma entrada e imprima os primeiros valores ou desta sequência.
- Envie os valores da sequência indefinidamente.
Obviamente, qualquer formato de saída razoável pode ser usado. Pode ser como strings / inteiros / decimais / etc .; poderia ser como uma lista (infinita) / array / stream / etc .; pode ser enviado com espaço / vírgula / nova linha / outro delimitador para STDOUT; etc. etc. Por favor, indique qual E / S e a opção que você está usando em sua resposta!
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Aqui estão alguns casos de teste maiores, se você escolher a opção 1:
n 0-indexed output 1-indexed output
500 5624 5625
750 4526 4531
1000 3432 3433
9329 11111 11112
9330 666666 11111
9331 666665 666666
10000 663632 663633
100000 6131232 6131233
Respostas:
Gelatina , 5 bytes
Experimente online!
N-ésimo valor indexado.
fonte
Perl 6 ,
2423 bytes-1 byte graças a nwellnhof
Experimente online!
Produz a sequência infinitamente separada por espaços / novas linhas. Ou, por mais alguns bytes, podemos ter uma lista infinita e lenta que podemos indexar.
Perl 6 , 27 bytes
Experimente online!
Explicação:
fonte
Python 2 ,
393834 bytesExperimente online!
Emite um número indexado
fonte
R , 43 bytes
Experimente online!
Imprime a sequência indefinidamente
fonte
6 5 4 3 2 166 65 64...
Bash, 31 bytes
TIO
update from comments, o n-ésimo valor indexado em 1, + ferramentas GNU + perl, 64 bytes, 7 bytes salvos graças a @manatwork
64 bytes
fonte
bc<<<obase=6\;$1
. Mas se você mudar paradc
, não há nada a fuga:dc<<<6o$1p
.dc<<<6o$1p|perl -pe '1while s/(.)0/($1-1).6/e;s/0//'|tr 1-6 654321
MATL , 11 bytes
Emite os valores indefinidamente.
Experimente online!
Explicação
fonte
Haskell,
3834 bytesUma lista infinita de números:
Experimente online!
Duas soluções anteriores que fornecem listas infinitas de cadeias de caracteres, cada uma usando 38 bytes:
Experimente online!
Experimente online!
fonte
replicate
.JavaScript (ES6), 26 bytes
Experimente online!
fonte
Haskell , 28 bytes
Experimente online!
Produz uma lista infinita de números
l
. Usando<$>
e<*>
cortando um byte:29 bytes
Experimente online!
A abordagem é semelhante à sequência de entrada fixa "654321" da resposta de todas as seqüências de caracteres de saída de Haskell e ignorando a saída de sequência de caracteres vazia, alterando o local em que é precedida.
30 bytes
Experimente online!
fonte
0
(ou""
), mas não encontrei uma maneira barata de não tê-la no resultado ...05AB1E , 10 bytes
Produz a sequência indefinidamente.
Experimente online!
Explicação
fonte
¸
no início cria uma lista contendo uma string vazia. E 2 bytes mais curto que a solução que eu usei para gerar os casos de teste, portanto, é claro, um +1 de mim. :)Perl 5,
4037 bytes-3bytes graças a @Xcali
37 bytes
40 bytes
fonte
Java (JDK) , 48 bytes
Experimente online!
Isso retorna o n- ésimo elemento indexado .
A recursão parece superar a lambda iterativa.
Versão iterativa, 49 bytes
Experimente online!
fonte
Braquilog ,
1311 bytesGraças a Fatalize por 2 bytes
Saídas indefinidamente. Experimente online!
Explicação
fonte
6~d{⟧₁∋}ᵐẉ⊥
. Você basicamente encerra seu programa com "false", que o forçará a imprimir todas as soluções.C # (.NET Core) , 38 bytes
Experimente online!
Emite o n-ésimo valor (com base em 1).
fonte
Japonês, 14 bytes
Tem que haver uma solução mais curta usando métodos de função e / ou produto cartesiano, mas (por enquanto?) O melhor que consigo gerenciar é uma porta da solução JS de Arnauld, portanto, também o vota.
Experimente ou teste os termos
0-1000
fonte
Wolfram Language (Mathematica) ,
8878 bytesExperimente online!
economizou 4 + 6 bytes graças a @IanMiller
A lista é 1 indexada, gera o enésimo número.
fonte
Mathematica, 56 bytes
fonte
Pip
-l
, 16 bytesProduz a sequência indefinidamente. Experimente online!
Explicação
A
-l
bandeira significa que as listas são impressas com cada item em sua própria linha; se um item é uma lista, seus elementos são concatenados sem separador. Por exemplo, a lista[1 [2 3] [4 [5 6]]]
seria impressa comoCom isso esclarecido:
Após a primeira iteração do loop,
x
parece[[6;6];[6;5];[6;4];...;[1;1]]
; após a segunda iteração[[[6;6];6];[[6;6];5];[[6;6];4];...;[[1;1];1]]
,; e assim por diante. Não precisamos nos preocupar em achatar as sublistas, porque-l
efetivamente faz isso por nós.fonte
Carvão , 18 bytes
Experimente online! Link é a versão detalhada do código. 1 indexado. Explicação:
Entrada
n
Repita até que
n
seja zero.Reduza o
-n
módulo6
e aumente o resultado e a saída da direita para a esquerda.Decremento
n
e número inteiro dividem por6
.fonte
Retina 0.8.2 , 36 bytes
Experimente online! O link inclui casos de teste. 1 indexado. Explicação:
Converta para unário. (A retina 1 salvaria 2 bytes aqui.)
Converta na base bijetiva 6 por divmod repetido. Observe que o uso de
+
significa que o dígito extraído é sempre um número de 1 a 6 em vez de 0 a 5 para a conversão regular da base 6. ((_{6})*
é mais rápido, mas custa bytes extraindo o quociente.)Transponha os dígitos para que os 6s cheguem primeiro e os 1s durem. (Não há 7s ou 0s, mas isso me permite usar o
d
atalho.fonte
Cubix , 22 bytes
Isso produzirá a sequência indefinidamente. A idéia geral é que ele tenha um número base ao qual 6 - 1 é adicionado. Para cada adição, o resultado é multiplicado por 10, que é empurrado para o fundo da pilha para ser usado posteriormente na sequência. A base é então exibida e a próxima base é iniciada.
Experimente online!
Assista
fonte
C # (.NET Core) , impressão infinita,
181 18088 bytes.Infelizmente, congela o repl.it em vez de produzir corretamente na versão infinita, como está escrito (acredito que seja um erro no repl.it, pois não é exibido como o programa faz o loop como deveria), então qualquer pessoa que deseje testar precisa de um computador. Se você adicionar uma leitura na frente do loop, ela também funcionará em repl.it.
Saídas para o console, obviamente.
Em qualquer sistema finito, o código provavelmente trava com um erro de falta de memória.Retrabalhou o código para usar o lambda de @dana.
Experimente online!
fonte
Quarto (gforth) , 63 bytes
Experimente online!
Saídas indexadas 0 nésimo valor
Explicação
Se N for menor que 6, insira o valor absoluto de N - 6. Caso contrário, obtenha o quociente e o restante da divisão de N por 6. Chame a função recursivamente no quociente e depois no restante.
Código Explicação
fonte
APL (NARS), 27 caracteres, 54 bytes
traduza a solução por dana /codegolf//a/179980 no APL ... test:
fonte
C #, imprima do começo para n, ??? bytes
Crédito para @dana pela expressão lambda.
Operação: execute com o argumento da linha de comando 0 igual ao número inteiro com o qual você deseja contar. (Note-se que
a[0]
é uma referência à matriz de argumentos args da linha de comando não mencionada, e não sei como contá-la.)fonte