Задача: Для данной позиции в 2D-массиве создайте список окружающих положений, расположенных в радиусе.Создайте ленивую «спираль» в Scala
Например:
input: (1, 1)
radius: 1
output: ((0, 0), (1, 0), (2, 0),
(0, 1), (2, 1),
(0, 2), (1, 2), (2, 2)).
я написал что-то вроде
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)
)
}
}
В этом коде getPositions возвращает а не sequance точек, но sequance из Tuple4 из sequances точек. Как я могу «конкатенировать» 4 генератора, перечисленных в коде? Или есть более сжатое решение для моей задачи? (Я довольно новичок в scala).
P.S. Это на самом деле мой бот.
Вы повторяете все ваши угловые точки. Я сомневаюсь, что вы хотите это сделать. Измените свои два вторых цикла для перехода от '- (radius-1)' to '(radius -1)'. –
Помог ли кто-нибудь здесь? Пожалуйста, выберите правильный ответ, если да. Кроме того, как идет бот? – Synesso