No Github, há uma lista das 10.000 senhas mais comuns. Eu também gerei minha própria lista de senhas aleatórias .
Seu trabalho é identificar a diferença entre as duas listas (com 100% de precisão).
Portanto, seu programa precisa aceitar uma sequência e retornar:
- Um valor verdadeiro se a senha estiver na lista de senhas comuns
- Um valor falso se a senha estiver na lista de senhas aleatórias
- Qualquer coisa que você gostaria se a senha não estivesse
Para os interessados, meu programa gera senhas com 5 a 10 caracteres e cada caractere é uma letra minúscula ou um dígito.
Nota: Você não deve usar essas senhas em nada seguro. Meu algoritmo de geração não é seguro e os resultados são publicados on-line para que todos possam ver
$args[0]-in(gc .\10k-passwords.txt)
? Devemos criar algum tipo de padrão que reconheça um, mas não o outro?Respostas:
CJam,
2262908620512503 bytesIsso imprime um número inteiro positivo para senhas comuns e zero para outras.
Verificação
fonte
Python,
719664 bytesEstou com problemas para testar isso na Retina , então aqui está o Python por enquanto. Teste dando
lambda
um nome e executando-o nas listas de palavras:É uma regex muito grande, então estou dando um tempo no golfe por um tempo.
fonte
Bash - 5324 bytes
onde rp.gz está localizado em http://dl.tyzoid.com/rp.gz
Isso retorna 1 se na lista aleatória. Isso é falso, pois bash avalia 0 como um valor de verdade.
fonte
rp.gz
para um nome de arquivo de 1 byte para salvar 4 bytes ...gunzip
egrep
, também não há necessidade dewc
:zgrep -c $1 rp.gz
. Também micro-otimização, masxz
comprime insignificantemente melhor. A propósito, não seria melhor usar-x
(--line-regexp
) ou-w
(--word-regexp
) para não corresponder aos fragmentos de palavras?sort rpass.txt | 7z -si -mx=9 a r.gz
deve dar-lhe um barbear off de cerca de 480 bytes ...Haskell, 8047 bytes
Parece ser o melhor que consigo descobrir sem quebrar os algoritmos de compactação, e nenhuma das linguagens que gosto de usar realmente possui um breve método de compactação embutido.
O "algoritmo" é extremamente simples; verifique se está na lista de senhas aleatórias e retorne False se estiver e True se não estiver.
fonte