Важная информация

User Tag List

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 35

Тема: Помогите в составлении словаря для игры

  1. #21
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Результат мне дайте потом, я попробую пошаманить
    Словарь уже архивированный. Архиватор тоже выложу.
    Все буквы уже сделаны, теперь сокращаю. Скоро будет!

  2. #22
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Словарь уже архивированный. Архиватор тоже выложу.
    Все буквы уже сделаны, теперь сокращаю. Скоро будет!
    Тогда оригинал дай (типа все слова). И требования по доступу к этой базе (типа последовательный просмотр или произвольный доступ к любому слову).

  3. #23
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Даю все наработки по архивированию словаря (см.файл-архив).


    Сейчас алгоритм такой:

    Слова сортируются по количеству букв и по алфавиту.

    Слова разбиваются по блокам words_2 ... words_8, в каждом блоке только слова с указанным количеством букв (от 2 до 8).

    Каждый блок содержит:
    - заголовок с количеством слов в блоке (2 байта);
    - последовательность битов архивированных слов.

    Формирование последовательности битов:

    1.
    - если текущее слово не имеет одинаковую первую букву с предыдущим словом, то вставляется последовательность битов 000;
    - если текущее слово имеет 1 одинаковую первую букву с предыдущим словом, то вставляется последовательность битов 001;
    - если текущее слово имеет 2 одинаковых первых букв с предыдущим словом, то вставляется последовательность битов 10;
    - если текущее слово имеет 3 одинаковых первых букв с предыдущим словом, то вставляется последовательность битов 11;
    - если текущее слово имеет 4 одинаковых первых букв с предыдущим словом, то вставляется последовательность битов 010;
    - если текущее слово имеет 5 одинаковых первых букв с предыдущим словом, то вставляется последовательность битов 011.
    (Для первого слова блока записывается последовательность битов 000).

    2. Оставшиеся неодинаковые буквы текущего слова записываются последовательно своими 5-битными кодами.

    3. Переход к следующему слову и п.1.

    ---

    Исходный словарь еще не до конца подчищен от лишних слов.
    Нужно всё уместить в 34500 байт.
    Сейчас пока получается около 38000 байт. Подсчитал, получается с текущим алгоритмом, чтобы уместиться в 34500 байт, нужно около 13500 слов в словаре.
    Вложения Вложения

  4. #24
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    И требования по доступу к этой базе (типа последовательный просмотр или произвольный доступ к любому слову).
    Последовательный просмотр, произвольный не нужен. Но обязательно разбиение на блоки с одинаковым количеством букв в словах (т.е., сначала блок 2х-буквенных слов, потом блок 3х-буквенных и т.д.)

    ---------- Post added at 13:28 ---------- Previous post was at 13:25 ----------

    Хотя, можно и убрать требование разбиения на блоки. Но тогда нужно знать длину каждого читаемого слова.

  5. #25
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    К сожалению, мои методы дали худший результат: 55146 и ~85000 для dizpack и токенизации соответственно.

  6. #26
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дело в том, что словарь - это не просто текст с повторяющимися словами или комбинациями символов, так что методы архивирования текста тут не подходят.

    ---------- Post added at 11:38 ---------- Previous post was at 11:19 ----------

    У меня есть мысль, что если не разбивать на блоки по числу букв в слове, то будет еще большее сжатие по моему алгоритму, т.к. больше будет одинаковых букв между соседними словами. Но как эффективно при этом распознавать длину каждого слова, не знаю.

  7. #27
    goblinish
    Гость

    По умолчанию

    а база Пастухова не поможет? на укроторренте валяется 10гигов.
    или как вариант ElcomSoft DreamPack 2010+словари.

  8. #28
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goblinish Посмотреть сообщение
    база Пастухова не поможет?
    придумай алгоритм кодирования сотен миллионов слов в 48к

  9. #29
    goblinish
    Гость

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    придумай алгоритм кодирования сотен миллионов слов в 48к
    курить алгоритмы компрессии?

    Может и оффтоп, но у меня от Verizon была игруха наподобие "Эрудита", так та трехбуквенные аббревиатуры прокатывало. иногда SEX мелькал

  10. #30
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проблема в том, что в русском языке средняя длина слова больше 6 букв, в английском 4-5. Пока удается уместить 13500 слов на 48к, что неплохо. На 128к значительно больше можно. В английском Эрудите для Спектрума - Scrabble http://www.worldofspectrum.org/infos...cgi?id=0004375 - около 12000 слов, это притом, что можно использовать любые падежи, формы и прочее, чем и пользуется их алгоритм (я заглядывал в код). Не оптимально у них. В русском языке можно использовать только нарицательные существительные в именительном падеже.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Помогите перевести игры в TR-DOS
    от fwmakc в разделе Для начинающих
    Ответов: 59
    Последнее: 18.09.2014, 11:14
  2. Помогите перевести игры в TR-DOS
    от fwmakc в разделе Игры
    Ответов: 26
    Последнее: 04.07.2010, 19:11
  3. Помогите с названием игры!
    от Mat1sha в разделе Игры
    Ответов: 4
    Последнее: 19.01.2008, 22:44
  4. Помогите вспомнить и найти игры...
    от Ipsilon в разделе Игры
    Ответов: 4
    Последнее: 25.09.2007, 20:41
  5. Помогите с названием игры!
    от Levit в разделе Игры
    Ответов: 29
    Последнее: 01.11.2006, 13:01

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •