Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как быстро сравнить две строки? [D7, XP]


Страницы:   1 2 3 4

Jimmy ©   (2012-11-05 19:36:00) 

Подскажите, как можно быстро сравнить две строки? (Быстрее, чем St1=St2.) Заранее спасибо!


Rouse_   (2012-11-09 10:15:00) [1]


> MsGuns ©   (08.11.12 23:19) [61]
> Перевод стрелок и раздача слонов.
> Как обычно.

Кода, как я понимаю, не будет?
Зачем тогда выпендриваться было?


Германн   (2012-11-09 03:01:00) [2]


> Jimmy   (05.11.12 20:26) [13]
>
> Создаю хэш таблицы при игре в преферанс на открытых картах.
>  Запоминаю карты всех трех игроков на анализе определенного
> хода и результат этой "позиции", и если далее встречается
> такая же ситуация - пользуюсь уже готовым результатом. Проблема
> в том, что сравнивая имеющиеся карты с теми, что хранят
> хэш-таблицы уходит много времени. Пока сравниваю строки.
>
>

Пока сравниваю строки. Какие именно строки сравниваешь? И что и как их формирует?


Коллект   (2012-11-09 01:22:00) [3]


> MsGuns ©   (08.11.12 23:19) [61]


Экстра-фат троллинг детектед!


> Медвежонок Пятачок ©   (05.11.12 20:47) [21]
> Ты не переживай, лет 20 назад я точно так же бы юзал такие
> модули.


RFC 1321 датируется апрелем 1992 года, а 21 июня 1991 года (20 лет назад) он существовал только в головах и записях Ривеста и соратников.

Впрочем, тебе никто не мешает самому взять, да написать офигительный криптоалгоритм с изящными витиеватыми названиями функций, типа, SchwaineAlgoritmForIdiots(). Так что иди, пиши! Пока не напишешь - не возвращайся даже!

P.S. Прошу прощения у присутствующх за моветон...


DVM   (2012-11-09 00:23:00) [4]


> MsGuns ©   (08.11.12 23:19) [61]

Не я начал дискуссию со слова ЖОПА. Не, даже так, Ж О П А. Вообще это отлично Вас характеризует.


MsGuns   (2012-11-08 23:19:00) [5]

>Rouse_ ©
>DVM ©  

Перевод стрелок и раздача слонов.
Как обычно.

Далее дискутировать бессмысленно, ибо налицо переход на аргументы "сам дурак".


DVM   (2012-11-08 15:44:00) [6]


> MsGuns ©  

Вот кстати тот оригинальный код MD5: http://tools.ietf.org/html/rfc1321
Официальный документ между прочим. Прошу обратить внимание на имена макросов и прочие дефайны и сравнить. Если взять все и переименовать, то сопоставить написанное на паскале с RFC будет на порядок сложнее в случае проблем. Зачем спрашивается.


Rouse_   (2012-11-08 14:17:00) [7]


> Стесняюсь спросить, а чем стиль реализации криптоалгоритма
> принципиально отличается от стиля реализации любых иных
> алгоритмов ?

Та лехко - в крипто обычно происходит куча трансформов/перестановок.
описать их осмысленно не представляется возможным. Как собственно и произвести рефакторинг кода в читабельный вид.
Нет ну конечно можно писать функции вида:
СдвинутьПятыйБитВлевоНаЗначениеПервыхТрехБитовИПрибавитьВосемь() и так раз тридцать подряд на каждый тип трансформа, но это будет абсолютно не читабельно :)

А по поводу сути алгоритма - тут еще проще, данные алгоритмы описаны целиком и полностью, и вникнуть в них на порядок проще чем в какую-то самопальную псевдокрипту.

По поводу вопроса - это уже из серии индусского кода.


DVM   (2012-11-08 13:52:00) [8]


> MsGuns ©   (08.11.12 12:48) [56]


> Если написано такое:
>

такого там нет, если хотите подискутировать по делу, а не заниматься пустым трепом, приводите кусок из исходника подискутируем, возможно там (и я более чем уверен) есть весьма глупые моменты, так как было почти в лоб переведено с си-шного, скажем так "референсного" кода, который является составляющей почти всех операционных систем и прочего по. Код переведен и обернут в делфийскую обертку, для более удобной работы с ним.
Все. вот заодно и исправлю.

Я код не приводил как образец, он не претендует на идеал, он работает, способен выполнить задачу озвученную автором вопроса максимально просто, работает стабильно.
Визуальную привлекательность и читабельность его как и любого криптоалгоритма, улучшить сложно. Осмысленные имена функциям _F, _G, _H, FF, GG дать просто невозможно, т.к. невозможно кратко и понятно описать смысл действий, которые они производят (в основном битовые операции и сдвиги). В оригинале это было макросами си.


Очень Злой   (2012-11-08 12:50:00) [9]

