[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Флуд от микроконкурса
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
Игорь_Vasinsky
в совокупности

1 место

короткое и быстрое

потом

короткое но не очень быстрое

потом

короткое и медленное

.....
laugh.gif laugh.gif laugh.gif

_____________
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
Цитата (Игорь_Vasinsky @ 18.12.2012 - 10:48)
в совокупности

у одного будет быстрое, у другого короткое, кто победит?
Michael
Цитата (twin @ 18.12.2012 - 10:00)

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

А не можешь, так не говори попусту.

Да элементарно :D .
Свернутый текст

1) исходник:
$increases_string = str_pad('', 171, $allowable_characters);


- Что это за магическое число 171?
- Это сделано только чтобы алгоритм отработал на "побольше" паролях. Это подделка. А при запросе "пароля" более 171 даже никакой ошибки ни исключения не выдаст, отработает как то по своему. Это мина в коде. В условиях же ни где не сказано что нельзя запрашивать строки длиннее 171...
Итак получили:
$increases_string =abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRST UVWXYZ23456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789

2)
$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
клёвая лошадка laugh.gif laugh.gif laugh.gif

_____________
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
twin
ОФФТОП
В какой программе анимашку делал?
Michael
Удачи в конкурсе. И не забудьте про кирилицу.

_____________
There never was a struggle in the soul of a good man that was not hard
twin
Цитата (Winston @ 18.12.2012 - 08:52)
twin
ОФФТОП
В какой программе анимашку делал?

Вот. Прикольная штучка, правда 500 руб попросил)))

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Игорь_Vasinsky
подождите, а как мне, человеку, на плюющему на орфографию в принципе, на своем родном языке - найти информацию о принадлежности символов к той или иной локали?

_____________
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
Цитата (twin @ 18.12.2012 - 11:05)
Вот. Прикольная штучка, правда

О, спасибо! smile.gif
killer8080
надеюсь никто не применит mb_strtolower laugh.gif
Игорь_Vasinsky
не. она не в счёт.

а на мой вопрос кто нить ответит?

_____________
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
twin
Michael
Цитата
Да элементарно :D .

Цитата
- Что это за магическое число 171?
- Это сделано только чтобы алгоритм отработал на "побольше" паролях. Это подделка. А при запросе "пароля" более 171 даже никакой ошибки ни исключения не выдаст, отработает как то по своему. Это мина в коде. В условиях же ни где не сказано что нельзя запрашивать строки длиннее 171...
Это 51 * 3 = 171
51 - это количество символов в эталонной строке. Сделано для того, что бы в пароле могли быть повторы символов. Допустим GG22D4DA.

Что касается пароля длиннее 171 символа - да. Проморгал. Теоретически возможно встретить дебила, которому потребуется сгенерировать пароль больше, чем в 171 символ. Согласен. Однако лечится одним движением:
  // Increases string for a possible repeat of characters
$increases_string = str_pad('', (51 * $length), $allowable_characters);


Цитата
Алгоритм перемешал всю огромную строку. 171 ≈ 8*21
Эта строка даже если последовательно разбить на порции содержит 21 полноценный пароль из 8-ми символов.
А возвращает только один пароль.
Усилия потраченные на генерацию других 20-ти паролей были напрасны, 20/21 ≈ на 95% программа отработала вхолостую.
Поэтому чисто алгоритмически я не могу эту программу высоко оценить.

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

Вот ты и не участвуешь в конкурсе, что не умеешь писать лаконично и экономично. По верхушкам только.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Игорь_Vasinsky
Цитата
подождите, а как мне, человеку, на плюющему на орфографию в принципе, на своем родном языке - найти информацию о принадлежности символов к той или иной локали?

не с 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
Игорь правильно вопрос задал на счет локали. Проверятся будет только для cp1251?
Игорь_Vasinsky
в условии сказано "полный аналог"

в мануале сказано

Цитата
Принадлежность того или иного символа к буквенным определяется с учетом текущей локали. Это означает, что, например, в используемой по умолчанию локали "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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.