Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.56 MB
Время: 0.019 c
2-1210691039
Эльф
2008-05-13 19:03
2008.06.08
TreeView


15-1209047607
Slider007
2008-04-24 18:33
2008.06.08
С днем рождения ! 24 апреля 2007 четверг


2-1210954730
Alexander
2008-05-16 20:18
2008.06.08
Динамическое создание объектов


2-1210690049
wnix
2008-05-13 18:47
2008.06.08
Работа с файлом


8-1181824621
Manur
2007-06-14 16:37
2008.06.08
Обои