проблема поиска в любом случае - это не проблема. А вот в данном случае автор по идее должен столкнуться с другой проблемой - где хранить всю эту хрень... пробовал оценить число возможных комбинаций, и даже если исключить "зеркальные" относительно мастей или игроков - то цифра получается очень внушительная.


MsGuns   (2012-11-08 12:48:00) [10]

>Rouse_ ©   (07.11.12 19:20) [47]
>Да и кстати, раз уж данный стиль плохой (ничего что я политкорректно? :) >хотелось бы увидеть реализацию любого криптоалгоритма в исполнении >противников данного стиля :)

Стесняюсь спросить, а чем стильреализации криптоалгоритма принципиально отличается от стиляреализации любых иных алгоритмов ?
И еще вопрос.
Если написано такое:

 if ((a == 0) ||
    (a == 1) ||
    (a == 2) ||
     ...
    (a == 999)) {}

то прежде чем сделать выводы о СУТИ написанного (в данном случае тупой проверки числа на положительное целое до тыщи), надо въехать в глобальную суть ВСЕГО проекта ?

Или "жена Цезаря вне подозрений" ?


kilkennycat   (2012-11-08 01:23:00) [11]


> Очень злой   (07.11.12 23:21) [52]

нечто подобное я и предлагал. относительно давно. но что может сравнится с хэшем! к чему какие-то примитивные древовидные поиски по простым байтам.


Очень злой   (2012-11-07 23:46:00) [12]

да. и еще 2 бита нужны для:
00 - обычная игра
01 - без козырей
10 - распасовка
11 - мизер

ну и байты (вернее слова) отвечающие за условные масти (те, что не являются козырем) размещать например в порядке возрастания.


Очень злой   (2012-11-07 23:25:00) [13]

да, пардон, забыл что еще нужно хранить инфу о еще 2-х картах (выходы первого и второго игроков. но для этого достаточно еще 10 бит, хотя в принципе можно подумать как ее вместить в те 64 бита (где информация и так вроде как избыточная)


Очень злой   (2012-11-07 23:21:00) [14]


> Jimmy   (05.11.12 20:26) [13]
>
> Создаю хэш таблицы при игре в преферанс на открытых картах.
>  Запоминаю карты всех трех игроков на анализе определенного
> хода и результат этой "позиции", и если далее встречается
> такая же ситуация - пользуюсь уже готовым результатом. Проблема
> в том, что сравнивая имеющиеся карты с теми, что хранят
> хэш-таблицы уходит много времени. Пока сравниваю строки.
>


Хм. В преферансе 32 карты. Т.е. для хранения карт всех трех игроков достаточно 64 битного числа.
2 бита на 1 карту т.е.
01 карта у первого игрока
10 - карта у второго игрока
11 - карта у третьего игрока
00 - карта не у игроков

позиция битов определяет карту. масти хранить не нужно, первые 8 карт - козырь, остальные - скажем три условные масти

Выход считаем что у первого игрока.

получается 8 байт, и зачем тогда нужен какой-то хеш?

да и один такой (абстрактный) расклад заменяет несколько реальных.
а сравнить 2 - 64-битных (8-байтных) числа - это намного быстрее чем сравнивать не только строки, а и даже хеши (если только не придумывать какие-нить менее чем 8-байтные хеши).

Ну это конечно если я правильно понимаю задачу.. Хотя не уверен на 100%, что правильно ее понял.


sniknik   (2012-11-07 21:22:00) [15]

> Так что шутки с бабиной неуместны, причем уже не в первый раз.
всегда уместны, при голословных, без подтверждения утверждениях о чем-то хорошо всем известном и удовлетворяющем... но не подходящим автору.


Dennis I. Komarov   (2012-11-07 20:38:00) [16]


> Я не понял. а задаче автора сравнение строк вообще для чего
> нужно?

Да не нужно, велосипед будет ;)

З.Ы.
 Автору: Пример строки с расшифровкой в студию...


Очень Злой   (2012-11-07 20:30:00) [17]

Я не понял. а задаче автора сравнение строк вообще для чего нужно? для поиска? если да, то не проще ли проиндексировать это все и искать по индексу?


kilkennycat   (2012-11-07 19:59:00) [18]


> Jimmy

если делать так как предложил я, то перебор всех вариантов у тебя будет в сотни раз быстрее. да и вообще это будет самое быстрое решение, так как переборов ВСЕХ вариантов не нужно.


Rouse_   (2012-11-07 19:20:00) [19]

Да и кстати, раз уж данный стиль плохой (ничего что я политкорректно? :) хотелось бы увидеть реализацию любого криптоалгоритма в исполнении противников данного стиля :)


Rouse_   (2012-11-07 19:10:00) [20]


> ХЗ, я так даже будучи скубентом 2-го курса не писал - сразу
> двубалили за такое.

Я так думаю исходники оригинальной Cryptoapi ваших преподавателей минимум бы ввергли бы в ступор :))
У DVM-а в принципе практически один в один с оригиналом, разве что с учетом уклона в дельфю.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо