Обновление координат объектов вдоль оси X

Приведённый updateScreen уже смещает каждую сущность на единицу по X. Создайте три Entity с отдельными экземплярами Point и вызовите обновление для списка.

Короткий ответ

Что ответить на собеседовании

Приведённый updateScreen уже смещает каждую сущность на единицу по X. Создайте три Entity с отдельными экземплярами Point и вызовите обновление для списка.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо создать простой движок, который будет обновлять состояние трёх сущностей. Каждая сущность представлена точкой с координатами (x, y). При вызове функции update() все сущности смещаются на единицу вправо вдоль оси X. Начальные координаты задаются при создании объектов.

data class Point(var x: Int, var y: Int)

class Entity(var position: Point) {
    fun update() {
        position.x += 1
    }
}

fun updateScreen(entities: List<Entity>) {
    for (entity in entities) {
        entity.update()
    }
}

Ответ

Приведённый updateScreen уже смещает каждую сущность на единицу по X. Создайте три Entity с отдельными экземплярами Point и вызовите обновление для списка.

val entities = listOf(
    Entity(Point(0, 2)),
    Entity(Point(5, 7)),
    Entity(Point(-1, 0))
)
updateScreen(entities)
println(entities.map { it.position })

Получатся Point(x=1, y=2), Point(x=6, y=7), Point(x=0, y=0). Если несколько сущностей разделяют один изменяемый Point, он будет увеличен несколько раз за проход. Это нежелательная общая ссылка, если по условию сущности должны иметь независимые координаты.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее