diff options
| author | Jan <jhh@his19.ph.spoorgloren.nl> | 2021-01-25 20:06:16 +0100 |
|---|---|---|
| committer | Jan <jhh@his19.ph.spoorgloren.nl> | 2021-01-25 20:06:16 +0100 |
| commit | 256fae8a5acc550f9ef0d4e39f101e4ddeaba4cd (patch) | |
| tree | d5bea0b83ca7a89d6cccab898ce80cafb77183c8 | |
| parent | c2e3d94308259dfeed2f131426c365adb88a9663 (diff) | |
| download | perlweeklychallenge-club-256fae8a5acc550f9ef0d4e39f101e4ddeaba4cd.tar.gz perlweeklychallenge-club-256fae8a5acc550f9ef0d4e39f101e4ddeaba4cd.tar.bz2 perlweeklychallenge-club-256fae8a5acc550f9ef0d4e39f101e4ddeaba4cd.zip | |
submission
| -rw-r--r-- | challenge-097/jan-perl/README | 1 | ||||
| -rwxr-xr-x | challenge-097/jan-perl/perl/ch-1.pl | 24 | ||||
| -rwxr-xr-x | challenge-097/jan-perl/perl/ch-2.pl | 58 |
3 files changed, 83 insertions, 0 deletions
diff --git a/challenge-097/jan-perl/README b/challenge-097/jan-perl/README new file mode 100644 index 0000000000..70e335d7d7 --- /dev/null +++ b/challenge-097/jan-perl/README @@ -0,0 +1 @@ +Solution by Jan Hoogenraad diff --git a/challenge-097/jan-perl/perl/ch-1.pl b/challenge-097/jan-perl/perl/ch-1.pl new file mode 100755 index 0000000000..83a7c9bdeb --- /dev/null +++ b/challenge-097/jan-perl/perl/ch-1.pl @@ -0,0 +1,24 @@ +#!/usr/bin/perl + +use warnings; + +sub inittrs($) { + my ($shift) = @_; + my $p1=" "; + my $p2=" "; + for my $t (0..25) { + $p1 .= chr(ord('A')+$t); + $p2 .= chr(ord('A')+($t-$shift)%26); + } + return ($p1,$p2); +} + +$S = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG"; +$N = 3; + +($plain,$cipher)= inittrs($N); +print "Plain: $plain\n"; +print "Cipher: $cipher\n"; + +eval ("\$S=~ tr/$plain/$cipher/"); +print "$S\n"; diff --git a/challenge-097/jan-perl/perl/ch-2.pl b/challenge-097/jan-perl/perl/ch-2.pl new file mode 100755 index 0000000000..537c4d4ed6 --- /dev/null +++ b/challenge-097/jan-perl/perl/ch-2.pl @@ -0,0 +1,58 @@ +#!/usr/bin/perl + +use warnings; + + +sub nflip2(\@\@) { + local (*p0arr,*saarr) = @_; + my $nftot=0; + for my $l (0.. $#p0arr) { + $nftot += ($p0arr[$l] != $saarr[$l]); + } + return $nftot; +} + +sub nflip($\@) { + local ($p0,*sa) = @_; + my @p0arr = split("",$p0); + my $nftot=0; + for my $t (@sa){ + my @saarr = split("",$t); + $nftot += nflip2(@p0arr,@saarr); + } + return $nftot; +} + +sub doit($$) { + my ($B,$S) = @_; + print "\n$B,$S\n"; + my @sa=unpack("(a$S)*",$B); + my @ba=map {nflip( $_,@sa)} @sa; + my $low=$S * @ba; + my $lidx=0; + for my $t (0 .. $#ba) { + if ($low> $ba[$t]){ + $low= $ba[$t]; + $lidx=$t; + } + } + print "Output: $ba[$lidx]\n"; + print "Reference: $lidx: $sa[$lidx]\n"; + print "Binary Substrings:\n"; + my @p0arr = split("",$sa[$lidx]); + for my $t (@sa) { + my @saarr = split("",$t); + my $nftot = nflip2(@p0arr,@saarr); + print "\"$t\": $nftot flips"; + print " tot make it \"$sa[$lidx]\"" if ($nftot); + print "\n"; + } +} + + +$B = "101100101"; $S = 3; +doit($B,$S); +$B = "10110111"; $S = 4; +doit($B,$S); + + |
