Các thách thức
Một thử thách "gián điệp so với gián điệp" đơn giản.
Viết chương trình với các thông số kỹ thuật sau:
- Chương trình có thể được viết bằng bất kỳ ngôn ngữ nào nhưng không được vượt quá 512 ký tự (như được thể hiện trong một khối mã trên trang web này).
- Chương trình phải chấp nhận 5 số nguyên 32 bit đã ký làm đầu vào. Nó có thể ở dạng một hàm chấp nhận 5 đối số, một hàm chấp nhận một mảng 5 phần tử hoặc một chương trình hoàn chỉnh đọc 5 số nguyên từ bất kỳ đầu vào tiêu chuẩn nào.
- Chương trình phải xuất một số nguyên 32 bit đã ký.
- Chương trình phải trả về 1 khi và chỉ khi năm đầu vào, được hiểu là một chuỗi, khớp với một chuỗi số học cụ thể của sự lựa chọn của lập trình viên, được gọi là "khóa". Hàm phải trả về 0 cho tất cả các đầu vào khác.
Một chuỗi số học có đặc tính là mỗi phần tử liên tiếp của chuỗi bằng với tiền thân của nó cộng với một số hằng số cố định a
.
Ví dụ, 25 30 35 40 45
là một chuỗi số học vì mỗi phần tử của chuỗi bằng với tiền thân của nó cộng với 5. Tương tự, 17 10 3 -4 -11
là một chuỗi số học vì mỗi phần tử bằng với phần tử trước của nó cộng với -7.
Các trình tự 1 2 4 8 16
và 3 9 15 6 12
không phải là trình tự số học.
Khóa có thể là bất kỳ chuỗi số học nào bạn chọn, với hạn chế duy nhất là các chuỗi liên quan đến tràn số nguyên không được phép. Đó là, trình tự phải được tăng nghiêm ngặt, giảm nghiêm ngặt hoặc có tất cả các yếu tố bằng nhau.
Ví dụ, giả sử bạn chọn khóa 98021 93880 89739 85598 81457
. Chương trình của bạn phải trả về 1 nếu các đầu vào (theo thứ tự) khớp với năm số này và 0 khác.
Xin lưu ý rằng các phương tiện bảo vệ chìa khóa nên là thiết kế tiểu thuyết của riêng bạn. Ngoài ra, các giải pháp xác suất có thể trả về dương tính giả với bất kỳ xác suất khác nào đều không được phép. Cụ thể, vui lòng không sử dụng bất kỳ băm mật mã tiêu chuẩn nào, bao gồm các hàm thư viện cho băm mật mã tiêu chuẩn.
Chấm điểm
Bài nộp không bị bẻ khóa ngắn nhất cho mỗi số ký tự sẽ được tuyên bố là người chiến thắng.
Nếu có bất kỳ sự nhầm lẫn, xin vui lòng hỏi hoặc nhận xét.
Thử thách
Tất cả các độc giả, bao gồm cả những người đã gửi chương trình của riêng họ, được khuyến khích "bẻ khóa" bài nộp. Một bài nộp bị bẻ khóa khi khóa của nó được đăng trong phần bình luận liên quan. Nếu một bài nộp tồn tại trong 72 giờ mà không bị sửa đổi hoặc bẻ khóa, nó được coi là "an toàn" và bất kỳ thành công nào sau đó trong việc bẻ khóa, nó sẽ bị bỏ qua vì lợi ích của cuộc thi.
Xem "Tuyên bố miễn trừ trách nhiệm" bên dưới để biết chi tiết về chính sách điểm bẻ khóa được cập nhật.
Đệ trình bẻ khóa được loại bỏ khỏi sự tranh chấp (miễn là chúng không "an toàn"). Họ không nên được chỉnh sửa. Nếu một độc giả muốn gửi một chương trình mới, anh ta nên làm như vậy trong một câu trả lời riêng.
(Các) cracker có số điểm cao nhất sẽ được tuyên bố là người chiến thắng cùng với các nhà phát triển chương trình chiến thắng.
Xin đừng bẻ khóa trình của bạn.
May mắn nhất. :)
Bảng xếp hạng
Bảng xếp hạng áp chót (chờ an toàn khi nộp Dennis 'CJam 49).
Tủ khóa an toàn
- CJam 49, Dennis
- CJam 62, Dennis an toàn
- CJam 91, Dennis an toàn
- Python 156, Maarten Baert an toàn
- Perl 256, chilemagic an toàn
- Java 468, Geobits an toàn
Crackers không thể ngăn cản
- Peter Taylor [Ruby 130, Java 342, Mathicala 146 *, Mathicala 72 *, CJam 37]
- Dennis [Pyth 13, Python 86 *, Lua 105 *, GolfScript 116, C 239 *]
- Martin Büttner [Javascript 125, Python 128 *, Ruby 175 *, Ruby 249 *]
- Tyilo [C 459, Javascript 958 *]
- freddieknets [Mathicala 67 *]
- Ilmari Karonen [Python27 182 *]
- nitơ [C 212 *]
* đệ trình không tuân thủ
Tuyên bố miễn trừ trách nhiệm (Cập nhật 11:15 PM EST, ngày 26 tháng 8)
Với các vấn đề về điểm số cuối cùng đã đạt đến khối lượng tới hạn (cho hai phần ba số lần gửi bị bẻ khóa cho đến nay không tuân thủ), tôi đã xếp hạng các cracker hàng đầu về số lượng bài nộp bị bẻ khóa (chính) và tổng số ký tự trong các bài nộp bị bẻ khóa tuân thủ (thứ hai).
Như trước đây, các bài nộp chính xác đã bị bẻ khóa, độ dài của bài nộp và trạng thái tuân thủ / không tuân thủ của chúng đều được đánh dấu để độc giả có thể suy ra thứ hạng của chính họ nếu họ tin rằng bảng xếp hạng chính thức mới là không công bằng.
Tôi xin lỗi vì đã sửa đổi các quy tắc này vào cuối trò chơi.