diff options
| -rw-r--r-- | challenge-074/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-074/stuart-little/raku/ch-1.p6 | 10 | ||||
| -rwxr-xr-x | challenge-074/stuart-little/raku/ch-2.p6 | 10 | ||||
| -rw-r--r-- | challenge-075/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-075/stuart-little/raku/ch-1.p6 | 11 | ||||
| -rwxr-xr-x | challenge-075/stuart-little/raku/ch-2.p6 | 25 | ||||
| -rw-r--r-- | challenge-076/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-076/stuart-little/raku/ch-1.p6 | 16 | ||||
| -rwxr-xr-x | challenge-076/stuart-little/raku/ch-2.p6 | 42 | ||||
| -rw-r--r-- | challenge-077/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-077/stuart-little/raku/ch-1.p6 | 12 | ||||
| -rwxr-xr-x | challenge-077/stuart-little/raku/ch-2.p6 | 20 | ||||
| -rw-r--r-- | challenge-078/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-078/stuart-little/raku/ch-1.p6 | 8 | ||||
| -rwxr-xr-x | challenge-078/stuart-little/raku/ch-2.p6 | 15 |
15 files changed, 174 insertions, 0 deletions
diff --git a/challenge-074/stuart-little/README b/challenge-074/stuart-little/README new file mode 100644 index 0000000000..76119cbbb8 --- /dev/null +++ b/challenge-074/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little. diff --git a/challenge-074/stuart-little/raku/ch-1.p6 b/challenge-074/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..b6c196b5f4 --- /dev/null +++ b/challenge-074/stuart-little/raku/ch-1.p6 @@ -0,0 +1,10 @@ +#!/usr/bin/env perl6 +use v6; + +sub maj(@a) { + @a.grep({ @a.grep($_).elems > floor(@a/2) }).[0] || -1 +} + +say maj(@*ARGS); + +# run as <script> <space-separated integers> diff --git a/challenge-074/stuart-little/raku/ch-2.p6 b/challenge-074/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..d2fa5618a5 --- /dev/null +++ b/challenge-074/stuart-little/raku/ch-2.p6 @@ -0,0 +1,10 @@ +#!/usr/bin/env perl6 +use v6; + +sub fnr(Str $s) { + $s.split('',:skip-empty).grep({ $s.indices($_) == 1 }).[0] || '#' +} + +say (1..@*ARGS[0].chars).map({@*ARGS[0].substr(0,$_)}).map(&fnr); + +# run as <script> <space-separated integers> diff --git a/challenge-075/stuart-little/README b/challenge-075/stuart-little/README new file mode 100644 index 0000000000..76119cbbb8 --- /dev/null +++ b/challenge-075/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little. diff --git a/challenge-075/stuart-little/raku/ch-1.p6 b/challenge-075/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..c91de3e4b3 --- /dev/null +++ b/challenge-075/stuart-little/raku/ch-1.p6 @@ -0,0 +1,11 @@ +#!/usr/bin/env perl6 +use v6; + +sub coins($s, @c) { + (! @c.grep(* <= $s)) && return ((),); + return (|coins($s-@c[0], @c).map({ @c[0], |$_ }), |coins($s, @c[1..*])).grep(*.sum == $s); +} + +for coins(@*ARGS[0].Int, @*ARGS[1..*].map(*.Int).sort) { .say}; + +# run as <script> <sum> <space-separated coin values> diff --git a/challenge-075/stuart-little/raku/ch-2.p6 b/challenge-075/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..2dbd952ae3 --- /dev/null +++ b/challenge-075/stuart-little/raku/ch-2.p6 @@ -0,0 +1,25 @@ +#!/usr/bin/env perl6 +use v6; + +sub rect(@a) { + @a + .keys + .combinations(2) + .map({ @a[$_.[0]..$_.[1]].min*($_.[1]-$_.[0]+1) }) + .max +} + +sub hist(@a) { + (1..@a.max) + .map( -> $val { @a.keys.map({ +($val <= @a.[$_]) ?? ('#') !! (' ') }) + }) + .reverse + .join("\n") +} + +say hist(@*ARGS.map(*.Int)), +"\n" ~ ('- ' x @*ARGS) ~ "\n", +max(rect(@*ARGS.map(*.Int)), @*ARGS.map(*.Int).max); + +# run as <script> <space-separated numbers> diff --git a/challenge-076/stuart-little/README b/challenge-076/stuart-little/README new file mode 100644 index 0000000000..76119cbbb8 --- /dev/null +++ b/challenge-076/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little. diff --git a/challenge-076/stuart-little/raku/ch-1.p6 b/challenge-076/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..3e3d358c54 --- /dev/null +++ b/challenge-076/stuart-little/raku/ch-1.p6 @@ -0,0 +1,16 @@ +#!/usr/bin/env perl6 +use v6; + +sub minpr(Int $n where * >= 2) { + ($n.is-prime) && return 1; + return 1+(2 ...^ *>$n) + .grep(*.is-prime) + .map({ $n-$_ }) + .grep(* >= 2) + .map(&minpr) + .min; +} + +say minpr(@*ARGS.[0].Int); + +# run as <script> <number> diff --git a/challenge-076/stuart-little/raku/ch-2.p6 b/challenge-076/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..ff4c177067 --- /dev/null +++ b/challenge-076/stuart-little/raku/ch-2.p6 @@ -0,0 +1,42 @@ +#!/usr/bin/env perl6 +use v6; + +my ($word_file, $grid_file) = @*ARGS[0,1]; + +my @words=$word_file.IO.lines; +my $grid = (($grid_file) ?? ($grid_file.IO.slurp) !! ($=finish)) +.lc.split(/\n+/).grep(* ~~ /\S+/).map(*.split(/\s+/)).map(*.List); + +my @range=(-($grid+$grid[0])..^$grid+$grid[0]); +my ($ver, $se, $ne) = ((1,0),(1,1),(1,-1)) +.map( -> $coord { @range.map( -> $x { @range.map({ $grid[$coord.[0]*$_][$x+$coord.[1]*$_] }).grep(*.defined) }).grep(*.elems).map(*.List) }) +.map(*.List) +.map({ $_.map(*.join) }); + +my @grid_strings_to_match=(|$grid.map(*.join), |$ver, |$se, |$ne); + +for @words.grep(*.chars >= 5).grep( -> $word { @grid_strings_to_match.grep({ $_.contains($word) || $_.contains($word.flip) }) }) { .say}; + +=finish +B I D E M I A T S U C C O R S T +L D E G G I W Q H O D E E H D P +U S E I R U B U T E A S L A G U +N G N I Z I L A I C O S C N U D +T G M I D S T S A R A R E I F G +S R E N M D C H A S I V E E L I +S C S H A E U E B R O A D M T E +H W O V L P E D D L A I U L S S +R Y O N L A S F C S T A O G O T +I G U S S R R U G O V A R Y O C +N R G P A T N A N G I L A M O O +E I H A C E I V I R U S E S E D +S E T S U D T T G A R L I C N H +H V R M X L W I U M S N S O T B +A E A O F I L C H T O D C A E U +Z S C D F E C A A I I R L N R F +A R I I A N Y U T O O O U T P F +R S E C I S N A B O S C N E R A +D R S M P C U U N E L T E S I L + +# run as <script> <path-to-word-file> <path-to-grid-file> +# the example grid is included for convenience as a fallback if you want to run it without the grid-file argument (i.e. with only the word-file argument) diff --git a/challenge-077/stuart-little/README b/challenge-077/stuart-little/README new file mode 100644 index 0000000000..76119cbbb8 --- /dev/null +++ b/challenge-077/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little. diff --git a/challenge-077/stuart-little/raku/ch-1.p6 b/challenge-077/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..cab30285d6 --- /dev/null +++ b/challenge-077/stuart-little/raku/ch-1.p6 @@ -0,0 +1,12 @@ +#!/usr/bin/env perl6 +use v6; + +sub fibsum($n) { + (1,2,* + * ... * >= $n) + .combinations + .grep(*.sum == $n) +} + +for (fibsum(@*ARGS.[0].Int)) { .say } + +# run as <script> <number> diff --git a/challenge-077/stuart-little/raku/ch-2.p6 b/challenge-077/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..5984f94769 --- /dev/null +++ b/challenge-077/stuart-little/raku/ch-2.p6 @@ -0,0 +1,20 @@ +#!/usr/bin/env perl6 +use v6; + +sub lnly(@a) { + ((^@a.elems) X (^@a[0].elems)) + .grep({ @a[$_[0]][$_[1]] && (@a[$_[0]][$_[1]] eq 'x') }) + .map({ (($_.[0] X+ (0,-1,1)).grep(*>=0) X ($_.[1] X+ (0,-1,1)).grep(*>=0)).[1..*] }) + .map({ $_.grep({ @a[$_[0]][$_[1]] }).map({ @a[$_[0]][$_[1]] }) }) + .map(*.join).grep(* !~~ /x/) + .elems +} + +say lnly(@*ARGS.map(*.split('', :skip-empty))); + +# run as <script> <space-separated strings representing the rows of the matrix> +# <script> x0x 00x 00x inputs the matrix +# x0x +# 00x +# 00x +# diff --git a/challenge-078/stuart-little/README b/challenge-078/stuart-little/README new file mode 100644 index 0000000000..76119cbbb8 --- /dev/null +++ b/challenge-078/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little. diff --git a/challenge-078/stuart-little/raku/ch-1.p6 b/challenge-078/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..7199ecf091 --- /dev/null +++ b/challenge-078/stuart-little/raku/ch-1.p6 @@ -0,0 +1,8 @@ +#!/usr/bin/env perl6 +use v6; + +sub ldr(@a) { + @a.[@a.keys.grep({ @a.[$_] == @a.[$_..*].max })] +} + +say ldr(@*ARGS.map(*.Int)); diff --git a/challenge-078/stuart-little/raku/ch-2.p6 b/challenge-078/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..28f5e1adff --- /dev/null +++ b/challenge-078/stuart-little/raku/ch-2.p6 @@ -0,0 +1,15 @@ +#!/usr/bin/env perl6 +use v6; + +sub rot(@a,@b) { + @b.map({ |@a.[$_..*], |@a.[^$_] }) +} + +my @a=@*ARGS[^(@*ARGS.first('-',:k))]; +my @b=@*ARGS[(@*ARGS.first('-',:k))^..*]; + +for (rot(@a,@b)) { + .say; +} + +# run as <script> <entries of the two arrays, separated by a '-'> with all individual entries space-separated |
