2017-05-26 1 views
0

Pour un projet parallèle amusant, j'ai essayé de construire un outil qui génère un « latus tonale », qui est essentiellement une grille hexagonale comme celui-ci: construction récursive une grille hexagonale

Juste pour divertante Je veux générer cette grille de manière récursive. Donc, fondamentalement, un nœud aura 6 enfants qui sont stockés dans un tableau (l'index 0 étant l'enfant le plus à gauche ou le plus occidental, puis tournant dans le sens des aiguilles d'une montre). Le problème que j'ai avec ceci est la fonction récursive découvrant si un enfant existe déjà dans le cadre d'une autre création de nœuds et si c'est le cas, ajoutez le nœud existant au tableau enfant au lieu de créer un nouveau nœud en tant qu'enfant. J'ai essayé de donner à chaque noeud un faux identifiant "xy" et de faire passer un tableau dans le cadre de la récursion pour voir s'il existe quelque chose qui fonctionne pour la plupart mais pas à l'échelle, j'ai l'impression il y a une manière intelligente de générer ceci que je manque. Quelqu'un at-il rencontré un problème comme celui-ci?

+0

Je pense que vous voulez juste faire un tableau = [], ajoutez votre élément de base et utilisez n'importe quelle fonction pour trouver ses enfants. Ensuite, pour chaque enfant, faites de même et ajoutez l'enfant et ses enfants, ajoutez ces enfants et leurs enfants, etc. de manière récursive, tant qu'ils n'existent pas déjà dans le tableau. Dans votre description, vous semblez vouloir utiliser un arbre, mais cela ne semble pas être l'outil approprié pour résoudre le problème. –

Répondre

2

Vous pouvez créer un système de coordonnées comme celui-ci.

enter image description here

Ainsi, chaque grille (x, y) est relié au (x-1, y), (x-1, y + 1), (x, y + 1), (x + 1 , y + 1), (x + 1, y), (x + 1, y-1) et (x, y-1).