powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Очень интересны нюанс с оператором switch
25 сообщений из 236, страница 4 из 10
Очень интересны нюанс с оператором switch
    #39984313
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
Приведите пример составного символа, будем смотреть.
Для кирилицы? "Ё" и "Й". Да, каждый из этих символов имеет "собственный" код, но вы не может запретить "всему миру" использовать нормализацию с полной декомпозицией.

Ну если кто-то включил полную декомпозицию, наверно, он знает что делает, ему это надо и он проблемы решит? Мне не нужна такая декомпозиция. Т.е. я не вижу проблемы с "Й" в UC-32. А вот проблемы в utf-8 я вижу.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984317
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юникод обязан работать не только у вас и для включения полной декомпозиции существуют вполне весомые аргументы.

P.S.
ConEmu и Хабр по ссылке оттуда.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984319
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravА вот проблемы в utf-8 я вижу.

И в чём её проблема?

PS: Ни Far3, ни Notepad, ни один из других известных мне просмотрщиков текстовых файлов на
Windows не умеет работать с декомпозицией, что меня удручает, поскольку именно в таком
формате идёт программа передач с телевизора.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984321
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Юникод обязан работать не только у вас и для включения полной декомпозиции существуют вполне весомые аргументы.

У вас, мне кажется, какой-то неверный подход. Юникод обязан работать у всех, но не работает. При чём не работает у неглупых людей. Может проблема с Юникодом? Но ладно.

Какие есть весомые аргументы включить полную декомопозицию?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984324
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Какие есть весомые аргументы включить полную декомопозицию?
Искать "йод" и "иод", как пример.

P.S.
Юникод не работает тогда, когда очередной petrav считает, что "вот эту фигню можно не делать - бред же".
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984327
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
Какие есть весомые аргументы включить полную декомопозицию?
Искать "йод" и "иод", как пример.

Подождите. Ну вот мы полностью декомпозировали "йод", получилось четыре символа utf-8, "й" распалась на два, так? Но тривиальным алгоритмом поиска мы всё равно не найдём "иод". Я прав?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984337
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Но тривиальным алгоритмом поиска мы всё равно не найдём "иод". Я прав?
Только потому, что привыкли "не делать вон ту фигню".
Существуют диапазоны юникодных символов и всяческая диакритика расположена во вполне конкретных местах. И разные варианты пробела занимают вполне конкретные места и разные варианты дефисов - тоже.
Следовательно, корректному "юникодному" алгоритму надо понимать - какой именно "тип" у найденного кода, но не всегда требуется анализ конкретного кода в уже известном диапазоне ("типе").
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984338
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
получилось четыре символа utf-8
И в UTF-16 и в UTF-32 тоже будет четыре кода. Но вы, зачем-то, опять выделили UTF-8.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984344
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
Но тривиальным алгоритмом поиска мы всё равно не найдём "иод". Я прав?
Только потому, что привыкли "не делать вон ту фигню".
Существуют диапазоны юникодных символов и всяческая диакритика расположена во вполне конкретных местах. И разные варианты пробела занимают вполне конкретные места и разные варианты дефисов - тоже.
Следовательно, корректному "юникодному" алгоритму надо понимать - какой именно "тип" у найденного кода, но не всегда требуется анализ конкретного кода в уже известном диапазоне ("типе").

Т.е. вы хотите сказать, что в стандарте Юникода прописано, что после русской буквы "е" допустим диакритический знак, причём именно такой как в этой букве "ё"? И что в русском языке допускается заменить "ё" на "е"? И немец, который ни бум-бум в русском, сможет учитывать этот нюанс (при разработке поискового движка) используя исключительно стандарт Юникода?

Или вы хотите просто определить, что символ диакретический и его отбросить в поиске?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984345
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
получилось четыре символа utf-8
И в UTF-16 и в UTF-32 тоже будет четыре кода. Но вы, зачем-то, опять выделили UTF-8.

Я не отбрасывал. Я пытаюсь понять как вы видите написание поиска по строке.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984346
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После любой буквы допустим любой диакритический знак. И да, вне зависимости от языка его
можно отбросить если нужно accent-insensitive сравнение.

Как там прописано case-insensitive я не знаю.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984349
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav, почитай еще раз закрытый топик https://www.sql.ru/forum/1319689-1/msvc-i-gcc-sovmestimost-kodirovok-ishodnikov

Там было много полезной инфы к сведению.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984350
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

После любой буквы допустим любой диакритический знак. И да, вне зависимости от языка его
можно отбросить если нужно accent-insensitive сравнение.

Как там прописано case-insensitive я не знаю.

Т.е. в любом языке отбрасывание диакритических знаков не меняет смысла слова? Спорное утверждение. "Нёбо" — "небо", "зайка" — "заика". Но ладно, мы пишем простой поиск и отбросим все диакритические знаки после полной декомпозиции. Ведь именно о поиске после декомпозиции писал Сидоров.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984356
Basil A. Sidorov
Алексей Роза
у gzip есть 0-9 уровни сжатия, на 0 самое существенное различие
Использовать термин "сжатие" для "store only" - сильный ход. "Мне бы такое зрение - видеть Никого, да ещё на таком расстоянии".

судя по кол-ву букв в твоей жизни наконец-то произошло что-то важное.
1, да.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984360
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravТ.е. в любом языке отбрасывание диакритических знаков не меняет смысла слова?

В любом языке поиск слова идёт по написанию, а не по смыслу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984365
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не уверен, что разница между "e" и "ё" и "и" и "й" это именно диакретические символы
такое трактование термина "диакретический" мне кажется достаточно вольным.

при таком подходе и мягкий / твердый знак можно диакретическим символом назвать

