diff options
| -rw-r--r-- | challenge-040/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-040/stuart-little/raku/ch-1.p6 | 12 | ||||
| -rwxr-xr-x | challenge-040/stuart-little/raku/ch-2.p6 | 13 | ||||
| -rw-r--r-- | challenge-041/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-041/stuart-little/raku/ch-1.p6 | 18 | ||||
| -rwxr-xr-x | challenge-041/stuart-little/raku/ch-2.p6 | 6 | ||||
| -rw-r--r-- | challenge-042/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-042/stuart-little/raku/ch-1.p6 | 6 | ||||
| -rwxr-xr-x | challenge-042/stuart-little/raku/ch-2.p6 | 20 | ||||
| -rw-r--r-- | challenge-060/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-060/stuart-little/raku/ch-1.p6 | 18 | ||||
| -rwxr-xr-x | challenge-060/stuart-little/raku/ch-2.p6 | 12 | ||||
| -rw-r--r-- | challenge-061/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-061/stuart-little/raku/ch-1.p6 | 10 | ||||
| -rwxr-xr-x | challenge-061/stuart-little/raku/ch-2.p6 | 21 | ||||
| -rw-r--r-- | challenge-063/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-063/stuart-little/raku/ch-1.p6 | 13 | ||||
| -rwxr-xr-x | challenge-063/stuart-little/raku/ch-2.p6 | 11 |
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> |
