Привет.
Еще не пятница ну и ладно.
Пару лет назад я и некто Базист/Студентик спорили о хеш-арреях и пользе их применения и оптимизации.
Я предложил в шутку что для некоторых случаях (преобразования кодовых страниц) мы можем найти
функцию которая отображает некий маппинг (к примеру Win1251=>Utf16) но при этом не содержит
вообще массивов, хеш-таблиц e.t.c. Параноидальное использование switch(){..} тоже как-бе не
приветствуется. Тоесть функция должна иметь 8 булевых входов. x1....x8.
(8 бит имеет разрядность 1 символ Win1251) и 16 булевых выходов y1...y16 по количеству бит
16 разрядного символа выхода. Функция должна обеспечивать отображение Win1251=>Utf16.
Тоесть сам код функции и является данными. Или не существует чётких границ.
Далее - в соответствии с традициями булевой алгебры
следует сделать ряд преобразований и получить некую минимальную форму (минимизировать).
short getUnicode(byte win1251){
....
}
Вопрос эффективности предполагаемой минимизации я так до сих пор не решил. Возможно
минимизация вообще не даст результата и функция будет адской мешаниной булевых форм.
Первый сюрприз пришёл от кодировки. 1251 - оказалась скушна и неинтересна.
https://ru.wikipedia.org/wiki/Windows-1251Интересующие меня символы кириллицы практически линейно отображаются на диапазон 'A'-'Я',
'a'-'я' в Unicode. Достаточно сделать - несколько if и несколько операций сложения. Символы
псевдографики разбросаны по диапазону Unicode достаточно репрезентативно чтобы занятся
оптимизацией но в рамках общей пользы - неинтересны. У меня - мало текстов которые
их вообще используют. Поэтому - поскипаем 1251.
А вот экзотическая и олд-скульная кодировка koi8-r это настоящее ископаемое.
https://ru.wikipedia.org/wiki/КОИ-8Для нее простым сложением фиг получишь результат. Вобщем попробую решить этот пасьянс.
Заодно освежу свои знания в минимизациях.
Без массивов и хеш-таблиц. И без switch.
До пятницы.