Para aqueles que não estão familiarizados com o Padrão de Ervilha , é um padrão matemático simples.
Existem várias variações desse padrão, mas vamos nos concentrar em um:
Padrão de ervilha ascendente
Se parece com isso:
1
11
21
1112
3112
211213
...
Parece realmente difícil obter a seguinte linha, mas é realmente fácil. A maneira de obter a próxima linha é contando o número de vezes que um dígito repetiu na linha anterior (comece a contar da menor para a maior):
one
one one
two ones
one one, one two
three ones, one two
two ones, one two, one three
...
Requisitos / Regras:
- Vamos começar às
1
- Será um trecho
- Deve haver uma maneira de especificar o número de linhas geradas (por exemplo
5
, fornecerá as 5 primeiras linhas) - O código deve ser o mais curto possível
- Ele deve começar a contar do menor para o maior (a variação ascendente)
21322314
. Isso está correto?Respostas:
APL, 32 caracteres
Isso gera linhas a partir de 0 (ou seja ,
0
gera1
,1
gera1
seguido por1 1
etc.), conforme especificado pela entrada do usuário. Eu usei o Dyalog APL para isso e⎕IO
deve ser definido como o padrão 1.Exemplo:
Assim que tiver mais tempo, escreverei uma explicação. ⍨
fonte
Python (2.x),
8180 caracteresTodas as dicas ou comentários são bem-vindos!
fonte
Perl, 83
Tenho certeza de que algum guru do Perl poderia superar isso, mas aqui vai:
Expandido:
O número de linhas é passado via STDIN.
fonte
J,
60463926 caracteresEdit 3 : surgiu com uma maneira muito melhor de expressar isso.
Edit 2 : Finalmente encontrou uma maneira de mover o argumento para o final da sequência e se livrar das coisas desnecessárias de atribuição.
Anteriormente:
Editar 1 : corrige a saída que deve ser
y
linhas, e não ay
linha th. Também reduz um pouco as coisas. Que vergonha0
, não consigo me livrar das malditas coisas.Uso:
É certo que o uso é mais feio agora, mas beleza não é o nome do jogo aqui ...
fonte
Haskell, 116
Uso:
fonte
Lisp comum, 140 caracteres
Como Lisp, a função retorna uma lista de listas. (mx) gera X sublistas.
fonte
Mathematica, 70
fonte
Gelatina ,
1311 bytes (Feedback apreciado)Experimente online!
fonte
U€
pode simplesmente serU
, vetoriza até o nível da linha. Em seguida, você pode salvar outro byte inliningṢŒrUF
, usandoƲ
(os últimos 4 links como mônada):1ṢŒrUFƲСṖY
ṢŒrU€FƲ
teria funcionado muito bem - ele rola [Ṣ
,Œr
,U€
,F
.] Em uma mônada Talvez meu uso "e depois" foi um pouco enganosa ^^; Da mesma forma, em algo comoabc$de$fƲ
irá operar nos 4 ligações [a
,bc$
,de$
,f
] e agrupe-os em uma mônada.Este é o sentido em que você pode considerar as quicks como "operadores de pilha de tempo de análise": seu resultado é empurrado de volta para uma pilha e age como se fosse um link para futuras rápidas. )