Năm 1984, Michael Crichton đã viết một chương trình bảo mật bằng BASIC được xuất bản trên tạp chí Creative Computing. Chương trình sẽ yêu cầu người dùng nhập một cụm từ theo lựa chọn của cô ấy, ghi lại các khoảng thời gian giữa các lần nhấn phím, sau đó yêu cầu cô ấy gõ lại cụm từ đó. Nếu thời gian khác nhau quá nhiều, chương trình sẽ xác định người dùng là kẻ mạo danh.
Nhiệm vụ của bạn: tạo một phiên bản chương trình của Crichton bằng ngôn ngữ bạn chọn.
Quy tắc:
Các cụm từ để giao tiếp với người dùng ("Vui lòng nhập cụm từ khóa", "Vui lòng nhập lại cụm từ khóa", v.v.) được tính là một byte mỗi lần bất kể độ dài thực tế. Điều này chỉ dành cho giao tiếp người dùng, đừng cố ẩn mã chương trình trong chuỗi.
Kiểm tra đạt / không nên dựa trên giá trị tuyệt đối trung bình của phương sai phần trăm từ các khoảng ban đầu. Nếu các chuỗi không khớp, trả về thất bại hoặc cho phép người dùng thử lại, theo quyết định của bạn.
Các cụm từ chính không nên cho phép một chuỗi null. Trong trường hợp cụm từ khóa quá dài cho kiểu dữ liệu chuỗi của bạn, có thể cắt bớt hoặc không cho phép và bắt đầu lại, theo ý của bạn.
Độ nhạy của kiểm tra (ngưỡng cho kiểm tra đạt / không đạt) phải được điều chỉnh trong mã nguồn.
Ban đầu tôi đã cung cấp phần thưởng 20% tổng số byte nếu mã nguồn của bạn có thể được định dạng để giống với một con khủng long. Nó đã được chỉ ra rằng điều này rất chủ quan và có lẽ phù hợp hơn cho một cuộc thi phổ biến, vì vậy tôi đã loại bỏ phần thưởng này. Tuy nhiên tôi vẫn chân thành khuyến khích định dạng khủng long và nếu bạn định dạng mã của mình trông giống khủng long, bạn có thể khấu trừ mọi nhận xét hoàn toàn về mỹ phẩm, ngắt dòng hoặc ký tự khoảng trắng trong tổng số byte của bạn.
Số byte ngắn nhất sẽ thắng, tùy thuộc vào các điều chỉnh định dạng khủng long và chuỗi.
Lưu ý rằng đặc điểm kỹ thuật của tôi ở trên không khớp chính xác với hoạt động của mã Crichton, các bản sao có thể được tìm thấy trực tuyến. Thực hiện theo thông số kỹ thuật, đừng cố gắng sao chép bản gốc.
"Please type the key phrase"tính là 1 byte hay chỉ đếm cụm từ và cụm từ được trích dẫn được tính là 3 byte ( ", cụm từ, ")? Có phải là cố ý rằng một khoảng thời gian dài hơn và một khoảng thời gian ngắn hơn nhiều sẽ "hủy bỏ" và trở lại thậm chí một lần nữa? Chương trình có phải xác minh rằng hai cụm từ chính khớp với nhau không?