aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Westerberg <drclaw@mac.com>2020-03-29 20:41:26 +1000
committerRuben Westerberg <drclaw@mac.com>2020-03-29 20:41:26 +1000
commit4769d55c19fe240805c7d58354a0178729aea99e (patch)
tree75df4ce3a28f7c3454207351ec539138ee36d9d1
parenteef518579340b5b283ac26a63cd3b421035aaae2 (diff)
downloadperlweeklychallenge-club-4769d55c19fe240805c7d58354a0178729aea99e.tar.gz
perlweeklychallenge-club-4769d55c19fe240805c7d58354a0178729aea99e.tar.bz2
perlweeklychallenge-club-4769d55c19fe240805c7d58354a0178729aea99e.zip
Added ch-1 and ch-2 raku
-rwxr-xr-xchallenge-053/ruben-westerberg/raku/ch-1.raku34
-rwxr-xr-xchallenge-053/ruben-westerberg/raku/ch-2.raku34
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