На Github есть список из 10 000 самых распространенных паролей. Я также создал свой собственный список случайных паролей .
Ваша задача - определить разницу между двумя списками (со 100% точностью).
Следовательно, ваша программа должна принять строку и вернуть:
- Истинное значение, если пароль находится в списке общих паролей
- Ложное значение, если пароль находится в списке случайных паролей
- Все, что вы хотели бы, если пароль не на
Для тех, кто заинтересован, моя программа генерирует пароли длиной 5-10 символов, и каждый символ представляет собой либо строчную букву, либо цифру.
Примечание: вы не должны использовать эти пароли в какой-либо безопасности. Мой алгоритм генерации совершенно не безопасен, и результаты публикуются в Интернете для всеобщего обозрения.
$args[0]-in(gc .\10k-passwords.txt)
? Должны ли мы придумать какую-то модель, которая распознает одно, но не другое?Ответы:
CJam,
2262908620512503 байтаЭто печатает положительное целое число для общих паролей и ноль для других.
верификация
источник
Python,
719664 байтаУ меня возникли некоторые проблемы при тестировании этого в Retina , так что пока вот Python. Проверьте, дав
lambda
имя и запустив его в списках слов:Это очень большое регулярное выражение, поэтому я немного отдыхаю от игры в гольф.
источник
Bash - 5324 байта
где rp.gz находится по адресу http://dl.tyzoid.com/rp.gz
Это возвращает 1, если в случайном списке. Это ложно, поскольку bash оценивает 0 как значение truty.
источник
rp.gz
в 1-байтовое имя файла, чтобы сохранить 4 байта ...gunzip
иgrep
, также не нужно дляwc
:zgrep -c $1 rp.gz
. Также микрооптимизация, ноxz
сжимается незначительно лучше. Кстати, не лучше ли использовать-x
(--line-regexp
) или-w
(--word-regexp
), чтобы не соответствовать фрагментам слова?sort rpass.txt | 7z -si -mx=9 a r.gz
должно сбрить вас примерно на 480 байт ...Haskell, 8047 байт
Кажется, это лучшее, что я могу понять, не разбирая алгоритмы сжатия, и ни один из языков, которые я люблю использовать, не имеет краткого встроенного метода сжатия.
«Алгоритм» чрезвычайно прост; проверьте, есть ли он в списке случайных паролей, и верните False, если оно есть, и True, если это не так.
источник