Игорь_Vasinsky
18.12.2012 - 12:48
в совокупности
1 место
короткое и быстроепотом
короткое но не очень быстроепотом
короткое и медленное.....
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
18.12.2012 - 12:49
Цитата (Игорь_Vasinsky @ 18.12.2012 - 10:48) |
в совокупности |
у одного будет быстрое, у другого короткое, кто победит?
Michael
18.12.2012 - 12:49
Цитата (twin @ 18.12.2012 - 10:00) |
Ты конкретно можешь назвать причины, почему он тебе не угодил? Почему все голословно то? Назови хоть одну, чем мой код хуже первого.
А не можешь, так не говори попусту. |
Да элементарно :D .
1)
исходник:
$increases_string = str_pad('', 171, $allowable_characters);
- Что это за магическое число 171?
- Это сделано только чтобы алгоритм отработал на "побольше" паролях. Это подделка. А при запросе "пароля" более 171 даже никакой ошибки ни исключения не выдаст, отработает как то по своему. Это мина в коде. В условиях же ни где не сказано что нельзя запрашивать строки длиннее 171...
Итак получили:
$increases_string =abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRST UVWXYZ23456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ234567892)
$shuffled_string = str_shuffle($increases_string);
Что получаем:
$shuffled_string=vZFxCSXngmjBd4vpkuc4etaUrqt9c4UFMMw7se3JUKzVSe8QDV5frdodqgRzYJ2GjsE6NNbNDmhXLSyChLaHAf9n8uZBpkiH67p GVk95rWFBwYWK2ysgnJxKzycL5ojTPPfv27MA8iPTGZ6oWtQEYbRXqhwCQiTmxHED3Rb3uaAВозьмем длину создаваемого пароля - 8
И вернется следующее:
return substr($shuffled_string, 0, 8);
$result=vZFxCSXnАлгоритм перемешал всю огромную строку. 171 ≈ 8*21
Эта строка даже если последовательно разбить на порции содержит 21 полноценный пароль из 8-ми символов.
А возвращает только один пароль.
Усилия потраченные на генерацию других 20-ти паролей были напрасны, 20/21 ≈ на 95% программа отработала вхолостую.
Поэтому чисто алгоритмически я не могу эту программу высоко оценить.
Разве это не очевидно?... ;)
А к первому алгоритму претензий нет, он без изъянов.
_____________
There never was a struggle in the soul of a good man that was not hard
Игорь_Vasinsky
18.12.2012 - 12:50
клёвая лошадка
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Winston
18.12.2012 - 12:52
twinВ какой программе анимашку делал?
Michael
18.12.2012 - 13:05
Удачи в конкурсе. И не забудьте про кирилицу.
_____________
There never was a struggle in the soul of a good man that was not hard
Цитата (Winston @ 18.12.2012 - 08:52) |
twin
В какой программе анимашку делал? |
Вот. Прикольная штучка, правда 500 руб попросил)))
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Игорь_Vasinsky
18.12.2012 - 13:08
подождите, а как мне, человеку, на плюющему на орфографию в принципе, на своем родном языке - найти информацию о принадлежности символов к той или иной локали?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Winston
18.12.2012 - 13:08
Цитата (twin @ 18.12.2012 - 11:05) |
Вот. Прикольная штучка, правда |
О, спасибо!
killer8080
18.12.2012 - 13:12
надеюсь никто не применит mb_strtolower
Игорь_Vasinsky
18.12.2012 - 13:14
не. она не в счёт.
а на мой вопрос кто нить ответит?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Michael
Цитата |
Да элементарно :D . |
Цитата |
- Что это за магическое число 171? - Это сделано только чтобы алгоритм отработал на "побольше" паролях. Это подделка. А при запросе "пароля" более 171 даже никакой ошибки ни исключения не выдаст, отработает как то по своему. Это мина в коде. В условиях же ни где не сказано что нельзя запрашивать строки длиннее 171... |
Это 51 * 3 = 171
51 - это количество символов в эталонной строке. Сделано для того, что бы в пароле могли быть повторы символов. Допустим GG22D4DA.
Что касается пароля длиннее 171 символа - да. Проморгал. Теоретически возможно встретить дебила, которому потребуется
сгенерировать пароль больше, чем в 171 символ. Согласен. Однако лечится одним движением:
$increases_string = str_pad('', (51 * $length), $allowable_characters);
Цитата |
Алгоритм перемешал всю огромную строку. 171 ≈ 8*21 Эта строка даже если последовательно разбить на порции содержит 21 полноценный пароль из 8-ми символов. А возвращает только один пароль. Усилия потраченные на генерацию других 20-ти паролей были напрасны, 20/21 ≈ на 95% программа отработала вхолостую. Поэтому чисто алгоритмически я не могу эту программу высоко оценить. |
И что такого срашного, что она отработала вхолостую на уровне ядра? Это все равно гораздо экономичнее, нежели цикл. Причем экономичнее ровно в 2 раза.
Как говорится - не все то золото, что блестит. Если смотреть поверхностно, конечно. Цикл крутится столько раз, какой длины задан пароль. Но если не верить глазам, а провести тесты, то становится ясно, что усилий на органицацию итераций требуется намного больше, нежели на отработку штатными функциями.
Вот ты и не участвуешь в конкурсе, что не умеешь писать лаконично и экономично. По верхушкам только.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Игорь_Vasinsky
18.12.2012 - 13:43
Цитата |
подождите, а как мне, человеку, на плюющему на орфографию в принципе, на своем родном языке - найти информацию о принадлежности символов к той или иной локали? |
не с 2мя же алфавитами работаем.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
18.12.2012 - 14:21
Игорь правильно вопрос задал на счет локали. Проверятся будет только для cp1251?
Игорь_Vasinsky
18.12.2012 - 14:25
в условии сказано "полный аналог"
в мануале сказано
Цитата |
Принадлежность того или иного символа к буквенным определяется с учетом текущей локали. Это означает, что, например, в используемой по умолчанию локали "C", символ Ä не будет преобразован. |
я это к чему - тут речь не о 2 алфавитах - кирилическом и латинском, тут всё прочее.
или? еврит, иероглифы
вообще это каламбур - работать в юникоде с функцией которая не работает с многобайтовыми кодировками.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.