aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-074/stuart-little/README1
-rwxr-xr-xchallenge-074/stuart-little/raku/ch-1.p610
-rwxr-xr-xchallenge-074/stuart-little/raku/ch-2.p610
-rw-r--r--challenge-075/stuart-little/README1
-rwxr-xr-xchallenge-075/stuart-little/raku/ch-1.p611
-rwxr-xr-xchallenge-075/stuart-little/raku/ch-2.p625
-rw-r--r--challenge-076/stuart-little/README1
-rwxr-xr-xchallenge-076/stuart-little/raku/ch-1.p616
-rwxr-xr-xchallenge-076/stuart-little/raku/ch-2.p642
-rw-r--r--challenge-077/stuart-little/README1
-rwxr-xr-xchallenge-077/stuart-little/raku/ch-1.p612
-rwxr-xr-xchallenge-077/stuart-little/raku/ch-2.p620
-rw-r--r--challenge-078/stuart-little/README1
-rwxr-xr-xchallenge-078/stuart-little/raku/ch-1.p68
-rwxr-xr-xchallenge-078/stuart-little/raku/ch-2.p615
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