Tâche: Pour une position donnée dans la matrice 2D générer la liste des positions environnantes situées dans le rayon.Générer paresseux "spirale" dans Scala
Par exemple:
input: (1, 1)
radius: 1
output: ((0, 0), (1, 0), (2, 0),
(0, 1), (2, 1),
(0, 2), (1, 2), (2, 2)).
j'ai écrit quelque chose comme
def getPositions(x:Int, y:Int, r:Int) = {
for(radius <- 1 to r) yield {
List(
for (dx <- -radius to radius) yield Pair(x + dx, y - radius),
for (dx <- -radius to radius) yield Pair(x + dx, y + radius),
for (dy <- -radius to radius) yield Pair(x + radius, y + dy),
for (dy <- -radius to radius) yield Pair(x - radius, y + dy)
)
}
}
Dans ce code getPositions renvoie pas un sequance de points, mais un sequance de Tuple4 de sequances des points. Comment puis-je "concaténer" 4 générateurs répertoriés dans le code? Ou y a-t-il une solution plus concise pour ma tâche? (Je suis assez nouveau à Scala).
P.S. C'est en fait pour mon robot Starcraft.
Vous répétez tous vos points d'angle. Je doute que tu veuilles le faire. Changez vos deux secondes pour les boucles allant de '- (rayon-1)' à '(rayon -1)'. –
Est-ce que quelqu'un ici a aidé? Veuillez choisir une réponse correcte si c'est le cas. Aussi, comment va le bot? – Synesso