Điểm chính của câu đố này là tìm hiểu làm thế nào một mã độc có thể được ẩn và phát hiện trong một chương trình.
Một người đang đặt câu hỏi:
Xin vui lòng cho tôi một số mã rằng làm thế nào tôi có thể tìm kiếm một tệp có thể có trong Thư mục hiện tại hoặc trong Thư mục con của nó.
(Đây là một biến thể của một câu hỏi thực sự tôi đã thấy được đăng trên một trang web.)
Để cụ thể hơn: OP muốn bạn viết chương trình chấp nhận chuỗi và thư mục. Nó sẽ duyệt qua tất cả các tệp trong thư mục và đệ quy tất cả các thư mục con của nó. Đối với mỗi tệp, nó sẽ kiểm tra xem tệp có chứa chuỗi hay không và nếu có, sẽ in tên của tệp. (Chương trình có thể có các tính năng bổ sung miễn là chúng có liên quan đến mục tiêu chính, nếu bạn muốn.) Không có yêu cầu nào về thứ tự truyền tải.
Tuy nhiên, nhiệm vụ chính của câu đố này là ẩn vào mã bổ sung của chương trình sẽ khiến một người ngu ngốc yêu cầu chương trình trong mắt người dùng / đồng nghiệp / sếp / v.v. Ví dụ, in một văn bản nhục nhã tại một số điểm, chẳng hạn như: Tác giả của chương trình không biết cách lập trình, nên trả lại bằng tốt nghiệp của mình và bị đuổi việc. Sáng tạo.
Quy tắc:
- Tất nhiên, giải pháp không được gây hại (ngoại trừ việc đánh lừa OP). Nó không được gây ra bất kỳ thiệt hại không thể đảo ngược cho người dùng cuối (không có nội dung như
rm -rf
)! Những giải pháp như vậy sẽ bị loại. - Các công cụ trolling nên được ẩn đi để OP không tìm thấy nó dễ dàng.
- Không nên rõ ràng rằng bạn đang troll OP. Các mã nên nhìn chính hãng.
- Giải pháp phải đi kèm với một lời giải thích phù hợp về cách nó troll OP để mọi người có thể học được điều gì đó từ giải pháp của bạn. Lời giải thích nên được ẩn trong một văn bản ẩn cho đến khi bạn nhấp (spoilers) . Khi phán xét, hãy cố gắng khám phá sự trolling mà không nhìn vào lời giải thích và bỏ phiếu cho những người khó khám phá.
- Ngoài ra, hãy cố gắng che giấu sự trolling khỏi OP nếu anh ấy cố gắng chạy mã một vài lần. Có lẽ bắt đầu troll chỉ sau một ngày cụ thể hoặc trong một số điều kiện mà một lập trình viên cẩu thả sẽ không kiểm tra. Hãy sáng tạo và đừng quên giải thích mánh khóe.
- Đừng chỉ tạo một tập lệnh bằng các công cụ hiện có như
grep
hoặcfind
. Viết chương trình từ đầu. Tốt hơn nên tránh các thư viện và thích các cuộc gọi cấp thấp - điều này sẽ làm cho mã phức tạp hơn và cho bạn cơ hội để che giấu những thứ xấu xa ở đó.
Đây là một cuộc thi phổ biến . Hãy đánh giá theo các điểm trên.