Terinspirasi oleh pos migrasi yang diterima dengan buruk ini .
Kepala keamanan di perusahaan Anda khawatir tentang sistem penghasil PIN Anda setelah diberikan kepadanya 12345
. Dia juga tidak terlalu menghargai lelucon Spaceballs yang Anda buat atas biaya sendiri, jadi Anda telah diutus untuk menulis ulang generator PIN. Karena harus sesuai dengan beberapa perangkat keras khusus, Anda harus membuatnya sekecil mungkin.
Tugas Anda
- Anda mengambil dua input - # PIN, dan ukuran PIN dalam digit.
- Hasilkan jumlah PIN yang ditentukan dengan ukuran yang ditentukan secara acak dan cetaklah.
- Semua PIN yang valid dengan ukuran harus dimungkinkan untuk dicetak, meskipun kemungkinan tidak seragam.
Namun, ada beberapa batasan pada PIN - ini adalah yang tidak valid:
- Jika semua pasangan adalah digit yang sama:
114422
(Catatan: ini jelas akan mencakup semua PIN digit yang sama). - PIN semakin linear (mod 10):
246802
. - Semua kelompok 3 adalah garis fisik pada keypad dari
1 2 3;4 5 6;7 8 9;bksp 0 enter;
:147369
. - PIN sepenuhnya dapat dibagi menjadi beberapa kelompok dari aturan 1 dan aturan 3.
- Jika semua pasangan adalah digit yang sama:
- Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
55123
)?123
, tetapi55432
akan baik-baik saja.Jawaban:
Pyth, 120 byte
Kupikir aku harus menambahkan implementasi nyata. Menghasilkan angka acak sampai ditemukan bahwa memenuhi semua persyaratan. Mungkin bisa banyak diperbaiki!
Versi online
sumber
Perl 5, 244
Mulai dengan menghasilkan angka acak untuk ukuran yang diberikan.
Dan hanya mencetak yang tidak memenuhi batasan.
Menemukan solusi untuk garis keypad (tanpa kombinasi hardcoding) agak menyenangkan.
Uji
sumber