Текущий архив: 2008.06.08;
Скачать: CL | DM;
Вниз
Непонял конструкцию Найти похожие ветки
← →
Gydvin © (2008-04-28 15:56) [0]Туплю чуть.
Непонятно, что в выделеном участке кода происходит.Vowel=["А", "Я", "О", "У", "Ю", "Е", "Э", "И", "Ы", "Ё",
"а", "я", "о", "у", "ю", "е", "э", "и", "ы", "ё"];
Symbs=["Ь", "ь", "Ъ", "ъ"];
Cons=["А".."Я", "а".."я"]-Vowel-Symbs;
← →
Сергей М. © (2008-04-28 16:00) [1]Операция над множествами там происходит, что же еще ..
← →
Anatoly Podgoretsky © (2008-04-28 16:12) [2]> Gydvin (28.04.2008 15:56:00) [0]
Их множества А, исключается множесто Б, а зачем В
Кто то извращался.
← →
Григорьев Антон © (2008-04-28 16:39) [3]
> Anatoly Podgoretsky © (28.04.08 16:12) [2]
> Кто то извращался.
И в чём именно извращение?
> Gydvin © (28.04.08 15:56)
Ради интереса, откуда этот код? Очень похоже на одну мою программу, но есть мелкие отличия.
← →
Германн © (2008-04-28 16:47) [4]
> Григорьев Антон © (28.04.08 16:39) [3]
>
>
> > Anatoly Podgoretsky © (28.04.08 16:12) [2]
> > Кто то извращался.
>
> И в чём именно извращение?
>
Ни в чём. Я так постоянно составляю константы. Очень удобно.
← →
Anatoly Podgoretsky © (2008-04-28 17:00) [5]> Григорьев Антон (28.04.2008 16:39:03) [3]
Извращение простое, можно же прямо написать set of [что надо], без этих, пусть и на этапе компиляции и это что то будет более понятно, на надо будет ломать голову или создавать на бумажке это "что надо".
Я же не утверждаю, что это не рабочее.
← →
Anatoly Podgoretsky © (2008-04-28 17:01) [6]> Германн (28.04.2008 16:47:04) [4]
Ну так это тебе, а со стороны это тяжело читать, нафиг голову то напрягать?
← →
X9 © (2008-04-28 17:10) [7]> [5] Anatoly Podgoretsky © (28.04.08 17:00)
К чему эта лишняя работа? Если рядом с таким объявлением имеется вменяемый комментарий, то эта строчка вполне правильная, и сокращает объём исходника не в ущерб наглядности.
← →
Германн © (2008-04-28 17:16) [8]
> Anatoly Podgoretsky © (28.04.08 17:00) [5]
> Anatoly Podgoretsky © (28.04.08 17:01) [6]
Очень удобно. Если одна константа меняется, например при развитии программы, то автоматом меняются и другие константы, которые от неё зависят.
← →
Восхищенный (2008-04-28 18:35) [9]И по смысловой наглядности очень удобно:
согласные - это все_буквы минус гласные и минус спец_буквы.
Все просто и понятно. И еще [8].
← →
Gydvin © (2008-04-28 19:12) [10]
> Ради интереса, откуда этот код? Очень похоже на одну мою
> программу, но есть мелкие отличия.
Возможно. Это огрызок из одной проги (мне автор подогнал, на самом восходе моего ученичества по делфи, для совместимости с моими, типа, плагинами). Юнита переноса слов. Сегодня обучал ее юникоду и потому вопросы возникали.
> И по смысловой наглядности очень удобно:согласные - это
> все_буквы минус гласные и минус спец_буквы.
если не сложно. Можно нагляднее - продолжаю тупить
← →
Palladin © (2008-04-28 19:13) [11]какие именно значки не понятны?
← →
Gydvin © (2008-04-28 19:28) [12]значки то все понятны. Не понятно что происходит с Cons, когда оттуда, якобы происходит отнятие Vowel и Symbs.
Если читать дословно (как я понимаю)
Cons - это двух уровневый массив char. От него (как то) идет отнятие одноуровневых массивов! Хотя дальше по коду есть строка (if texti[i] in Cons then) и символы вроде, как учавствуют... Короче не вьехал. Для примера если взять такой: Cons=["1".."3"] от него "отнять" Symbs=["1"] что будет с Cons?
← →
Anatoly Podgoretsky © (2008-04-28 19:32) [13]> Gydvin (28.04.2008 19:28:12) [12]
Будет 2..3
← →
Palladin © (2008-04-28 19:32) [14]Ты где нашел слово "массив"? это не массивы, это множества. Бегом бежим за учебником паскаля (ну или в справку) изучать ключевое слово Set
← →
Gydvin © (2008-04-28 19:43) [15]
> Бегом бежим за учебником паскаля (ну или в справку) изучать
> ключевое слово Set
а придется...
> Anatoly Podgoretsky © (28.04.08 19:32) [13]
то есть происходит "отнятие" "участка" Symbs из Cons? Как бы удаление субстроки. Поправьте если ошибаюсь
← →
Palladin © (2008-04-28 19:45) [16]
> то есть происходит "отнятие" "участка" Symbs из Cons? Как
> бы удаление субстроки. Поправьте если ошибаюсь
все так же как в теории множеств...
← →
Германн © (2008-04-28 19:55) [17]
> то есть происходит "отнятие" "участка" Symbs из Cons? Как
> бы удаление субстроки. Поправьте если ошибаюсь
>
В памяти, которую это множество занимало, один бит выставляется в 0.
← →
@!!ex © (2008-04-28 20:02) [18]> то есть происходит "отнятие" "участка" Symbs из Cons? Как
> бы удаление субстроки. Поправьте если ошибаюсь
Ты ошибаешься.
множество - это массив булевский(грубо говоря, вообще он может и в битах хранится, и как угодно).
И когда ты исключаешь значение или добавляешь, размер НЕ меняется. Как уже сказано в [17] соответствующему элементу выставялется флаг false. и все.
← →
Gydvin © (2008-04-28 20:15) [19]Вот! :0) Теперь понятно. Спасибо.
← →
Gydvin © (2008-04-28 20:24) [20]мх довольно удобный механизм... :)
← →
Григорьев Антон © (2008-04-28 21:08) [21]
> Gydvin © (28.04.08 19:12) [10]
> Возможно. Это огрызок из одной проги (мне автор подогнал,
> на самом восходе моего ученичества по делфи, для совместимости
> с моими, типа, плагинами). Юнита переноса слов. Сегодня
> обучал ее юникоду и потому вопросы возникали.
Точно, для переноса слов :) Мой вариант, если интересно, здесь: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=171
А под Unicode этот участок просто так не перенесётся. Базовым типом множества должен быть тип с не более чем 255 элементов, так что WideChar не подходит. Разве что на будущие версии Delphi с поддержкой Unicode надежда, потому что множества часто используются при работе с символами, и если нельзя будет делать WideChar-множества, много кода окажется непереносимым.
← →
Тыщ (2008-04-28 21:13) [22]Григорьев Антон © (28.04.08 21:08) [21]
> WideChar-множества
8 кб на встроенный тип? Неплохо.
← →
Григорьев Антон © (2008-04-28 21:27) [23]
> Тыщ (28.04.08 21:13) [22]
> Григорьев Антон © (28.04.08 21:08) [21]
> 8 кб на встроенный тип? Неплохо.
При желании можно и поменьше сделать, особенно с учётом того, что используемые в программе значения этого типа обычно будут содержать много меньше элементов, чем это возможно. Работа с таким множеством будет, конечно, медленнее, но современным процессорам вполне по зубам.
← →
@!!ex © (2008-04-28 21:28) [24]> [22] Тыщ (28.04.08 21:13)
ну вопервых мнодества в таком виде нужны не часто, поэтому 8 кб не такая уж и большая цена... другой вопрос, сколько времени будет выполнятся операция in....
Третий вопрос в том, что 8 кб это максимум, который не нужен для описания алфавита конкретного языка.
Поэтому тип может содержать все теже 256 значений + 1 значение для смещения в Unicode.
← →
@!!ex © (2008-04-28 21:33) [25]Я туплю. и Антон в [23] не прав. Стандарт Unicode не гарантирует, что символы одного алфавита будут находится рядом.
← →
@!!ex © (2008-04-28 21:35) [26]Да к томуже учитывая символы без монолитных форм...
ИМХО множество на основе Unicode задача не слишком простая, и врядли CodeGear будут с этим заморачиваться...
← →
Григорьев Антон © (2008-04-28 21:39) [27]
> @!!ex © (28.04.08 21:33) [25]
> Я туплю. и Антон в [23] не прав. Стандарт Unicode не гарантирует,
> что символы одного алфавита будут находится рядом.
А я разве говорил о том, что они должны находиться рядом? Существуют же всякие ассоциативные массивы, в которых ключи рядом не находятся.
← →
@!!ex © (2008-04-28 21:42) [28]> [27] Григорьев Антон © (28.04.08 21:39)
Хм. Это уже не классическое множество. Соответственно реализация подобного интерфейса на уровне языка теряет смысл.
Рациональнее сделать обертку для массива, который уже можно конфигурировать под конкретную задачу.
← →
wicked © (2008-04-28 21:50) [29]
> Я туплю. и Антон в [23] не прав. Стандарт Unicode не гарантирует,
> что символы одного алфавита будут находится рядом.
а пусть не находятся
8 кб хватит, чтобы представить все 65К символов, которые может предоставить 16 битный юникод
а надо меньше - будет набор из меньшего числа байт и смещение самого младшего бита (например, бит 0 = 0x1234)
← →
Anatoly Podgoretsky © (2008-04-28 21:52) [30]> Gydvin (28.04.2008 19:43:15) [15]
Вообще то эта операция называется Difference (разница), "отнятие" произойдет если эту разницу присвоить переменной
← →
Anatoly Podgoretsky © (2008-04-28 21:58) [31]> @!!ex (28.04.2008 21:42:28) [28]
Более чем классическое, у тебя же не вызывает возражения данная конструкция [1..2, 3..7, 13, 81]
Это забота компилятора упаковать все это в минимальное количество бит.
Никаких проблем с Юникодом не вижу, таже самая обработка, что и ранее
← →
Германн © (2008-04-29 02:32) [32]
> Anatoly Podgoretsky © (28.04.08 21:58) [31]
>
> > @!!ex (28.04.2008 21:42:28) [28]
>
> Более чем классическое, у тебя же не вызывает возражения
> данная конструкция [1..2, 3..7, 13, 81]
> Это забота компилятора упаковать все это в минимальное количество
> бит.
>
А компилятор и не упаковывает. Он берёт максимальное значение элемента множества и выделяет память.
← →
Gydvin © (2008-04-29 05:24) [33]
> Григорьев Антон © (28.04.08 21:27) [23]
> А под Unicode этот участок просто так не перенесётся.
Я не правильно выразился. Обучал я его нац символам каз. яз. И сделал так:
Принимаем юникод, вместо нац.
символов ставим подстоновочные символы из ansi. Те которые в нормальном состояние в тексте не учавствуют. Затем widestring приравниваем к string, расставляем переносы, возвращаем нац символы назад (result у нас тоже widestring)
> Точно, для переноса слов :) Мой вариант, если интересно,
> здесь
Он самый :0) Только чуть переделаный
← →
ferr (2008-04-29 06:49) [34]set<char> s; // всё остальное глупости =)
← →
@!!ex © (2008-04-29 07:30) [35]> [31] Anatoly Podgoretsky © (28.04.08 21:58)
Действительно, если отойти от стандартной реализации со статическимобъемом данных, и использовать динамический, то проблем как бы и нет вообще...
← →
han_malign © (2008-04-29 12:34) [36]GetStringTypeW - и будет вам щастье...
Страницы: 1 вся ветка
Текущий архив: 2008.06.08;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.036 c