Introdução
Em matemática, um número poligonal é um número representado como pontos ou seixos dispostos na forma de um polígono regular. Os pontos são vistos como alfas (unidades). Estes são um tipo de números figurados bidimensionais.
O número 10, por exemplo, pode ser organizado como um triângulo:
* ** *** ****
Mas 10 não pode ser organizado como um quadrado. O número 9, por outro lado, pode ser:
*** *** ***
Alguns números, como 36, podem ser organizados como um quadrado e como um triângulo:
****** * ****** ** ****** *** ****** **** ****** ***** ****** ******
Por convenção, 1 é o primeiro número poligonal para qualquer número de lados. A regra para ampliar o polígono para o próximo tamanho é estender dois braços adjacentes em um ponto e, em seguida, adicionar os lados extras necessários entre esses pontos. Nos diagramas a seguir, cada camada extra é mostrada em vermelho.
Números triangulares:
Números quadrados:
Polígonos com maior número de lados, como pentágonos e hexágonos, também podem ser construídos de acordo com esta regra, embora os pontos não formem mais uma estrutura perfeitamente regular, como acima.
Números pentagonais:
Números hexagonais:
Fonte: Wikipedia
Sua tarefa
Dado um número inteiro positivo N (1 <= N <= 1000), imprima todo tipo de número poligonal N começando de números triangulares até e incluindo números icosagonais (20-gon).
Por exemplo, o número 10 é um número triangular e um número decagonal; portanto, a saída deve ser algo como (você pode escolher seu próprio formato de saída, mas deve se parecer com isso):
3 10
Casos de teste
1 -> 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2 -> (None)
3 -> 3
6 -> 3 6
36 -> 3 4 13
Para referência, o n
número k
-th -gonal é:
Crédito: xnor
Lembre-se, isso é código-golfe , então o código com o menor número de bytes vence.
n
th k-gonal é(k-2)*n*(n-1)/2 + n
.