aboutsummaryrefslogtreecommitdiff
path: root/challenge-059/roger-bell-west/perl
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-05-04 15:40:52 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-05-04 15:40:52 +0100
commit1423ae8d6eaab2672cebed2fbd6ee52730cf6410 (patch)
tree653fa79ac35bdbcceb8d93412055c4035af8bf48 /challenge-059/roger-bell-west/perl
parent6268500669ea7d21cc3c140dee73ff3cbc6b24e5 (diff)
downloadperlweeklychallenge-club-1423ae8d6eaab2672cebed2fbd6ee52730cf6410.tar.gz
perlweeklychallenge-club-1423ae8d6eaab2672cebed2fbd6ee52730cf6410.tar.bz2
perlweeklychallenge-club-1423ae8d6eaab2672cebed2fbd6ee52730cf6410.zip
- Added solutions by Roger Bell_West.
Diffstat (limited to 'challenge-059/roger-bell-west/perl')
-rwxr-xr-xchallenge-059/roger-bell-west/perl/ch-1.pl30
-rwxr-xr-xchallenge-059/roger-bell-west/perl/ch-2.pl30
2 files changed, 60 insertions, 0 deletions
diff --git a/challenge-059/roger-bell-west/perl/ch-1.pl b/challenge-059/roger-bell-west/perl/ch-1.pl
new file mode 100755
index 0000000000..76e2b0dad0
--- /dev/null
+++ b/challenge-059/roger-bell-west/perl/ch-1.pl
@@ -0,0 +1,30 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+
+my $k=3;
+my @list=(1,4,3,2,5,2);
+
+if (@ARGV) {
+ $k=pop @ARGV;
+ @list=@ARGV;
+}
+
+my @m;
+foreach (0..$#list) {
+ if ($list[$_] < $k) {
+ push @m,1;
+ } else {
+ push @m,2;
+ }
+}
+
+my @out;
+foreach my $mode (1,2) {
+ push @out,map {$list[$_]} grep {$m[$_]==$mode} 0..$#m;
+}
+
+binmode STDOUT,':encoding(UTF-8)';
+print join(' → ',@out),"\n";
diff --git a/challenge-059/roger-bell-west/perl/ch-2.pl b/challenge-059/roger-bell-west/perl/ch-2.pl
new file mode 100755
index 0000000000..34619585dc
--- /dev/null
+++ b/challenge-059/roger-bell-west/perl/ch-2.pl
@@ -0,0 +1,30 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use List::Util qw(max);
+
+my $s=0;
+my @list=(2,3,4);
+if (@ARGV) {
+ @list=@ARGV;
+}
+foreach my $i (0..$#list-1) {
+ foreach my $j ($i+1..$#list) {
+ $s+=f($list[$i],$list[$j]);
+ }
+}
+print "$s\n";
+
+sub f {
+ my @f=@_;
+ my @g=map {[split '',sprintf('%b',$_)]} @f;
+ my $r=max(map{scalar @{$_}} @g);
+ foreach my $i (0..$#g) {
+ unshift @{$g[$i]},((0) x ($r-scalar @{$g[$i]}));
+ }
+ my $d=0;
+ map {$d+=($g[0][$_]==$g[1][$_])?0:1} (0..$r-1);
+ return $d;
+}