diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-04-28 11:56:30 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-28 11:56:30 +0100 |
| commit | 802d92a4876a1f2daf9283a2232cbcea0c0ca191 (patch) | |
| tree | b82b94ab3f0e2003ed04712adf8cb7e4d6a5948d | |
| parent | 469190e7290185066b4fa4132d4e3d3ef95e8848 (diff) | |
| parent | 589498b7fd337a4b6d5faf13ba5790388abbbf8a (diff) | |
| download | perlweeklychallenge-club-802d92a4876a1f2daf9283a2232cbcea0c0ca191.tar.gz perlweeklychallenge-club-802d92a4876a1f2daf9283a2232cbcea0c0ca191.tar.bz2 perlweeklychallenge-club-802d92a4876a1f2daf9283a2232cbcea0c0ca191.zip | |
Merge pull request #1646 from Firedrake/rogerbw-challenge-058
Solutions for challenge #58.
| -rwxr-xr-x | challenge-058/roger-bell-west/perl5/ch-1.pl | 40 | ||||
| -rwxr-xr-x | challenge-058/roger-bell-west/perl5/ch-2.pl | 36 |
2 files changed, 76 insertions, 0 deletions
diff --git a/challenge-058/roger-bell-west/perl5/ch-1.pl b/challenge-058/roger-bell-west/perl5/ch-1.pl new file mode 100755 index 0000000000..65498d24d9 --- /dev/null +++ b/challenge-058/roger-bell-west/perl5/ch-1.pl @@ -0,0 +1,40 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use List::Util qw(max); + +foreach my $vtest ( + ['0.1','1.1','-1'], + ['2.0','1.2','1'], + ['1.2','1.2_5','-1'], + ['1.2.1','1.2_1','1'], + ['1.2.1','1.2.1','0'], + ) { + my $vr=compare($vtest->[0],$vtest->[1]); + print "$vtest->[0] $vtest->[1] $vtest->[2] $vr\n"; +} + +sub compare { + my @v=@_; + my @s; + my %l=('_' => 1, '.' => 2); + foreach my $i (0,1) { + unless ($v[$i] =~ /^[0-9]+([._][0-9]+)*$/) { + die "$v[$i] is not a valid version\n"; + } + $s[$i]= [split /([._])/,$v[$i]]; + for (my $j=1;$j<=$#{$s[$i]};$j+=2) { + $s[$i][$j]=$l{$s[$i][$j]}; + } + } + my $k=0; + foreach my $j (0..max(map {$#{$_}} @s)) { + $k=(($s[0][$j] || 0) <=> ($s[1][$j] || 0)); + if ($k != 0) { + last; + } + } + return $k; +} diff --git a/challenge-058/roger-bell-west/perl5/ch-2.pl b/challenge-058/roger-bell-west/perl5/ch-2.pl new file mode 100755 index 0000000000..1339ad06b3 --- /dev/null +++ b/challenge-058/roger-bell-west/perl5/ch-2.pl @@ -0,0 +1,36 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +my @H = (2, 6, 4, 5, 1, 3); # Heights +my @T = (1, 0, 2, 0, 1, 2); # Number of taller people in front + +my @i=sort {$H[$b] <=> $H[$a]} (0..$#H); # ordered by decreasing height +my @n; + +foreach my $p (@i) { + if ($T[$p]==0) { + unshift @n,$p+1; + } elsif ($T[$p] == scalar @n) { + push @n,$p+1; + } else { + splice @n,$T[$p],0,$p+1; + } +} + +print join(', ',@n),"\n"; + +foreach my $ti (0..$#n) { + my $tx=$n[$ti]-1; + my $mh=$H[$tx]; + my $hi=0; + foreach my $tj (0..$ti-1) { + if ($H[$n[$tj]-1] > $mh) { + $hi++; + } + } + unless ($hi == $T[$tx]) { + die "index $ti failed\n"; + } +} |
