Anonymous user
ADFGVX cipher: Difference between revisions
→{{header|Perl}}
m (cleanup) |
|||
Line 446:
use List::Util qw( shuffle );
my $plaintext = 'ATTACKAT1200AM';▼
my $keysize = 9;▼
my %char2pair;▼
@char2pair{ @letters } = @pairs; # map chars to pairs▼
my %pair2char = reverse %char2pair; # map pairs to chars▼
▲my $template = <<END;
| A D F G V X
--+------------
Line 462 ⟶ 459:
X | x x x x x x
END
$
print "Polybius square =\n\n$
▲my %char2pair;
▲my %pair2char = reverse %char2pair; # map pairs to chars
my ($n, @deorder) = 0;
my @reorder = map /.(.+)/, sort map $_ . $n++, split //, $keyword;
@deorder[@reorder] = 0 .. $#reorder;
▲my $file = do { local (@ARGV, $/) = 'unixdict.txt'; uc <> };
print " encoded = $encoded\n\n";▼
▲my $keysize = 9;
▲my ($keyword) = shuffle grep !/(.).*\1/, $file =~ /^\w{$keysize}$/gm;
▲my $plaintext = 'ATTACKAT1200AM';
▲print "keyword = $keyword\n\nplaintext = $plaintext\n\n";
▲my $encoded = encode( $plaintext, $keyword, \%char2pair );
▲print "encoded = $encoded\n\n";
my $decoded = decode( $encoded
print " decoded = $decoded
sub encode
{
my ($plain, $
my $len =
}
sub decode
{
my ($encoded, $
}
sub transpose { map join('', map {s/.// ? $& : ''} @_), 1 .. length $_[0] }</lang>
{{out}}
<pre>
Line 507 ⟶ 497:
| A D F G V X
--+------------
A |
D |
F |
G |
V |
X |
keyword = benchmark
plaintext = ATTACKAT1200AM
encoded =
decoded = ATTACKAT1200AM▼
▲ decoded = ATTACKAT1200AM
</pre>
=={{header|Phix}}==
|