Inti dari teka-teki ini adalah untuk mempelajari bagaimana kode jahat dapat disembunyikan dan ditemukan dalam suatu program.
Seseorang mengajukan pertanyaan:
Tolong beri saya beberapa kode yang bagaimana saya bisa mencari file mungkin di Present Directory atau di Sub-Direktori.
(Ini adalah varian dari pertanyaan nyata yang saya lihat diposting di satu situs.)
Untuk lebih spesifik: OP ingin Anda menulis sebuah program yang menerima string dan direktori. Ini akan melintasi semua file dalam direktori dan secara rekursif semua subdirektori. Untuk setiap file itu akan memeriksa apakah file tersebut berisi string, dan jika ya, akan mencetak nama file. (Program ini dapat memiliki fitur tambahan asalkan relevan dengan tujuan utama, jika Anda mau.) Tidak ada persyaratan pada urutan traversal.
Namun, tugas utama dari teka-teki ini adalah untuk menyembunyikan kode tambahan program yang akan membodohi orang yang meminta program di mata penggunanya / kolega / bos / dll. Misalnya, cetak teks yang memalukan di beberapa titik, seperti: Penulis program tidak tahu cara memprogram, harus mengembalikan diploma dan dipecat. Jadilah kreatif.
Aturan:
- Solusinya tidak boleh berbahaya (kecuali membodohi OP, tentu saja). Itu tidak boleh melakukan kerusakan permanen pada pengguna akhir (tidak ada hal-hal seperti
rm -rf
)! Solusi semacam itu akan didiskualifikasi. - Benda-benda troll harus disembunyikan sehingga OP tidak akan menemukannya dengan mudah.
- Seharusnya tidak jelas bahwa Anda mengendalikan OP. Kode harus terlihat asli.
- Solusinya harus dilengkapi dengan penjelasan yang tepat bagaimana hal itu mengendalikan OP sehingga semua orang dapat belajar sesuatu dari solusi Anda. Penjelasan harus disembunyikan dalam teks tersembunyi hingga Anda mengklik (spoiler) . Saat menghakimi, cobalah untuk menemukan trolling tanpa melihat penjelasannya dan memilih mereka yang sulit ditemukan.
- Coba juga sembunyikan trolling dari OP jika dia mencoba menjalankan kode beberapa kali. Mungkin mulai trolling hanya setelah tanggal tertentu, atau dalam kondisi tertentu yang tidak bisa diuji oleh programmer yang ceroboh. Jadilah kreatif dan jangan lupa untuk menjelaskan triknya.
- Jangan hanya membuat skrip menggunakan alat yang ada seperti
grep
ataufind
. Tulis program dari awal. Lebih baik hindari perpustakaan dan lebih suka panggilan tingkat rendah - ini akan membuat kode lebih kompleks dan memberi Anda kesempatan untuk menyembunyikan hal-hal jahat di sana.
Ini adalah kontes popularitas . Silakan menilai berdasarkan poin-poin di atas.
sumber
Jawaban:
Inilah solusi saya (dalam Perl):
Argumen pertama dari program ini adalah direktori dan argumen kedua adalah string yang kita cari. Program ini juga menunjukkan jumlah kecocokan di setiap file.
Berikut ini cara mencari "VGA" di / etc:
Dan sekarang, inilah caranya:
sumber