Auf Github gibt es eine Liste der 10.000 häufigsten Passwörter. Ich habe auch meine eigene Liste mit zufälligen Passwörtern erstellt .
Ihre Aufgabe ist es, den Unterschied zwischen den beiden Listen zu identifizieren (mit 100% iger Genauigkeit).
Daher muss Ihr Programm eine Zeichenfolge akzeptieren und Folgendes zurückgeben:
- Ein wahrer Wert, wenn das Kennwort in der Liste der allgemeinen Kennwörter enthalten ist
- Ein falscher Wert, wenn sich das Kennwort in der Liste der zufälligen Kennwörter befindet
- Alles, was Sie möchten, wenn das Passwort nicht aktiviert ist
Für diejenigen, die interessiert sind, generiert mein Programm Passwörter mit einer Länge zwischen 5 und 10 Zeichen, und jedes Zeichen ist entweder ein Kleinbuchstabe oder eine Ziffer.
Hinweis: Sie sollten diese Passwörter nicht für sichere Zwecke verwenden. Mein Generierungsalgorithmus ist überhaupt nicht sicher und die Ergebnisse werden online veröffentlicht, damit alle sie sehen können
$args[0]-in(gc .\10k-passwords.txt)
? Sollen wir uns ein Muster einfallen lassen, das das eine erkennt, aber nicht das andere?Antworten:
CJam,
2262908620512503 BytesDies gibt eine positive Ganzzahl für allgemeine Kennwörter und eine Null für andere aus.
Nachprüfung
quelle
Python,
719664 BytesIch habe ein bisschen Probleme, dies in Retina zu testen , also hier ist Python für jetzt. Testen Sie, indem Sie dem
lambda
Namen einen Namen geben und ihn in den Wortlisten ausführen:Es ist eine sehr große Regex, also mache ich eine Pause vom Golfen.
quelle
Bash - 5324 Bytes
wo rp.gz sich unter http://dl.tyzoid.com/rp.gz befindet
Dies gibt 1 zurück, wenn es sich um eine Zufallsliste handelt. Dies ist falsch, da bash 0 als Truty-Wert bewertet.
quelle
rp.gz
in einen 1-Byte-Dateinamen um, um 4 Bytes zu speichern ...gunzip
undgrep
auch keine Notwendigkeit fürwc
:zgrep -c $1 rp.gz
. Auch Mikrooptimierung,xz
komprimiert aber unwesentlich besser. Wäre es übrigens nicht besser,-x
(--line-regexp
) oder-w
(--word-regexp
) zu verwenden, um Wortfragmente nicht abzugleichen?sort rpass.txt | 7z -si -mx=9 a r.gz
sollte Ihnen eine Rasur von ungefähr 480 Bytes geben ...Haskell, 8047 Bytes
Dies scheint das Beste zu sein, was ich herausfinden kann, ohne Komprimierungsalgorithmen auszubrechen, und keine der Sprachen, die ich gerne verwende, verfügt wirklich über eine kurze integrierte Komprimierungsmethode.
Der "Algorithmus" ist extrem einfach; Überprüfen Sie, ob es in der Liste der zufälligen Passwörter enthalten ist, und geben Sie False zurück, wenn dies der Fall ist, und True, wenn dies nicht der Fall ist.
quelle