Playfair cipher: Difference between revisions

m
→‎{{header|Perl 6}}: fix synxtax issues
(Add haskell version)
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.uniqunique.map:
-> $a,$b,$c,$d,$e { [$a,$b,$c,$d,$e] }
 
# 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];
2,392

edits