Di Github, ada daftar 10.000 kata sandi paling umum. Saya juga membuat daftar kata sandi acak saya sendiri .
Tugas Anda adalah mengidentifikasi perbedaan antara kedua daftar (dengan akurasi 100%).
Karena itu, program Anda perlu menerima string, dan kembali:
- Nilai kebenaran jika kata sandi ada dalam daftar kata sandi umum
- Nilai palsu jika kata sandi ada dalam daftar kata sandi acak
- Apa pun yang Anda suka jika kata sandi tidak ada di keduanya
Bagi mereka yang tertarik, program saya menghasilkan kata sandi antara 5-10 karakter panjangnya, dan setiap karakter adalah huruf kecil atau digit.
Catatan: Anda tidak boleh menggunakan kata sandi ini dalam hal yang aman. Algoritme generasi saya sama sekali tidak aman, dan hasilnya diposting online untuk dilihat semua orang
$args[0]-in(gc .\10k-passwords.txt)
? Apakah kita akan menemukan semacam pola yang mengenali yang satu tetapi bukan yang lain?Jawaban:
CJam,
2262908620512503 byteIni mencetak bilangan bulat positif untuk kata sandi umum dan nol untuk yang lain.
Verifikasi
sumber
Python,
719664 byteSaya mengalami sedikit kesulitan menguji ini di Retina , jadi inilah Python untuk saat ini. Uji dengan memberi
lambda
nama dan menjalankannya pada daftar kata:Ini regex yang sangat besar, jadi saya berhenti sejenak untuk bermain golf sebentar.
sumber
Bash - 5324 byte
di mana rp.gz berada di http://dl.tyzoid.com/rp.gz
Ini mengembalikan 1 jika pada daftar acak. Ini salah, karena bash mengevaluasi 0 sebagai nilai truty.
sumber
rp.gz
menjadi nama file 1-byte untuk menghemat 4 byte ...gunzip
dangrep
, juga tidak ada perlu untukwc
:zgrep -c $1 rp.gz
. Juga mikro-optimisasi, tetapixz
kompres lebih baik. Ngomong-ngomong, tidak akan lebih baik menggunakan-x
(--line-regexp
) atau-w
(--word-regexp
) untuk tidak cocok dengan fragmen kata?sort rpass.txt | 7z -si -mx=9 a r.gz
harus memberi Anda mencukur sekitar 480 byte ...Haskell, 8047 byte
Ini tampaknya menjadi yang terbaik yang bisa saya ketahui tanpa memecah algoritma kompresi, dan tidak ada bahasa yang saya suka gunakan yang benar-benar memiliki metode kompresi bawaan yang singkat.
"Algoritma" ini sangat sederhana; periksa apakah itu ada dalam daftar kata sandi acak dan kembalikan False jika itu dan Benar jika tidak.
sumber