aboutsummaryrefslogtreecommitdiff
path: root/challenge-059
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-05-04 15:33:21 +0100
committerGitHub <noreply@github.com>2020-05-04 15:33:21 +0100
commit6268500669ea7d21cc3c140dee73ff3cbc6b24e5 (patch)
tree35adf94ca810ff55c4bc668650858f74851ec554 /challenge-059
parent8daa6c1509270a77b6d44aac76718afd5fdddeab (diff)
parentd5256416d8f7745f197c571ed14d9a4e9926d365 (diff)
downloadperlweeklychallenge-club-6268500669ea7d21cc3c140dee73ff3cbc6b24e5.tar.gz
perlweeklychallenge-club-6268500669ea7d21cc3c140dee73ff3cbc6b24e5.tar.bz2
perlweeklychallenge-club-6268500669ea7d21cc3c140dee73ff3cbc6b24e5.zip
Merge pull request #1670 from Firedrake/rogerbw-challenge-059
Solutions for challenge #59.
Diffstat (limited to 'challenge-059')
-rwxr-xr-xchallenge-059/roger-bell-west/perl5/ch-1.pl30
-rwxr-xr-xchallenge-059/roger-bell-west/perl5/ch-2.pl30
-rwxr-xr-xchallenge-059/roger-bell-west/perl6/ch-1.p618
-rwxr-xr-xchallenge-059/roger-bell-west/perl6/ch-2.p624
4 files changed, 102 insertions, 0 deletions
diff --git a/challenge-059/roger-bell-west/perl5/ch-1.pl b/challenge-059/roger-bell-west/perl5/ch-1.pl
new file mode 100755
index 0000000000..76e2b0dad0
--- /dev/null
+++ b/challenge-059/roger-bell-west/perl5/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/perl5/ch-2.pl b/challenge-059/roger-bell-west/perl5/ch-2.pl
new file mode 100755
index 0000000000..34619585dc
--- /dev/null
+++ b/challenge-059/roger-bell-west/perl5/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;
+}
diff --git a/challenge-059/roger-bell-west/perl6/ch-1.p6 b/challenge-059/roger-bell-west/perl6/ch-1.p6
new file mode 100755
index 0000000000..263d6249b6
--- /dev/null
+++ b/challenge-059/roger-bell-west/perl6/ch-1.p6
@@ -0,0 +1,18 @@
+#! /usr/bin/perl6
+
+my $k=3;
+my @list=(1,4,3,2,5,2);
+
+if (@*ARGS) {
+ $k=pop @*ARGS;
+ @list=@*ARGS;
+}
+
+my %m=classify { $_ < $k ?? 1 !! 2 }, @list;
+
+my @out;
+for 1,2 -> $mode {
+ @out.append: %m{$mode}.flat;
+}
+
+say join(' → ',@out);
diff --git a/challenge-059/roger-bell-west/perl6/ch-2.p6 b/challenge-059/roger-bell-west/perl6/ch-2.p6
new file mode 100755
index 0000000000..fd224ea22e
--- /dev/null
+++ b/challenge-059/roger-bell-west/perl6/ch-2.p6
@@ -0,0 +1,24 @@
+#! /usr/bin/perl6
+
+my $s=0;
+my @list=(2,3,4);
+if (@*ARGS) {
+ @list=@*ARGS;
+}
+for 0..@list.end-1 -> $i {
+ for $i+1..@list.end -> $j {
+ $s+=f([@list[$i],@list[$j]]);
+ }
+}
+say $s;
+
+sub f (@f) {
+ my @g=(map {comb /./,sprintf('%b',$_)}, @f[0]).flat;
+ my @h=(map {comb /./,sprintf('%b',$_)}, @f[1]).flat;
+ my $r=max(@g.elems,@h.elems);
+ @g.prepend(0 xx ($r-@g.elems));
+ @h.prepend(0 xx ($r-@h.elems));
+ my $d=0;
+ map {$d+=(@g[$_]==@h[$_])??0!!1}, (0..$r-1);
+ return $d;
+}