diff options
| author | Ruben Westerberg <drclaw@mac.com> | 2020-03-29 20:41:26 +1000 |
|---|---|---|
| committer | Ruben Westerberg <drclaw@mac.com> | 2020-03-29 20:41:26 +1000 |
| commit | 4769d55c19fe240805c7d58354a0178729aea99e (patch) | |
| tree | 75df4ce3a28f7c3454207351ec539138ee36d9d1 | |
| parent | eef518579340b5b283ac26a63cd3b421035aaae2 (diff) | |
| download | perlweeklychallenge-club-4769d55c19fe240805c7d58354a0178729aea99e.tar.gz perlweeklychallenge-club-4769d55c19fe240805c7d58354a0178729aea99e.tar.bz2 perlweeklychallenge-club-4769d55c19fe240805c7d58354a0178729aea99e.zip | |
Added ch-1 and ch-2 raku
| -rwxr-xr-x | challenge-053/ruben-westerberg/raku/ch-1.raku | 34 | ||||
| -rwxr-xr-x | challenge-053/ruben-westerberg/raku/ch-2.raku | 34 |
2 files changed, 68 insertions, 0 deletions
diff --git a/challenge-053/ruben-westerberg/raku/ch-1.raku b/challenge-053/ruben-westerberg/raku/ch-1.raku new file mode 100755 index 0000000000..5d4d8ccc3e --- /dev/null +++ b/challenge-053/ruben-westerberg/raku/ch-1.raku @@ -0,0 +1,34 @@ +#!/usr/bin/env raku +my $matrix=[ + [ 1, 2, 3 ], + [ 4, 5, 6 ], + [ 7, 8, 9 ] +]; + +say "0deg rotation:"; +rotate($matrix,0); +say "90deg rotation:"; +rotate($matrix,90); +say "180deg rotation:"; +rotate($matrix,180); +say "270deg rotation:"; +rotate($matrix,270); + +sub rotate($input,$angle) { + #input indexing + my @ip= map {pi/4 *$_}, 0..7; + my @ir= map {1+round .sin}, @ip; #no sincos func in raku? + my @ic= map {1+round .cos}, @ip; #.. feature request! + + #output indexing + my @polar=map {($angle/180 *pi) + pi/4 *$_}, 0..7; + my @row= map {1+round .sin}, @polar; + my @col =map {1+round .cos}, @polar; + + my $out=[[],[],[]]; + + $out[1][1]=$matrix[1][1]; + $out[@row[$_]][@col[$_]]=$matrix[@ir[$_]][@ic[$_]] for (0..^@col); + say "["~join(", ", $out[$_])~"]" for 0..2; + $out; +} diff --git a/challenge-053/ruben-westerberg/raku/ch-2.raku b/challenge-053/ruben-westerberg/raku/ch-2.raku new file mode 100755 index 0000000000..d0d4191303 --- /dev/null +++ b/challenge-053/ruben-westerberg/raku/ch-2.raku @@ -0,0 +1,34 @@ +#!/usr/bin/env raku + +my $n=@*ARGS[0]//2; +my @vowels= <a e i o u>; + +die "Number not in range 1..5\n" unless $n ~~ 1..5; + +@vowels.combinations ==> #<<Straight combos +map {|.permutations} ==> #<<create different orderings +grep {.elems == $n} ==> #<<Only want length $n +grep { + my $sum=0; + my $s=join '', @$_; + given ($s) { + $sum+=m:g/a/; + $sum-=m:g/a<[ie]>|a$/; + + $sum+=m:g/e/; + $sum-= (m:g/ei|e$/); + + $sum+=m:g/i/; + $sum-= m:g/i<[aeou]>|i$/; + + $sum+=m:g/o/; + $sum-=m:g/o<[au]>|o$/; + + $sum+=m:g/u/; + $sum-=m:g/u<[oe]>|u$/; + } + $sum==0; +} ==> +my @combinations; + +.say for @combinations.map: {.join} ==> sort |
