Thực hiện mật mã khóa này
Mục tiêu
Sử dụng thuật toán (được giải thích trong phần Thuật toán) để thực hiện một mật mã nhất định.
Chương trình phải đọc đầu vào từ STDIN hoặc tương đương có sẵn gần nhất, sử dụng thuật toán để tạo bản mã và khóa.
Bản mã và khóa sẽ được ghi vào STDOUT hoặc tương đương có sẵn gần nhất. Bất kỳ định dạng nào đều được cho phép, miễn là nó xuất ra bản mã và khóa.
Thuật toán
Chuyển đổi các ký tự trong chuỗi thành các giá trị ASCII tương ứng. Ví dụ:
Hello -> 72 101 108 108 111
Tiếp theo, bạn sẽ cần tạo một khóa miễn là chuỗi có số ngẫu nhiên trong phạm vi 0-9.
Hello -> 62841
Thêm các số nguyên trong chuỗi số ngẫu nhiên vào các giá trị ASCII của chuỗi. Trong các ví dụ trên, 72 sẽ trở thành 78 và 101 sẽ trở thành 104.
72 + 6 = 78, 101 + 2 = 103, 108 + 8 = 116, etc
Tiếp theo, chuyển đổi các giá trị mới trở lại ký tự. Trong các ví dụ trên, văn bản Hello
đã trở thành Ngtpp
.
Ví dụ
(Đây là những ví dụ đơn giản về hình thức đầu ra có thể trông như thế nào. Đầu ra có thể và sẽ thay đổi.)
Hello World
Lfrlu)_supg
41606984343
This will be encoded
Zhjs$~koo gj$iuhofgj
60104723305544750226
Quy tắc
- Bạn có thể giả sử rằng đầu vào sẽ chỉ chứa các ký tự trong phạm vi az, AZ và khoảng trắng.
- Đệ trình phải là chương trình hoặc chức năng đầy đủ.
- Đệ trình sẽ được tính bằng byte.
- Sơ hở tiêu chuẩn bị cấm.
- Đây là môn đánh gôn, vì vậy đoạn mã ngắn nhất sẽ thắng.
(Đây là một trong những thử thách đầu tiên của tôi, nếu có điều gì đó không ổn với nó, vui lòng cho tôi biết làm thế nào tôi có thể cải thiện nó.)
preferably with the format (ciphertext)\n(key).
"các tính năng ưa thích" và mã golf không kết hợp tốt với nhau. Bạn nên làm điều đó bắt buộc hoặc cho phép các định dạng đầu ra khác. 3. Phím có phải được in không có dấu cách không? Điều gì về việc in nó ở định dạng danh sách, ví dụ[0, 5, 2, ...]
?