Playfair cipher: Difference between revisions
m
→{{header|Perl 6}}: fix synxtax issues
(Add haskell version) |
SqrtNegInf (talk | contribs) m (→{{header|Perl 6}}: fix synxtax issues) |
||
Line 1,101:
=={{header|Perl 6}}==
{{Works with|rakudo|2016.07}}
<lang perl6># Instantiate a specific encoder/decoder.
Line 1,111 ⟶ 1,112:
# Build 5x5 matrix.
my @m = canon($key ~ ('A'..'Z').join).comb.
# Pregenerate all forward translations.
Line 1,118 ⟶ 1,119:
# Map pairs in same row.
for @m -> @r {
for ^@r X ^@r -> (\i,\j) {
next if i == j;
take @r[i] ~ @r[j] => @r[(i+1)%5] ~ @r[(j+1)%5];
Line 1,127 ⟶ 1,128:
for ^5 -> $c {
my @c = @m.map: *.[$c];
for ^@c X ^@c -> (\i,\j) {
next if i == j;
take @c[i] ~ @c[j] => @c[(i+1)%5] ~ @c[(j+1)%5];
Line 1,134 ⟶ 1,135:
# Map pairs with cross-connections.
for ^5 X ^5 X ^5 X ^5 -> (\i1,\j1,\i2,\j2) {
next if i1 == i2 or j1 == j2;
take @m[i1][j1] ~ @m[i2][j2] => @m[i1][j2] ~ @m[i2][j1];
|