IMHO единственный знак похожий на диакретический - знак ударения. А буквы "е", "ё", "и", "й", "ь", "ъ", "ять", "фета" это все же отдельные буквы. IMHO

Если кто видел древнегреческий алфавит ))) - вот там полное развличение с диакретическими символами. Буква греческого алфавита + 8 (точно не уверен, но их комбинаций еще больше!) диакретических символов которые почти к любой букве могут применяться. AFAIK

В общем, тут лингвист нужен )))

ВикипедияДиакрити́ческие зна́ки (др.-греч. διακριτικός — «служащий для различения», от др.-греч. κριτικός — «способный различать»):

в лингвистике — различные надстрочные, подстрочные, реже внутристрочные знаки, применяемые в буквенных (в том числе консонантных) и слоговых системах письма не как самостоятельные обозначения звуков, а для изменения или уточнения значения других знаков;
в типографике — элементы письменности, модифицирующие начертание знаков и обычно набираемые отдельно
...
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984369
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По версии википедии, называть фигню над буквой ё диакретическим знаком некорректно


https://ru.wikipedia.org/wiki/Ё#Название_надстрочного_элемента

Официального и общепринятого термина для выносного элемента, присутствующего в букве «ё», нет. Традиционное языкознание и педагогика использовали слово «двоеточие»[К 3], в последние же сто лет чаще всего обходятся менее формальным выражением «две точки»[К 4], либо вообще стараются избегать отдельного упоминания этого элемента[К 5]. Использование иноязычных терминов (умлаут, трема, диерезис или диалитика) применительно к данной ситуации считается некорректным , так как это диакритические знаки и прежде всего обозначают определённую фонетическую функцию, хотя, например, А. А. Реформатский их использовал[3].
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984384
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Т.е. вы хотите сказать, что в стандарте Юникода прописано, что после русской буквы "е" допустим диакритический знак, причём именно такой как в этой букве "ё"?
Я хочу сказать, что вам не надо делать интеллектуальных усилий, чтобы игнорировать (считать равными) определенные диапазоны юникода.
Если (вдруг) вам потребуется обработка текста детской книжки (с расставленными ударениями), то корректный алгоритм будет корректным, а "оптимизированный" - облажается.

P.S.
Как говАривал дедушка Энштейн: "Делайте просто, но не проще, чем нужно".
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984387
Алексей Роза

в смысле "сам"?
т.е. он непременно должен каждый раз перебирать 127 значений и никак это не изменить?


Эмм. Для обычного switch это goto array pointer address. Для такого - же switch, компилятор оптимизирует и преобразует в обычный массив array get index value что сводиться к простой конструкции ArrSwitch[IDX]
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984390
ВсеРазумный
Для обычного switch это goto array pointer address.


Ну это в лучшем случае, при хорошем оптимизаторе. А так - да, может быть так что switch обычный будет перебираться пока не найдёт свой собственный элемент конструкцией else-If.


Так что вы были не далеки от правды.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984392
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
Т.е. вы хотите сказать, что в стандарте Юникода прописано, что после русской буквы "е" допустим диакритический знак, причём именно такой как в этой букве "ё"?
Я хочу сказать, что вам не надо делать интеллектуальных усилий, чтобы игнорировать (считать равными) определенные диапазоны юникода.
Если (вдруг) вам потребуется обработка текста детской книжки (с расставленными ударениями), то корректный алгоритм будет корректным, а "оптимизированный" - облажается.

Я так понимаю что полная декомпозиция строки сведётся к следующему:

1. Дважды проанализировать все байты текста в котором мы ищем подстроку.
2. Выделение динамической памяти.
3. Копирование всего текста.

А зачем нам для поиска "по Сидорову" вообще делать декомпозицию? Если мы можем алгоритм поиска по utf-8 параметризовать политикой:

Код: plaintext
1.
2.
3.
4.
5.
CharType prepareChar(CharType char)
{
    // Замена: "й" -> "и", "ё" -> "е" и т.д.
    return <символБезДиакретики>;
}



И в один проход, без всякой декомпозиции и копирования, in place найти нужную нам строку?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984394
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вас смутил тип CharType могу предложить такую политику:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
struct CharType
{
    char ch[4];
    uint8_t len;
};

CharType prepareChar(CharType char)
{
    // Замена: "й" -> "и", "ё" -> "е" и т.д.
    return <символБезДиакретики>;
}
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984396
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
1. Дважды проанализировать все байты текста в котором мы ищем подстроку.
2. Выделение динамической памяти.
3. Копирование всего текста.
Вся эта многотрудная деятельность (как и многое другое) выполняется разово, а её результат остаётся постоянно доступным.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984400
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
1. Дважды проанализировать все байты текста в котором мы ищем подстроку.
2. Выделение динамической памяти.
3. Копирование всего текста.
Вся эта многотрудная деятельность (как и многое другое) выполняется разово, а её результат остаётся постоянно доступным.

Т.е. вы предлагаете для скорости кешировать результаты полной декомпозиции? Но в таком случае она тем более не нужна, точнее она вообще не нужна. Нам нужна не декомпозиция, а удаление диактретики вообще (й -> и...). И составные символы нам тоже не нужны. И буквой Ё проблем нет.

У нас только одна проблема: если на вход нашей программы какой-то пудель нам подсунет результаты полной декомпозиции.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984402
petrav,

Просто в тексте поиска заменяйте Й,И,E,Ё на X и в искаемом тексте. Проблемы не будет
...
Рейтинг: 0 / 0
25 сообщений из 236, страница 4 из 10
Форумы / C++ [игнор отключен] [закрыт для гостей] / Очень интересны нюанс с оператором switch
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]