Задать вопрос
@synapse_people

Как лучше всего уложить поле для морского боя в массив байт?

Есть массив arr[10][10] - карта расположения кораблей (значения 0 и 1)
Как лучше его сохранить?
Я думал, может, по 1 байту разделить 8 бит, получается 13 байт
Но мне не нравится, что 4 бита лишние...
Посоветуйте как лучше, плиз
?
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@Flying
По-моему ответ на вопрос будет зависеть от цели такой упаковки.

Для runtime'а вполне можно использовать и "раскрытый" массив, он ведь небольшой. А если цель в достижении минимального размера и не предполагается runtime доступ и изменения без распаковки - я бы смотрел на вариант упаковки с сохранением не поля, а кораблей - максимально получается по 10 бит на корабль:
  • 7 бит позиции
  • 2 бита на тип корабля
  • 1 бит ориентации (для "однопалубных" можно пропустить)

Думаю что можно ещё больше оптимизировать если хранить не абсолютный отступ, а относительный от предыдущего, тогда скорее всего можно будет "влезть" в байт на корабль и 10 байт в сумме.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ksnk
А выстрелы куда сохранять? Зачем паковать, места на поле 10x10 не хватает?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