Definição
Definir o n th matriz da sequência CORR como se segue.
Comece com a matriz singleton A = [n] .
Para cada número inteiro k em A , substitua a entrada k por k números naturais, contando de 1 a k .
Repita o passo anterior n - 1 mais vezes.
Por exemplo, se n = 3 , começamos com a matriz [3] .
Substituímos 3 por 1, 2, 3 , produzindo [1, 2, 3] .
Agora substituímos 1 , 2 e 3 por 1 ; 1, 2 e 1, 2, 3 (resp.), Produzindo [1, 1, 2, 1, 2, 3] .
Finalmente, realizamos as mesmas substituições que na etapa anterior para todos os seis números inteiros na matriz, produzindo [1, 1, 1, 2, 1, 1, 2, 1, 2, 3] . Esta é a terceira matriz CURR.
Tarefa
Escrever um programa de uma função que, dado um número inteiro estritamente positivo n como entrada, calcula o n th matriz Curr.
A saída deve ser uma lista simples de algum tipo (e a matriz retornada de uma função, uma representação em cadeia da sintaxe da matriz da sua linguagem, separada por espaços em branco, etc.).
Isso é código-golfe . Que ganhe o código mais curto em bytes!
Casos de teste
1 -> [1]
2 -> [1, 1, 2]
3 -> [1, 1, 1, 2, 1, 1, 2, 1, 2, 3]
4 -> [1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4]
5 -> [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5]
6 -> [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6]
[2]
) em vez de um número inteiro?Respostas:
Geléia, 3 bytes
Experimente online
Explicação
fonte
Python, 50 bytes
Abuso de escopo! Por exemplo, para
i=3
, a sequência a ser avaliada se expande para.De alguma forma, apesar de usar a variável de entrada da função
i
para tudo, o Python distingue cada índice de iteração como pertencendo a um escopo separado, como se a expressão fossecom
i
a entrada para a função.fonte
eval
, obviamente, o código em si precisa ser portado, mas achei que você poderia assumir isso de qualquer maneira.05AB1E,
63 bytesExplicado
Experimente online
Guardado 3 bytes graças a @Adnan
fonte
DFL
é 3 bytes mais curto :)Retina , 33 bytes
Entrada e saída em unário.
Experimente online!
Embora eu não tenha usado o formulário fechado para o desafio relacionado, adaptar essa resposta foi surpreendentemente complicado.
fonte
+%(M!&
é a tag mais longa que eu já veria.Python 2, 82 bytes
Esta não é a solução mais curta, mas ilustra um método interessante:
2^(2*n-1)
números em binárion
osfonte
Na verdade, 9 bytes
Experimente online!
Explicação:
Agradecimentos a Leaky Nun por um byte e inspiração por mais 2 bytes.
fonte
;#@"♂R♂i"*ƒ
salva um byte #;#@`♂R♂i`n
salva outra!C #, 128 bytes
fonte
using static System.Linq.Enumerable
, você pode fazer isso:int[]J(int n){var l=new[]{n};while (n-- > 0){l = l.Select(p => Range(1, p)).SelectMany(m => m).ToArray();}return l;}
APL, 11 bytes
Teste:
Explicação:
+⍵
: começando com⍵
,⍣⍵
: faça os seguintes⍵
horários:⍳¨∘∊
: achatar a entrada e gerar uma lista [1..N] para cada N na entrada∊
: achatar o resultado dissofonte
{(∊⍳¨)⍣⍵⊢⍵}
{(∊∘(⍳¨))⍣⍵+⍵}
e pensei: como me livrar desses aparelhos?CJam, 14 bytes
Teste aqui.
Explicação
fonte
Mathematica,
2726 bytes1 byte economizado com alguma inspiração da resposta de Essari.
Bastante simples: para entrada
x
começamos com{x}
e, em seguida, aplicar oRange
a elex
vezes (Range
éListable
o que significa que se aplica automaticamente para os inteiros dentro listas arbitrariamente aninhados). No final,Flatten
o resultado.fonte
Clojure, 59 bytes
Explicação:
Realmente maneira direta de resolver o problema. Trabalhando de dentro para fora:
fonte
Python 3,
7574 bytesEsta é apenas uma tradução direta da descrição do problema no código.
Editar: salvou um byte graças a @Dennis.
fonte
print
pode ir para fora doexec
.[k]
por algum motivo. Desisti de tentar descobrir se era uma questão de escopo ou outra coisa.R,
6049 bytesUso bastante direto de
unlist
esapply
.Obrigado a @MickyT por salvar 11 bytes
fonte
seq
para diminuir a contagem de bytesphp 121
Não é realmente muita coisa por trás de truques por trás deste. Achatar uma matriz em php não é curto, por isso é necessário construí-la plana em primeiro lugar
fonte
<?
ou 6 bytes com-r
e sem marca.Haskell, 33 bytes
Obrigado a nimi por salvar um byte.
Uma versão sem ponto é mais longa (35 bytes):
fonte
iterate(>>= \a->[1..a])
por um byte a menos.JavaScript (Firefox 30-57),
6360 bytesPorta da resposta Python do @ xnor.
fonte
SyntaxError: missing : in conditional expression
) e Babel (Unexpected token (1:21)
). O que estou fazendo de errado?)
entrou nessa versão de alguma forma.J, 18 bytes
Abordagem direta com base no processo descrito no desafio.
Uso
Explicação
fonte
Pitão, 8 bytes
Experimente online!
fonte
Geléia, 7 bytes
Rápido, antes de Dennis responder (jk)
Experimente online!
fonte
F #, 63 bytes
Retorna uma função anônima, tendo n como entrada.
Substitui todas as entradas k em A por [1..k], repete o processo n vezes, começando com A = [n].
fonte
Swift 3, 58 bytes
Era para ser executado diretamente no playground, com n definido para a entrada:
Sem Golfe, com a menor notação manual revertida:
fonte
Java, 159 bytes
Procedimento
Uso
Saída de amostra:
fonte
Python 2,
696866 bytesEditar: salvou 1 byte graças a @xnor. Economizou 2 bytes graças a @ Dennis ♦.
fonte
exec
. No Python 2, é uma palavra-chave, não uma função. Eu conto 68 bytes btw.Utilitários Bash + GNU, 49
Funções recursivas canalizadas FTW!
n
é passado na linha de comando. A saída é separada por nova linha.O uso de
dd
estatísticas de causas é enviado para STDERR. Eu acho que isso é bom, mas se não,dd
pode ser substituído porcat
um custo de 1 byte extra.fonte
{...;}
por(...)
para salvar um byte.Perl 5, 53 bytes
Uma sub-rotina:
Veja em ação como
fonte
Ruby, 61 bytes
fonte
PHP,
10098 bytesCorra com
php -r '<code>' <n>
.Em cada iteração, crie uma cópia temporária em loop de 1 .. (primeiro valor removido) até
$a
ficar vazio.Esses dois ainda estão e provavelmente permanecerão em 100 bytes:
Em cada iteração, retrocede através da matriz, substituindo cada número por um intervalo.
Em cada iteração, faça um loop através da matriz, aumentando o índice pelo número anterior e substituindo cada elemento indexado por um intervalo
fonte