introduction
En mathématiques, un nombre polygonal est un nombre représenté par des points ou des cailloux disposés sous la forme d'un polygone régulier. Les points sont considérés comme des alphas (unités). Ce sont un type de nombres figuratifs bidimensionnels.
Le nombre 10, par exemple, peut être organisé en triangle:
* ** *** ****
Mais 10 ne peut pas être organisé en carré. Le chiffre 9, en revanche, peut être:
*** *** ***
Certains nombres, comme 36, peuvent être organisés à la fois en carré et en triangle:
****** * ****** ** ****** *** ****** **** ****** ***** ****** ******
Par convention, 1 est le premier nombre polygonal pour un nombre quelconque de côtés. La règle pour agrandir le polygone à la taille suivante consiste à étendre deux bras adjacents d'un point, puis à ajouter les côtés supplémentaires requis entre ces points. Dans les schémas suivants, chaque couche supplémentaire est représentée en rouge.
Numéros triangulaires:
Numéros carrés:
Des polygones avec un plus grand nombre de côtés, tels que des pentagones et des hexagones, peuvent également être construits selon cette règle, bien que les points ne formeront plus un réseau parfaitement régulier comme ci-dessus.
Nombres pentagonaux:
Numéros hexagonaux:
Source: Wikipedia
Ta tâche
Étant donné un entier positif N (1 <= N <= 1000), imprimez chaque type de nombre polygonal N à partir des nombres triangulaires jusqu'aux nombres icosagonaux (20 gon) inclus.
Par exemple, le nombre 10 est un nombre triangulaire et un nombre décagonal, donc la sortie devrait ressembler à quelque chose (vous pouvez choisir votre propre format de sortie, mais il devrait ressembler à ceci):
3 10
Cas de test
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
Pour référence, le n
-ième- k
numéro de zone est:
Crédits: xnor
N'oubliez pas qu'il s'agit de code-golf , donc le code avec le moins d'octets gagne.
n
nombre k-gonal est(k-2)*n*(n-1)/2 + n
.