2.8 KiB
Домашнее задание №6
📗 В домашнем задании нужно упаковать данные игрока в структуру таким образом, чтобы ее размер был не более, чем 64 байта.
Представим, что мы разрабатываем игру и наша задача упаковать данные игрока в структуру таким образом, чтобы ее размер был не более, чем 64 байта (представим, что размер кэш линии на компьютерах будет 64 байта).
Данные пользователя:
Имя пользователя [0…42] символов латиницы
нельзя ссылаться на символы строки по указателю (нужно мапить символы строки в объект структуры, чтобы они находились рядом с другими данными)
Координата по оси X [-2_000_000_000…2_000_000_000] значений
Координата по оси Y [-2_000_000_000…2_000_000_000] значений
Координата по оси Z [-2_000_000_000…2_000_000_000] значений
Золото [0…2_000_000_000] значений
Магическая сила (мана) [0…1000] значений
Здоровье [0…1000] значений
Уважение [0…10] значений
Сила [0…10] значений
Опыт [0…10] значений
Уровень [0…10] значений
Есть ли у игрока дом [true/false] значения
Есть ли у игрока оружие [true/false] значения
Есть ли у игрока семья [true/false] значения
Тип игрока [строитель/кузнец/воин] значения
Чтобы успешно справиться с заданием - вам потребуется вспомнить темы выравнивания структур данных и побитовых операций.
📌 Для выполнения домашнего задания подготовлен шаблон кода и основные тесты, которую помогут проверить корректность реализации конвертации. Шаблона доступен по ссылке.
###Задание со звездочкой Выполнять необязательно, но если вы уже знакомы c рефлексией в Go, то попробуйте реализовать сериализацию этой структуры данных в YAML, XML или JSON формат с использованием тегов структур.