2011-09-06 3 views
-1

Cela devrait être assez facile, mais j'ai un mal de tête à essayer de le comprendre. Je veux énumérer toutes les coordonnées entre deux points. Comme si:Liste des coordonnées entre un ensemble de coordonnées

1: (1,1) 
2: (1,3) 
In between: (1,2) 

Ou

1: (1,1) 
2: (5,1) 
In between: (2,1), (3,1), (4,1) 

Il n'a pas besoin de travailler avec des diagonales.

+2

S'il s'agit de devoirs, veuillez ajouter cette étiquette. –

Répondre

2

Selon la façon dont vous voulez gérer les cas de pointe, cela semble fonctionner:

def points_between(p1, p2): 
    xs = range(p1[0] + 1, p2[0]) or [p1[0]] 
    ys = range(p1[1] + 1, p2[1]) or [p1[1]] 
    return [(x,y) for x in xs for y in ys] 

print points_between((1,1), (5,1)) 
# [(2, 1), (3, 1), (4, 1)] 

print points_between((5,6), (5,12)) 
# [(5, 7), (5, 8), (5, 9), (5, 10), (5, 11)] 
+1

Cela ne fonctionnera pas correctement si une première coordonnée est supérieure à la deuxième coordonnée correspondante. – intuited

+0

A travaillé super! Il suffit d'ajouter une petite ligne pour tester laquelle est la plus haute. Merci. –

+1

Et si le problème est vaguement intéressant et que j'ai quelques minutes supplémentaires, je pourrais fournir une réponse. Je ne suis pas intéressé à faire respecter la discipline des autres ou à améliorer les compétences en logiciels des gens qui ne sont pas déjà intéressés à s'améliorer. En d'autres termes, je ne vais pas forcer quelqu'un à s'en soucier. BTW Je pense qu'il sera évident que l'OP n'a pas trouvé cette solution à tout niveleur d'un cours débutant familier avec python. – recursive

4

Vous semblez être un programmeur débutant. Une technique générale que je trouve utile est de faire le travail vous-même, sur papier, puis regardez comment vous l'avez fait et traduisez cela en programme. Si vous ne pouvez pas voir comment, décomposer en étapes plus simples jusqu'à ce que vous le pouvez.

Questions connexes