Bây giờ là lúc để thể hiện khả năng của bạn để viết mã xấu. Tôi đang thử một loại câu đố lập trình mới, tương tự như tôi nghĩ, với cuộc thi C ngầm. Sự khác biệt chính là điều này gần như không bất chính: đó chỉ là một niềm vui sạch đẹp. Mục tiêu của câu đố là đóng gói càng nhiều lỗi càng tốt vào một chương trình. Người chiến thắng trong cuộc thi này là người viết chương trình có nhiều lỗi nhất cho mỗi nhân vật.
Để tránh một luồng ý kiến khổng lồ yêu cầu làm rõ, tôi nên xác định ngay những gì tôi cho là lỗi đủ điều kiện.
Đầu tiên, một lỗi không phải là một lỗi . Nếu đó là một vấn đề mà trình thông dịch có thể phát hiện là một lỗi (ví dụ: các dấu phân cách không khớp, cú pháp được tạo sai, lấy một thuộc tính của một đối tượng null, v.v.) hoặc nếu nó ngăn chương trình thực thi hoặc tiếp tục, thì đó không phải là một lỗi. Mặt khác, bạn có thể nhập bốn ký tự và trình thông dịch có thể liệt kê tám lỗi cú pháp và bạn có thể yêu cầu tỷ lệ lỗi-ký tự là 2.
Thứ hai, lỗi rõ ràng không phải là sai và lỗi không phải là trứng Phục sinh . Đây chắc chắn là một tiêu chí chủ quan, nhưng tôi nghĩ cần thiết cho loại cuộc thi này. Điều này có nghĩa là bạn không thể có mã có điều kiện cụ thể xé mã theo những cách rõ ràng. (Đọc: sử dụng ngôn ngữ pit turing, bởi vì không ai sẽ biết sự khác biệt).
Thứ ba, lỗi phải hợp lý . Điều này là chủ quan, giống như ở trên, nhưng lỗi phải trông giống như nó có thể được viết bởi một người ít quan tâm hoặc có lẽ không biết gì, hoặc một người chỉ mắc lỗi. Điều này bao gồm, ví dụ, lỗi hoặc cú pháp ngoại lệ hợp lệ và có vẻ đúng nhưng gây ra hành vi không mong muốn (giả sử sử dụng dấu ngoặc vuông thay vì dấu ngoặc đơn).
Lỗi này có thể gây ra bất kỳ loại hành vi không mong muốn nào đối với chương trình, bao gồm, nhưng chắc chắn không giới hạn, đầu ra không mong muốn đối với một số trường hợp ngoại lệ, có hành vi khác nhau dựa trên thứ gì đó dường như không liên quan (ví dụ: đầu ra hiển thị khác nhau tùy thuộc vào thời gian hiện tại kết thúc với số giây lẻ hoặc chẵn), rò rỉ bộ nhớ, mất dữ liệu, v.v.
Vấn đề mẫu:
Tạo một chương trình hiển thị tất cả các ký tự ASCII theo thứ tự tăng dần của giá trị số của chúng.
Ví dụ trả lời:
Brainf ***, 5 ký tự, 1 lỗi, tỷ lệ 0,2 lỗi
+[+.]
Lỗi: không hiển thị ký tự ASCII cho 1. Có thể sửa bằng cách thay đổi thành .+[.+]
.
Ok, tôi nghĩ bạn nên nhận được nó ngay bây giờ, đây là câu đố của bạn:
Giải mã một mật mã Caesar và sắp xếp các từ theo thứ tự abc
Một mật mã caesar được tạo ra bằng cách lấy một loạt các chữ cái và chuyển chúng n chữ cái trong bảng chữ cái. Nếu nó đi đến đầu hoặc cuối của bảng chữ cái, A đến sau Z và Z đến trước A. Ví dụ:
Mannequin
Nboofrvjo //Shifted over 1 or -25
Wkxxoaesx //Shifted over 10 -16
Ftggxjnbg //Shifted over -7 or 19
Bạn sẽ được cung cấp hai đầu vào (bạn có thể nhận đầu vào tuy nhiên thuận tiện nhất cho bạn, theo lý do). Đầu vào đầu tiên là các từ và đầu vào thứ hai là giá trị nó được dịch chuyển qua. Nhiệm vụ của bạn là xuất ra các từ được giải mã, và sau đó xuất các từ được giải mã sau khi chúng được sắp xếp theo thứ tự abc.
Ví dụ (không xúc phạm đến những chàng trai xấu, đó chỉ là một ví dụ):
Đầu vào đầu tiên: gtdx wjbfwiji. ljy Gfi hfssty
Đầu vào thứ hai: 5
Đầu ra đầu tiên: con trai thưởng. bị xấu không thể
Đầu ra thứ hai: Những chàng trai xấu không thể nhận được phần thưởng.
Chúc may mắn!