diff options
| author | Roger Bell_West <roger@firedrake.org> | 2020-03-23 11:27:57 +0000 |
|---|---|---|
| committer | Roger Bell_West <roger@firedrake.org> | 2020-03-23 11:27:57 +0000 |
| commit | ade47cc863d4756c1d13a71435bb429d782a5fe5 (patch) | |
| tree | 7778e8aec9f0776060129f03173f580ade81e509 | |
| parent | edc3a464e45e45970570b381c78ef6bd37a4a8b0 (diff) | |
| download | perlweeklychallenge-club-ade47cc863d4756c1d13a71435bb429d782a5fe5.tar.gz perlweeklychallenge-club-ade47cc863d4756c1d13a71435bb429d782a5fe5.tar.bz2 perlweeklychallenge-club-ade47cc863d4756c1d13a71435bb429d782a5fe5.zip | |
Solutions for challenge #53.
| -rwxr-xr-x | challenge-053/roger-bell-west/perl5/ch-1.pl | 37 | ||||
| -rwxr-xr-x | challenge-053/roger-bell-west/perl5/ch-2.pl | 31 | ||||
| -rwxr-xr-x | challenge-053/roger-bell-west/perl6/ch-1.p6 | 34 | ||||
| -rwxr-xr-x | challenge-053/roger-bell-west/perl6/ch-2.p6 | 28 |
4 files changed, 130 insertions, 0 deletions
diff --git a/challenge-053/roger-bell-west/perl5/ch-1.pl b/challenge-053/roger-bell-west/perl5/ch-1.pl new file mode 100755 index 0000000000..b8610926bd --- /dev/null +++ b/challenge-053/roger-bell-west/perl5/ch-1.pl @@ -0,0 +1,37 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +my @in=([1,2,3], + [4,5,6], + [7,8,9], + ); + +my @out=rotate(1,@in); + +foreach my $r (@out) { + print '[ '.join(', ',@{$r})." ]\n"; +} + +sub rotate { + my ($rotations,@in)=@_; + my $xs=$#in; + foreach my $ya (@in) { + if ($#{$ya} != $xs) { + die "not a square matrix\n"; + } + } + my @out=@in; + foreach (1..$rotations) { + my @im=@out; + my @tmp; + foreach my $x (0..$xs) { + foreach my $y (0..$xs) { + $tmp[$y][$xs-$x]=$im[$x][$y]; + } + } + @out=@tmp; + } + return @out; +} diff --git a/challenge-053/roger-bell-west/perl5/ch-2.pl b/challenge-053/roger-bell-west/perl5/ch-2.pl new file mode 100755 index 0000000000..3c3a1a9e10 --- /dev/null +++ b/challenge-053/roger-bell-west/perl5/ch-2.pl @@ -0,0 +1,31 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +my %tree=( + '' => [qw(a e i o u)], + a => [qw(e i)], + e => [qw(i)], + i => [qw(a e o u)], + o => [qw(a u)], + u => [qw(o e)], + ); + +print map {"$_\n"} generate(2,\%tree); + +sub generate { + my ($len,$tree)=@_; + my @list=(''); + while (1) { + if (length($list[0])==$len) { + last; + } + my $r=shift @list; + my $s=substr($r,-1,1) || ''; + foreach my $extension (@{$tree{$s}}) { + push @list,$r.$extension; + } + } + return @list; +} diff --git a/challenge-053/roger-bell-west/perl6/ch-1.p6 b/challenge-053/roger-bell-west/perl6/ch-1.p6 new file mode 100755 index 0000000000..72d28167f9 --- /dev/null +++ b/challenge-053/roger-bell-west/perl6/ch-1.p6 @@ -0,0 +1,34 @@ +#! /usr/bin/perl6 + +my @in=([1,2,3], + [4,5,6], + [7,8,9], + ); + +my @out=rotate(1,@in); + +for @out -> @r { + print '[ ' ~ join(', ',@r) ~ " ]\n"; +} + +sub rotate { + my ($rotations,@in)=@_; + my $xs=@in.end; + for @in -> @ya { + if (@ya.end != $xs) { + die "not a square matrix\n"; + } + } + my @out=@in; + for 1..$rotations { + my @im=@out; + my @tmp; + for 0..$xs -> $x { + for 0..$xs -> $y { + @tmp[$y][$xs-$x]=@im[$x][$y]; + } + } + @out=@tmp; + } + return @out; +} diff --git a/challenge-053/roger-bell-west/perl6/ch-2.p6 b/challenge-053/roger-bell-west/perl6/ch-2.p6 new file mode 100755 index 0000000000..42b3d24a3d --- /dev/null +++ b/challenge-053/roger-bell-west/perl6/ch-2.p6 @@ -0,0 +1,28 @@ +#! /usr/bin/perl6 + +my %tree=( + '' => [<a e i o u>], + a => [<e i>], + e => [<i>], + i => [<a e o u>], + o => [<a u>], + u => [<o e>], + ); + +print map {"$_\n"}, generate(2,%tree); + +sub generate { + my ($len,%tree)=@_; + my @list=(''); + while (1) { + if (@list[0].chars==$len) { + last; + } + my $r=shift @list; + my $s = substr($r,*-1,1) || ''; + for @(%tree{$s}) -> $extension { + push @list,$r ~ $extension; + } + } + return @list; +} |
