Wikipédia dit à propos des coordonnées polaires :
En mathématiques, le système de coordonnées polaires est un système de coordonnées bidimensionnel dans lequel chaque point sur un plan est déterminé par une distance d'un point de référence et un angle d'une direction de référence.
Cela semble parfait pour décrire les grilles hexagonales. Prenez par exemple la grille hexagonale suivante:
A B C
D E F G
H I J K L
M N O P
Q R S
Notre point de référence sera le centre de l'hexagone («J») et notre angle de référence sera dans le coin supérieur gauche de l'hexagone («A»). Cependant, nous décrirons l'angle en termes de nombre de pas dans le sens des aiguilles d' une montre autour de l'extérieur de l'hexagone à partir de ce point, pas en angles. Nous l'appellerons donc "Numéro de l'étape" au lieu de l'angle.
Par exemple, 'C' est à (2, 2) car il a un rayon de 2 (car il est à deux anneaux du centre, 'J'), et un nombre de pas de 2 (2 pas dans le sens des aiguilles d'une montre à partir de 'A '). De même, «O» est en (1, 3), car il est à un anneau du centre et à trois pas dans le sens des aiguilles d'une montre de «E» (qui est sur l'angle de référence).
Pour être complet, 'J' est à (0, 0), car vous avez besoin de 0 pas vers l'extérieur et 0 pas dans le sens des aiguilles d'une montre pour l'atteindre.
Maintenant, vous pouvez également décrire un hexagonal avec des coordonnées cartésiennes , mais en raison du décalage, c'est un peu bizarre. Tout comme avec nos coordonnées polaires, nous mettrons le centre à (0, 0). Chaque espace prend également une coordonnée, donc 'K' est à (2, 0), pas (1, 0). Cela mettrait «A» à (-2, 2) et «O» à (1, -1).
Le défi
Étant donné les coordonnées hexagonales polaires, émettez les mêmes coordonnées en coordonnées cartésiennes. Vous pouvez prendre ces coordonnées et produire la réponse dans n'importe quel format raisonnable. Cela signifie que vous pouvez inverser l'ordre des entrées si vous le souhaitez. Cela signifie également que vous pouvez afficher les coordonnées sous la forme (Y, X), mais si vous le faites, veuillez le mentionner dans votre réponse pour éviter toute confusion.
Vous n'avez pas à gérer les rayons négatifs, mais vous pouvez obtenir des angles négatifs, ou des angles qui vont plus d'une révolution complète autour de l'hexagone. Par exemple, vous pouvez recevoir (1, 10) ou (1, -2) en entrée. Ces deux correspondraient à «N» dans notre hexagone précédent. Vous n'avez pas besoin de gérer des non-entiers pour l'entrée.
Exemple d'E / S
#Polar #Cartesian
(0, 0) (0, 0)
(1, 2) (2, 0)
(6, 0) (-6, 6)
(2, -3) (-3, -1)
(4, 23), (-5, 3)
(5, -3), (-8, 2)
(10, 50), (-20, 0)
(6, 10), (10, 2)
(8, 28), (0, -8)
(8, -20), (0, -8)