Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];

Вниз

Непонял конструкцию   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.045 c
4-1190990109
hinst
2007-09-28 18:35
2008.06.08
DrawTextRect


2-1211113014
Franzy
2008-05-18 16:16
2008.06.08
Быстрый вопрос про Try...Except


11-1190041757
Alexeis_
2007-09-17 19:09
2008.06.08
Более подробная информация о создании зеркал


15-1209268074
sauron
2008-04-27 07:47
2008.06.08
Разработчикам...


4-1190785775
арпывапр
2007-09-26 09:49
2008.06.08
CallNextHookEx - не нужнаю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский