Проверка GUID на корректность.

Pinko

Новичок
Проверка GUID на корректность.

поступает на вход некая строка, проверить, является ли это GUID.

Как проверить не прибегая к регулярным выражениям?

не обязательно писать код, можно описать словами идею...

-~{}~ 23.05.08 17:51:

Справка: «GUID» называют некоторые реализации стандарта, имеющего название Universally Unique Identifier (UUID).
В тексте GUID записывается в виде строки из шестнадцатеричных цифр, разбитых на группы дефисами и окружённой фигурными скобками:
{6F9619FF-8B86-D011-B42D-00CF4FC964FF}
 

Pinko

Новичок
реги это хорошо, никто не спорит) но нужны еще варианты)



Апокалипсис, а чем этот вопрос не теоретический?) Я не прошу написать мне код, я не прошу найти ошибку, я лишь прошу дать идею) Не это ли теория?)
 

Gas

может по одной?
проверить длину, на заданных позициях дифисы и {}, выкунить их и циклом проверить оставшиеся символы.
Только зачем? Собираешь максимально-возможное количество вариантов?

Я помню в zx-ревю был конкурс на самый короткий и быстрый asm-код по очистке экрана, там это хоть какое-то прикладное значение имело.
 

Pinko

Новичок
Gas, собираю варианты ) Твой вариант, имхо, те же грабли, что и регулярные выражения) Выкинуть эти лишние символы можно, но проверять по символьно - какой-то стандартный вариант) Может с кодами символов что-нибудь придумать?)) как-то их сумму оценивать, например) мысли как-то плавают, не могу родить хороший альтернативный вариант))



StUV, дайте ссылку на эти две страницы.
 

Андрейка

Senior pomidor developer
альтернативный вариант - попытаться сгенерировать все возможные комбинации и потом простым selectом по базе проверять правильность
 

Pinko

Новичок
все возможные варианты GUID?? Не реально, имхо, на то он и GUID, чтобы всегда быть уникальным... представляете сколько там возможных вариантов?
 

Gas

может по одной?
Pinko
ты отпределись, тебе нужно проверить формат строки или что при приведении этой стройки в десятичную систему она попадает в диапазон 0 - 2^128 ?
 

dimagolov

Новичок
Pinko, ты пока нихрена не сделал, даже не удосужился объяснить какие есть признаки корректности GUID. может начнешь что-то делать, кроме написания глупостей вида
но проверять по символьно - какой-то стандартный вариант
у тебя что, препод задал придумать проверку, за самую нестандартную зачет автоматом?
 

Pinko

Новичок
формат, разве я где-то сказал о значении?

-~{}~ 23.05.08 18:46:

dimagolov, я написал справку, что такое GUID для тех, кто не знает. Признаки? Какие тут признаки? Есть правила, все они описаны в справке с примером.

ЗЫ: препод мне не задавал=))
 

Gas

может по одной?
Твой вариант, имхо, те же грабли, что и регулярные выражения
не те, один простой рег нельзя сравнить с кучей строковых функий+цикл, хотя для освоения работы со строками задачка может и ничего.

препод мне не задавал
значит поспорил с кем-то, иначе бы не парился :)
 

AmdY

Пью пиво
Команда форума
у человека промлема в том, как узнать что строка начинается и заканчивается "{" "}", а между ними символы 0...f или тире.
даже моя сестра в 9-м классе такое могла сделать на паскале, я уже проедлогал давать таким ссылки на поиск вакансий, пускай посмотрят сколько специальностей кроме программиста есть в этом мире.
 

Pinko

Новичок
AmdY, никому не интересно, что кто-то что-то когда-то мог делать, будь это ваша сестра или вы ) главное, что человек умеет сейчас)

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

berkut

Новичок
Pinko посмотри в сторону яп brainfuck. думаю, для тебя это то, что сейчас необходимо
 

AmdY

Пью пиво
Команда форума
http://www.php.net/manual/ru/function.levenshtein.php
Функция возвращает расстояние Левенштейна между двумя строками, или -1, если хотя бы одна из строк длиннее 255 символов (этого более чем достаточно для сравнения имен или поиска по словарю, а проводить генетический анализ на PHP просто несерьезно).
 
Сверху