aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-040/stuart-little/README1
-rwxr-xr-xchallenge-040/stuart-little/raku/ch-1.p612
-rwxr-xr-xchallenge-040/stuart-little/raku/ch-2.p613
-rw-r--r--challenge-041/stuart-little/README1
-rwxr-xr-xchallenge-041/stuart-little/raku/ch-1.p618
-rwxr-xr-xchallenge-041/stuart-little/raku/ch-2.p66
-rw-r--r--challenge-042/stuart-little/README1
-rwxr-xr-xchallenge-042/stuart-little/raku/ch-1.p66
-rwxr-xr-xchallenge-042/stuart-little/raku/ch-2.p620
-rw-r--r--challenge-060/stuart-little/README1
-rwxr-xr-xchallenge-060/stuart-little/raku/ch-1.p618
-rwxr-xr-xchallenge-060/stuart-little/raku/ch-2.p612
-rw-r--r--challenge-061/stuart-little/README1
-rwxr-xr-xchallenge-061/stuart-little/raku/ch-1.p610
-rwxr-xr-xchallenge-061/stuart-little/raku/ch-2.p621
-rw-r--r--challenge-063/stuart-little/README1
-rwxr-xr-xchallenge-063/stuart-little/raku/ch-1.p613
-rwxr-xr-xchallenge-063/stuart-little/raku/ch-2.p611
18 files changed, 166 insertions, 0 deletions
diff --git a/challenge-040/stuart-little/README b/challenge-040/stuart-little/README
new file mode 100644
index 0000000000..78439907de
--- /dev/null
+++ b/challenge-040/stuart-little/README
@@ -0,0 +1 @@
+Solutions by Stuart Little
diff --git a/challenge-040/stuart-little/raku/ch-1.p6 b/challenge-040/stuart-little/raku/ch-1.p6
new file mode 100755
index 0000000000..7356de81c6
--- /dev/null
+++ b/challenge-040/stuart-little/raku/ch-1.p6
@@ -0,0 +1,12 @@
+#!/usr/bin/env perl6
+use v6;
+
+my $ll:=(
+ <I L O V E Y O U>,
+ <2 4 0 3 2 0 1 9>,
+ <! ? £ $ % ^ & *>,
+);
+
+for $ll.&roundrobin {.say}
+
+# run as <script>
diff --git a/challenge-040/stuart-little/raku/ch-2.p6 b/challenge-040/stuart-little/raku/ch-2.p6
new file mode 100755
index 0000000000..80b2b616c5
--- /dev/null
+++ b/challenge-040/stuart-little/raku/ch-2.p6
@@ -0,0 +1,13 @@
+#!/usr/bin/env perl6
+use v6;
+
+sub selord(@a,@i) {
+ (|(@i Z=> @a.pairs.grep(*.key == @i.any).sort(*.value).map(*.value)), |@a.pairs.grep(*.key !== @i.any))
+ .sort(*.key)
+ .map(*.value)
+}
+
+say selord(@*ARGS[0].split(',').map(*.Int), @*ARGS[1].split(',').map(*.Int))
+
+# run as <script> <comma-separated entries of array> <comma-separated indices>, with the two strings separated by whitespace
+# e.g. <script> 10,4,1,8,12,3 0,2,5
diff --git a/challenge-041/stuart-little/README b/challenge-041/stuart-little/README
new file mode 100644
index 0000000000..78439907de
--- /dev/null
+++ b/challenge-041/stuart-little/README
@@ -0,0 +1 @@
+Solutions by Stuart Little
diff --git a/challenge-041/stuart-little/raku/ch-1.p6 b/challenge-041/stuart-little/raku/ch-1.p6
new file mode 100755
index 0000000000..d7f2859dc3
--- /dev/null
+++ b/challenge-041/stuart-little/raku/ch-1.p6
@@ -0,0 +1,18 @@
+#!/usr/bin/env perl6
+use v6;
+
+my @prms=(2..*).grep(*.is-prime);
+
+sub fct(Int $n where * > 0) {
+ given $n {
+ when 1 { () }
+ default {
+ my $fct=@prms.first($n %% *);
+ ($fct, |fct(($n/$fct).Int))
+ }
+ }
+}
+
+say (2..((@*ARGS) ?? (@*ARGS[0].Int) !! (50))).grep({ fct($_).is-prime })
+
+# run as <script> <top number to check> or just <script> to default to range 2..50
diff --git a/challenge-041/stuart-little/raku/ch-2.p6 b/challenge-041/stuart-little/raku/ch-2.p6
new file mode 100755
index 0000000000..ef6c7b8259
--- /dev/null
+++ b/challenge-041/stuart-little/raku/ch-2.p6
@@ -0,0 +1,6 @@
+#!/usr/bin/env perl6
+use v6;
+
+say (1, 1, { $^a + $^b +1} ... *).[^20]
+
+# run as <script>
diff --git a/challenge-042/stuart-little/README b/challenge-042/stuart-little/README
new file mode 100644
index 0000000000..78439907de
--- /dev/null
+++ b/challenge-042/stuart-little/README
@@ -0,0 +1 @@
+Solutions by Stuart Little
diff --git a/challenge-042/stuart-little/raku/ch-1.p6 b/challenge-042/stuart-little/raku/ch-1.p6
new file mode 100755
index 0000000000..d65fc51cdc
--- /dev/null
+++ b/challenge-042/stuart-little/raku/ch-1.p6
@@ -0,0 +1,6 @@
+#!/usr/bin/env perl6
+use v6;
+
+for (0..((@*ARGS) ?? (@*ARGS[0].Int) !! (50))).map({ "Decimal: $_ -- Octal: $_.base(8)" }) {.say}
+
+# run as <script> <decimal number to go up to> or just <script> to default to the range 0..50
diff --git a/challenge-042/stuart-little/raku/ch-2.p6 b/challenge-042/stuart-little/raku/ch-2.p6
new file mode 100755
index 0000000000..18e0b20559
--- /dev/null
+++ b/challenge-042/stuart-little/raku/ch-2.p6
@@ -0,0 +1,20 @@
+#!/usr/bin/env perl6
+use v6;
+
+grammar BAL {
+ regex TOP { <expr>* }
+ regex expr { '(' <expr>* ')' }
+}
+
+given @*ARGS[0] {
+ when /^\d+$/ {
+ say "Random string of parens: ", my $s=<( )>.roll(@*ARGS[0].Int).join;
+ say "Balanced: ", BAL.parse($s).Bool
+ }
+ when /^<[()]>*$/ {
+ say "Balanced: ", BAL.parse(@*ARGS[0]).Bool
+ }
+}
+
+# run as <script> <number of parentheses> or
+# <script> <single-quoted string of parens>
diff --git a/challenge-060/stuart-little/README b/challenge-060/stuart-little/README
new file mode 100644
index 0000000000..78439907de
--- /dev/null
+++ b/challenge-060/stuart-little/README
@@ -0,0 +1 @@
+Solutions by Stuart Little
diff --git a/challenge-060/stuart-little/raku/ch-1.p6 b/challenge-060/stuart-little/raku/ch-1.p6
new file mode 100755
index 0000000000..4105cccc88
--- /dev/null
+++ b/challenge-060/stuart-little/raku/ch-1.p6
@@ -0,0 +1,18 @@
+#!/usr/bin/env perl6
+use v6;
+
+sub trcol(Str $s) {
+ my @cols=(|('A'..'Z'), |(2..*).map({ |(['A'..'Z'] xx $_).reduce(&infix:<X~>) }));
+ given $s {
+ when /^<[a..zA..Z]>+$/ {
+ @cols.first({ $_ eq $s.uc }, :k)+1
+ }
+ when /^\d+$/ {
+ @cols.[$s.Int-1]
+ }
+ }
+}
+
+say @*ARGS[0].&trcol
+
+# run as <script> <input: either a pos. integer or an alphabetic column label>
diff --git a/challenge-060/stuart-little/raku/ch-2.p6 b/challenge-060/stuart-little/raku/ch-2.p6
new file mode 100755
index 0000000000..37749ff9b7
--- /dev/null
+++ b/challenge-060/stuart-little/raku/ch-2.p6
@@ -0,0 +1,12 @@
+#!/usr/bin/env perl6
+use v6;
+
+sub concat_nrs(@a, $l) {
+ (@a xx $l).reduce(&infix:<X~>)
+ .grep({ $l==0 || $_.substr(0..0) ne '0' })
+ .grep(*.chars == $l)
+}
+
+say @*ARGS[2..*].&concat_nrs(@*ARGS[0].Int).grep(*.Int < @*ARGS[1].Int)
+
+# run as <script> <length> <upper bound> <space-separated list entries>
diff --git a/challenge-061/stuart-little/README b/challenge-061/stuart-little/README
new file mode 100644
index 0000000000..78439907de
--- /dev/null
+++ b/challenge-061/stuart-little/README
@@ -0,0 +1 @@
+Solutions by Stuart Little
diff --git a/challenge-061/stuart-little/raku/ch-1.p6 b/challenge-061/stuart-little/raku/ch-1.p6
new file mode 100755
index 0000000000..249d918d96
--- /dev/null
+++ b/challenge-061/stuart-little/raku/ch-1.p6
@@ -0,0 +1,10 @@
+#!/usr/bin/env perl6
+use v6;
+
+sub maxprod(@a) {
+ (@a.keys X @a.keys).grep({ $_[0] <= $_[1]}).map({ @a[$_[0]..$_[1]]}).classify({ $_.reduce(&infix:<*>)}).sort(*.key).reverse.first.value
+}
+
+@*ARGS.map(*.Int).&maxprod.say
+
+# run as <script> <space-separated numbers>
diff --git a/challenge-061/stuart-little/raku/ch-2.p6 b/challenge-061/stuart-little/raku/ch-2.p6
new file mode 100755
index 0000000000..6b1860e589
--- /dev/null
+++ b/challenge-061/stuart-little/raku/ch-2.p6
@@ -0,0 +1,21 @@
+#!/usr/bin/env perl6
+use v6;
+
+sub splc($s) {
+ (0..255).map({ $s ~~ /^($^a)(.*)/; $/ && ($0,$1)}).grep(* !~~ Nil).map(*.map(*.Str))
+}
+
+sub itr1($s) {
+ $s.map({ ($_[0..*-2], $_[*-1].&splc) }).map( -> $x {|$x[1].map( -> $y { |$x[0], |$y})})
+}
+
+sub iter($s,$n,&itr1) {
+ given $n {
+ when 0 {$s}
+ default { iter($s.&itr1, $n-1,&itr1)}
+ }
+}
+
+say iter(@*ARGS[0],4,&itr1).grep(! *.[*-1])
+
+# run as <script> <string>
diff --git a/challenge-063/stuart-little/README b/challenge-063/stuart-little/README
new file mode 100644
index 0000000000..78439907de
--- /dev/null
+++ b/challenge-063/stuart-little/README
@@ -0,0 +1 @@
+Solutions by Stuart Little
diff --git a/challenge-063/stuart-little/raku/ch-1.p6 b/challenge-063/stuart-little/raku/ch-1.p6
new file mode 100755
index 0000000000..a3b1e2d610
--- /dev/null
+++ b/challenge-063/stuart-little/raku/ch-1.p6
@@ -0,0 +1,13 @@
+#!/usr/bin/env perl6
+use v6;
+use MONKEY-SEE-NO-EVAL;
+
+sub last_word($s,$r) {
+ my $rx=EVAL($r);
+ $s.split(/\s+/).reverse.first(* ~~ $rx)
+}
+
+last_word(|@*ARGS[0,1]).say
+
+# run as <script> <quoted string> <singly-quoted regex in rx format>
+# e.g. <script> "Don't match too much, Chet!" 'rx:i/ch.t/'
diff --git a/challenge-063/stuart-little/raku/ch-2.p6 b/challenge-063/stuart-little/raku/ch-2.p6
new file mode 100755
index 0000000000..1c33e185f2
--- /dev/null
+++ b/challenge-063/stuart-little/raku/ch-2.p6
@@ -0,0 +1,11 @@
+#!/usr/bin/env perl6
+use v6;
+
+sub rt(Str $s, Int $n where * > 0) {
+ $s.substr(($n % $s.chars)) ~ $s.substr(0..^($n % $s.chars))
+}
+
+my $word=@*ARGS[0];
+say (1..*).first({ rt($word, ($_*($_+1)/2).Int) eq $word }, :k)+1
+
+# run as <script> <word>