diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-05-04 15:33:21 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-04 15:33:21 +0100 |
| commit | 6268500669ea7d21cc3c140dee73ff3cbc6b24e5 (patch) | |
| tree | 35adf94ca810ff55c4bc668650858f74851ec554 /challenge-059 | |
| parent | 8daa6c1509270a77b6d44aac76718afd5fdddeab (diff) | |
| parent | d5256416d8f7745f197c571ed14d9a4e9926d365 (diff) | |
| download | perlweeklychallenge-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-x | challenge-059/roger-bell-west/perl5/ch-1.pl | 30 | ||||
| -rwxr-xr-x | challenge-059/roger-bell-west/perl5/ch-2.pl | 30 | ||||
| -rwxr-xr-x | challenge-059/roger-bell-west/perl6/ch-1.p6 | 18 | ||||
| -rwxr-xr-x | challenge-059/roger-bell-west/perl6/ch-2.p6 | 24 |
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; +} |
