diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-04 15:40:52 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-04 15:40:52 +0100 |
| commit | 1423ae8d6eaab2672cebed2fbd6ee52730cf6410 (patch) | |
| tree | 653fa79ac35bdbcceb8d93412055c4035af8bf48 /challenge-059/roger-bell-west/perl | |
| parent | 6268500669ea7d21cc3c140dee73ff3cbc6b24e5 (diff) | |
| download | perlweeklychallenge-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-x | challenge-059/roger-bell-west/perl/ch-1.pl | 30 | ||||
| -rwxr-xr-x | challenge-059/roger-bell-west/perl/ch-2.pl | 30 |
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; +} |
