En Github, hay una lista de las 10,000 contraseñas más comunes. También he generado mi propia lista de contraseñas aleatorias .
Su trabajo es identificar la diferencia entre las dos listas (con una precisión del 100%).
Por lo tanto, su programa necesita aceptar una cadena y devolver:
- Un valor verdadero si la contraseña está en la lista de contraseñas comunes
- Un valor falso si la contraseña está en la lista de contraseñas aleatorias
- Cualquier cosa que desee si la contraseña tampoco está activada
Para aquellos que estén interesados, mi programa genera contraseñas de entre 5 y 10 caracteres de longitud, y cada carácter es una letra minúscula o un dígito.
Nota: No debe usar estas contraseñas en nada seguro. Mi algoritmo de generación no es seguro en absoluto, y los resultados se publican en línea para que todos los vean
$args[0]-in(gc .\10k-passwords.txt)
? ¿Se nos ocurrirá algún tipo de patrón que reconozca el uno pero no el otro?Respuestas:
Cjam,
2262908620512503 bytesEsto imprime un número entero positivo para contraseñas comunes y cero para otros.
Verificación
fuente
Python,
719664 bytesTengo algunos problemas para probar esto en Retina , así que aquí está Python por ahora. Pruebe dándole
lambda
un nombre y ejecutándolo en las listas de palabras:Es una expresión regular muy grande, así que me tomaré un descanso del golf por un tiempo.
fuente
Bash - 5324 bytes
donde rp.gz se encuentra en http://dl.tyzoid.com/rp.gz
Esto devuelve 1 si está en la lista aleatoria. Esto es falso, ya que bash evalúa 0 como un valor verdadero.
fuente
rp.gz
a un nombre de archivo de 1 byte para guardar 4 bytes ...gunzip
ygrep
, también hay necesidad de quewc
:zgrep -c $1 rp.gz
. También micro-optimización, peroxz
comprime insignificantemente mejor. Por cierto, ¿no sería mejor usar-x
(--line-regexp
) o-w
(--word-regexp
) para no coincidir con fragmentos de palabras?sort rpass.txt | 7z -si -mx=9 a r.gz
debería darte un afeitado de unos 480 bytes ...Haskell, 8047 bytes
Esto parece ser lo mejor que puedo entender sin romper los algoritmos de compresión, y ninguno de los lenguajes que me gusta usar realmente tiene un breve método de compresión incorporado.
El "algoritmo" es extremadamente simple; verifique si está en la lista de contraseñas aleatorias y devuelva False si es así y True si no lo es.
fuente