Какой смысл имеет независимая от регистра сортировка в лексикографическом порядке определенного языка? Если в русском языке принято, что строчные буквы предшествуют прописным, зачем менять этот порядок? Я еще понимаю причины появления скажем функции _stricmp в C, которая в случае английского языка является неким подобием функции strcoll, но зачем кому-то понадобилась _stricoll?
Здравствуйте, igna, Вы писали:
I>Какой смысл имеет независимая от регистра сортировка в лексикографическом порядке определенного языка? Если в русском языке принято, что строчные буквы предшествуют прописным, зачем менять этот порядок?
Совершенно непонятно, что где принято, и почему это должно влиять на библиотечные функции. Помимо case sensitivity есть еще и accent sensitivity. Вопросы применения зависят исключительно от приложения.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Совершенно непонятно, что где принято, и почему это должно влиять на библиотечные функции. Помимо case sensitivity есть еще и accent sensitivity. Вопросы применения зависят исключительно от приложения.
Принято это например в словарях. Для некоторых языков существуют несколько способов сортировки, так соотвественно и locale существует для каждого из способов сортировки свой. Про accent sensitivity говорят обычно имея ввиду, что в одном языке она есть, в другом нет. Если вдруг обнаружится язык, где приняты два способа сортировки, accent sensitive и accent insensitive, значит нужны соответственно два locales, что тут непонятного?
Здравствуйте, igna, Вы писали: I>Принято это например в словарях.
Что именно "это"? I>Для некоторых языков существуют несколько способов сортировки, так соотвественно и locale существует для каждого из способов сортировки свой.
Только не locale, а collation. I>Про accent sensitivity говорят обычно имея ввиду, что в одном языке она есть, в другом нет.
Про нее обычно говорят, что в одном приложении она есть, а в другом — нет. I>Если вдруг обнаружится язык, где приняты два способа сортировки, accent sensitive и accent insensitive, значит нужны соответственно два locales, что тут непонятного?
Два collation. Locale ничего не говорит про сравнение строк.
В большинстве языков нет четких правил сравнения строк. Считать ли "ёлка" и "Елка" равными — личное дело проектировщика приложения.
Я вообще твою претензию не понимаю. Я бы понял, если бы чего-то не было, что тебе нужно. А зачем требовать, чтобы что-то убрали ?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Что именно "это"?
Что строчные буквы предшествуют прописным, тут всего-то три сосны. S>В большинстве языков нет четких правил сравнения строк. Считать ли "ёлка" и "Елка" равными — личное дело проектировщика приложения.
Не передергивай, речь не о сравнении на равенство, а о сортировке. И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески.
Здравствуйте, igna, Вы писали:
S>>В большинстве языков нет четких правил сравнения строк. Считать ли "ёлка" и "Елка" равными — личное дело проектировщика приложения. I>Не передергивай, речь не о сравнении на равенство, а о сортировке. И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески.
Берем "елка, ёлка,епископ", сортируем:
Стандартное сравнение: "елка, епископ, ёлка"
е и ё -- одна буква: "елка, ёлка, епископ" или "ёлка, елка, епископ" // не важно какой вариант, так как е и ё совпадают
Какой вариант "правильный"?
Правильные варианты ответа:
1) первый
2) второй
3) ни один из них //например для компарера определяющего близость слова к данному (он используется при проверке орфографии для предсказания замены неправильно написанного слова)
4) оба // не уверен, что есть такие задачи, но компарер придумать можно
Здравствуйте, igna, Вы писали:
I>Здравствуйте, Sinclair, Вы писали:
S>>Что именно "это"? I>Что строчные буквы предшествуют прописным, тут всего-то три сосны. S>>В большинстве языков нет четких правил сравнения строк. Считать ли "ёлка" и "Елка" равными — личное дело проектировщика приложения. I>Не передергивай, речь не о сравнении на равенство, а о сортировке.
Сравнение на равенство — это намного проще чем сортировка. Читать здесь(желательно все) — Unicode Collation Algorithm.
Здравствуйте, igna, Вы писали:
I>Первый.
С чего ты взял?
I>Собственно мой изначальный вопрос был о том, в каком-таком случае кого-то этот вариант может не устроить.
Вернемся к тому же самому примеру про "компарера определяющего близость слова к данному (он используется при проверке орфографии для предсказания замены неправильно написанного слова".
Ты написал "елкр", программа проверки орфографии подсветила слово, нажимаешь правой кнопкой и видишь...
Что ты видишь? Ты видишь десяток слов которые возможно ты имел ввиду.
Как составить этот десяток? Почему именно эти слова попали в этот десяток а не другие? Этот десяток чем-то лучше чем остальные 10 тыс слов в словаре. Значит нужно отсортировать словарь используя критерий "лучшести" для данного конкретного случая.
Если формализовать этот критерий, каков он будет? Слово будет "лучше" если количество изменений которые преобразуют это слово в "елкр" будет "меньше".
Как это влияет на нашу ситуацию? "елка" имеет "вес" 1, "ёлка" -- 2, "епископ" -- 6.
Отсортировать по возрастания 1, 2 и 6 не составляет труда.
P.S. Я отвечал на старое сообщение, на него и отвечу.
Здравствуйте, igna, Вы писали:
I>Какой смысл имеет независимая от регистра сортировка в лексикографическом порядке определенного языка?
Задача:
Есть список пользователей. Ники они себе заводили "как попало": Aikin, aIkIn, AIKIN, aikIN.
Ты примерно помнишь ник, но совершенно не помнишь регистр его написания.
Решение:
Сортировка без учета регистра.
Здравствуйте, Aikin, Вы писали:
A>Если формализовать этот критерий, каков он будет? Слово будет "лучше" если количество изменений которые преобразуют это слово в "елкр" будет "меньше". A>Как это влияет на нашу ситуацию? "елка" имеет "вес" 1, "ёлка" -- 2, "епископ" -- 6. A>Отсортировать по возрастания 1, 2 и 6 не составляет труда.
Здравствуйте, Юрий Жмеренецкий, Вы писали:
I>>Здравствуйте, Sinclair, Вы писали:
S>>>Что именно "это"? I>>Что строчные буквы предшествуют прописным, тут всего-то три сосны. S>>>В большинстве языков нет четких правил сравнения строк. Считать ли "ёлка" и "Елка" равными — личное дело проектировщика приложения. I>>Не передергивай, речь не о сравнении на равенство, а о сортировке.
ЮЖ>Сравнение на равенство — это намного проще чем сортировка.
Знаю, это Sinclair зачем-то равенство за уши притянул.
Здравствуйте, Aikin, Вы писали:
A>Есть список пользователей. Ники они себе заводили "как попало": Aikin, aIkIn, AIKIN, aikIN. A>Ты примерно помнишь ник, но совершенно не помнишь регистр его написания. A>Решение: A>Сортировка без учета регистра.
Здравствуйте, igna, Вы писали:
I>Какое отношение все это имеет к collation?
Не передергивай, речь не о сравнении на равенство, а о сортировке. И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески.
1) Именно на эту цитату я отвечал
2) Если ты имел ввиду "отсортированном по алфавиту списке", то а) так бы и писал, б) для некоторых задач е и ё могут быть одной и той же буквой.
Здравствуйте, igna, Вы писали:
I>Здравствуйте, Aikin, Вы писали:
A>>Есть список пользователей. Ники они себе заводили "как попало": Aikin, aIkIn, AIKIN, aikIN. A>>Ты примерно помнишь ник, но совершенно не помнишь регистр его написания. A>>Решение: A>>Сортировка без учета регистра.
I>strcoll: aikIN, aIkIn, Aikin, AIKIN I>stricoll: Aikin, aIkIn, AIKIN, aikIN
I>И каким же образом поиск в втором списке для твоей задачи подходит лучше?
Для списка в 4 элемента сортировка не нужна вообще!
A>Не передергивай, речь не о сравнении на равенство, а о сортировке. И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески.
A>1) Именно на эту цитату я отвечал
-Мальчик, как тебя зовут?
(молчит)
-Мальчик, ты что, тормоз?
-Меня Вася зовут...
-А где ты живешь?
-Я не тормоз...
Здравствуйте, Aikin, Вы писали:
I>>strcoll: aikIN, aIkIn, Aikin, AIKIN I>>stricoll: Aikin, aIkIn, AIKIN, aikIN
I>>И каким же образом поиск в втором списке для твоей задачи подходит лучше? A>Для списка в 4 элемента сортировка не нужна вообще!
Ну понятно, что до и после этих четырех еще немерянные тыщи, и что? Каким образом поиск в втором списке для твоей задачи подходит лучше?
Здравствуйте, igna, Вы писали:
I>Здравствуйте, Aikin, Вы писали:
I>
A>>Не передергивай, речь не о сравнении на равенство, а о сортировке. И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески.
После чего ты спросил "В каком-таком случае этот вариант кого-то может не устроить, а вариант "елка, ёлка, епископ" устроить?".
Я привел пример.
Ты сослался на то, что имел ввиду совсем другое.
Я ответил что обсуждение идет в контексте поста Re[4]: Смысл of case insensitive collation
Здравствуйте, igna, Вы писали:
I>Здравствуйте, Aikin, Вы писали:
I>>>strcoll: aikIN, aIkIn, Aikin, AIKIN I>>>stricoll: Aikin, aIkIn, AIKIN, aikIN
I>>>И каким же образом поиск в втором списке для твоей задачи подходит лучше? A>>Для списка в 4 элемента сортировка не нужна вообще!
I>Ну понятно, что до и после этих четырех еще немерянные тыщи, и что? Каким образом поиск в втором списке для твоей задачи подходит лучше?
Ты случаем не издеваешься?
Здравствуйте, Aikin, Вы писали:
A>Что тебя не устраивает?
Твой пример имеет отношение к сортировке, но к collation — вряд ли. Все-таки согласись, странно постоянно и в каждом предложении напоминать о том, что речь идет о сортировке в смысле collation, когда collation эта появилась в названии темы с самого начала и не девается оттуда никуда.
A>P.S. Переход на личности не засчитан