Итак, мне нужно сгенерировать координаты, чтобы создать ромб на сетке. Я получу center (x, y)
и высоту n
от центра к вершине, затем мне нужно сгенерировать координаты [(x, y),..]
, чтобы напечатать что-то вроде этого (n = 4
и center = (4, 4)
):
#
# # #
# # # # #
# # # # # # #
# # # # # # # # #
# # # # # # #
# # # # #
# # #
#
Где каждый # представляет позицию возвращаемого списка. Я понятия не имею, как это сделать.
Вот как я делаю это в kotlin:
fun diamond(n: Int, coord: Coord): List<Coord> {
val coords = mutableSetOf<Coord>()
for (i in 0..n) {
for (j in 0..(n - i)) {
coords.add(Coord((coord.x + i).absoluteValue, (coord.y + j).absoluteValue))
coords.add(Coord((coord.x + i).absoluteValue, (coord.y - j).absoluteValue))
coords.add(Coord((coord.x - i).absoluteValue, (coord.y + j).absoluteValue))
coords.add(Coord((coord.x - i).absoluteValue, (coord.y - j).absoluteValue))
}
}
return coords.toList()
}
PS: печать не проблема, мне просто нужны координаты.