![]() |
|
|
![]()
|
|
| асд1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2013 Репутация: нет Всего: нет |
Здравствуйте.
К примеру, у меня есть 3 000 000 цветов, занесенных в текстовый файл. Например, #000000, #023022 и.т.д... (Конечно без решетки) Как мне представить каждый цвет двумя или, самое большее, тремя символами? Чтобы, например, компьютер видел "%1" и понимал, что это #000000? |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Вообще-то, множество предусматриваемых вами кодов слабовато. Если взять 256 символов и три знакоместа, получим 16 млн. Вроде хватает, то текст будет содержать всякую лабуду типа "№;%" - это один код, пробел кстати тоже использован.
Можно узнать, в чем суть задачи? Если в экономии места, то пишите бинарный файл, как раз три байта на цвет и получится. Причем не придется тратиться на разделители. -------------------- Mirkes |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Подсчет ИМХО простой.
Для записи N вариантов (цветов в вашем случае) M символами полуается, что каждый символ должен нести количество информации равное корню M-ной степени из N (дробный результат округлять к большему). То есть, чтобы закодировать 3 миллиона комбинаций двумя символами нужно, чтобы каждый символ имел 1733 вариантов. Для трех-символьной кодировки надо уже только 145 комбинаций на символ. Поскольку интересует именно двоичное представление, то в первом случае придется использовать по 2 байтa на символ, а во втором по 1 байту (что, собствено и делается обычно). Поскльку двухбайтная запись позволяет записать 65536 вариантов, избыточность здесь уж слишком велика. Поэтому можно, конечно, ограничиться меньшим количеством бит на символ. Достаточно 11 бит (2048 вариантов). Но в этом случае придется писать вестьма комберзонный код записи файла - каждый байт придется обрабатывать по-разному в зависимости от его номера в файле. Поэтому удобрее всего будет 12 битная кодировака (4096 вариантов на символ). В этом случае на экране у Вас будут двусимвольные обозначения, а в файле обычные трехсимвольные. ЗЫ: По-любому значков для разных цветов придется изобретать немеряно (рекомендую китайские иероглифы -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |