@synapse_people

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

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

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

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

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

Похожие вопросы