Lý lịch
Một trăm mười ba năm trước, nhà mật mã nghiệp dư Félix Delastelle đã công bố công trình của mình trên mật mã bốn hình vuông , một mật mã thay thế sơ đồ chấp nhận hai hoán vị của bảng chữ cái 25 chữ cái làm khóa và mã hóa các thông điệp bao gồm các chữ cái đó.
Giống như hầu hết các mật mã giấy bút, mật mã bốn hình vuông không có bất kỳ giá trị mật mã nào ngày nay, nhưng tại thời điểm phát minh ra nó, nó có một lợi thế đáng kể so với các đối tác chuyên khảo.
Một trăm mười ba năm sau, Alice Delastelle quyết định cải thiện mật mã bốn hình vuông bằng cách tăng kích thước của bảng chữ cái và số lượng phím. [cần dẫn nguồn]
Thiết lập khóa
Bảng chữ cái chứa các ký tự sau (bắt đầu bằng dấu cách):
!"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ
Đưa ra một cụm từ thông qua, chúng tôi xây dựng một hoán vị của bảng chữ cái này như sau:
Chỉ giữ sự xuất hiện đầu tiên của mỗi nhân vật.
Nối các ký tự không sử dụng từ bảng chữ cái, theo thứ tự tự nhiên của chúng.
Sau khi biến bốn cụm mật khẩu thành bốn khóa, chúng tôi chia mỗi phím thành một hình vuông có chiều dài cạnh 7 và sắp xếp bốn ô vuông kết quả sao cho chúng tạo thành một hình vuông lớn.
Ví dụ: nếu các cụm từ được
PROGRAMMING PUZZLES & CODE GOLF
POPULARITY CONTESTS & CODE BOWLING
CORRECT HORSE BATTERY STAPLE
DON'T TELL EVE!!!
các phím sẽ được xây dựng và sắp xếp như thế này:
PROGAMI POULARI
N UZLES TY CNES
&CDF!"# &DBWG!"
$%'()*+ #$%'()*
,-./:;< +,-./:;
=>?@BHJ <=>?@FH
KQTVWXY JKMQVXZ
CORET H DON'T E
SBAYPL! LV!"#$%
"#$%&'( &()*+,-
)*+,-./ ./:;<=>
:;<=>?@ ?@ABCFG
DFGIJKM HIJKMPQ
NQUVWXZ RSUWXYZ
Mã hóa
Đưa ra một thông điệp rõ ràng như
ALICE LOVES BOB.
chúng tôi nối 0 hoặc 1 khoảng trắng để tạo độ dài cho nó chẵn và chia nó thành các cặp ký tự:
["AL" "IC" "E " "LO" "VE" "S " "BO" "B."]
Đối với mỗi cặp ký tự, chúng tôi định vị ký tự đầu tiên trong ô vuông đầu tiên (thứ tự đọc) và ký tự thứ hai trong thứ tư.
Sau đó, chúng tôi chọn các ký tự trong các ô vuông còn lại sao cho bốn ký tự được chọn tạo thành một hình chữ nhật có các cạnh song song với các cạnh của hình vuông.
Cuối cùng, chúng tôi thay thế cặp ký tự bằng các ký tự được chọn của hình vuông thứ hai và thứ ba.
Đối với chuỗi ví dụ của chúng tôi, điều này mang lại
["PP" "A@" "E " "YT" "ZE" "EH" "=T" "<-"]
dẫn đến bản mã sau:
PPA@E YTZEEH=T<-
Bài tập
Viết chương trình hoặc hàm chấp nhận bốn cụm từ thông qua và một bản rõ, sử dụng biến thể trên của mật mã bốn hình vuông để mã hóa nó và trả về bản mã kết quả.
Chi tiết:
Năm chuỗi đầu vào sẽ chỉ bao gồm các ký tự của bảng chữ cái được đề cập.
Năm chuỗi đầu vào có thể được đọc theo bất kỳ thứ tự nào, như vậy, một chuỗi đơn được phân tách bằng các dòng mới hoặc dưới dạng một mảng gồm năm chuỗi.
Bạn có thể cho rằng không có chuỗi nào trống.
Đầu ra phải là một chuỗi đơn.
Nếu bạn chọn in đầu ra thành STDOUT, bạn chỉ có thể in các ký tự của bản mã và (tùy chọn) một dòng mới.
Luật golf tiêu chuẩn được áp dụng.
Các trường hợp thử nghiệm
Trong tất cả các trường hợp thử nghiệm, bốn chuỗi đầu tiên tương ứng với các ô vuông chính theo thứ tự đọc và chuỗi đầu vào cuối cùng cho bản rõ.
Đầu vào
PROGRAMMING PUZZLES & CODE GOLF
POPULARITY CONTESTS & CODE BOWLING
CORRECT HORSE BATTERY STAPLE
DON'T TELL EVE!!!
ALICE LOVES BOB.
Đầu ra
PPA@E YTZEEH=T<-
Đầu vào
!"#$%&'()*+,-./:;<=>
!"#$%&'()*+,-./:;<=>?@ABCDE
!"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKL
!"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRS
HELLO, WORLD!
Đầu ra
LALLR)#TROKE !
Đầu vào
,'K AB-Q=?@("W$>XM).C#<I:G!OLP*+;SZJTU%NED/&VFHRY
:,-D$C<SU=IYHFVA;! JG/M&L+WT%#.Q@(N*R")EZOBKX?'>P
L()JX,BND?Z<>P*FU%=O@&KIC+A!Y:;$SWHR.EMG'/T"QV #-
<->CI")AP Q:+U;O/F(KH&ER!MW?X'VJLZ#.$,BSGN@TD%*Y=
SPIN THE PPCG WHEEL OF BLAME!
Đầu ra
#>TE,VK+,ZQ(&<F@RA.NL@DM%NAC&>
Đầu vào
& %(,-#)$@?/=>'*"<:;!.+
=/$- ?;',@#!(&<")%.:>+*
&%-/<?.;$'#:=!( ,>"+*)@
=,<-*?#.'@/;>%!+:(& ")$
HNRA#JX$H %JAV+"GTS,
Đầu ra
GOOD LUCK, HAVE FUN.