aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-106/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-106/arne-sommer/raku/ch-1.raku33
-rwxr-xr-xchallenge-106/arne-sommer/raku/ch-2.raku9
-rwxr-xr-xchallenge-106/arne-sommer/raku/decimal-string9
-rwxr-xr-xchallenge-106/arne-sommer/raku/maximum-gap42
-rwxr-xr-xchallenge-106/arne-sommer/raku/maximum-gap-ERROR42
-rwxr-xr-xchallenge-106/arne-sommer/raku/maximum-gap-simplified33
7 files changed, 169 insertions, 0 deletions
diff --git a/challenge-106/arne-sommer/blog.txt b/challenge-106/arne-sommer/blog.txt
new file mode 100644
index 0000000000..48c7fd9dab
--- /dev/null
+++ b/challenge-106/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/string-gap.html
diff --git a/challenge-106/arne-sommer/raku/ch-1.raku b/challenge-106/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..bde8035a34
--- /dev/null
+++ b/challenge-106/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,33 @@
+#! /usr/bin/env raku
+
+multi sub MAIN (*@N where @N.elems == 1, :v($verbose))
+{
+ say 0;
+}
+
+multi sub MAIN (*@N where @N.elems > 1 && all(@N) ~~ Int, :v($verbose))
+{
+ my @diffs = diff-pairs(@N.sort, $verbose);
+
+ say @diffs.max;
+}
+
+sub diff-pairs (@list is copy, $verbose)
+{
+ my $first = @list.shift;
+ my $second;
+ my @result;
+
+ while (@list)
+ {
+ $second = @list.shift;
+
+ @result.push: abs($first - $second);
+
+ say ": Added diff from Pair: $first,$second -> { abs($first - $second) }" if $verbose;
+
+ $first = $second;
+ }
+
+ return @result;
+}
diff --git a/challenge-106/arne-sommer/raku/ch-2.raku b/challenge-106/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..11bfcd8987
--- /dev/null
+++ b/challenge-106/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,9 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $N where $N != 0, Int $D where $D != 0);
+
+my $rat = $N / $D;
+
+my ($base, $rep) = $rat.base-repeating;
+
+say $base, ( $rep ?? "($rep)" !! '' ); \ No newline at end of file
diff --git a/challenge-106/arne-sommer/raku/decimal-string b/challenge-106/arne-sommer/raku/decimal-string
new file mode 100755
index 0000000000..11bfcd8987
--- /dev/null
+++ b/challenge-106/arne-sommer/raku/decimal-string
@@ -0,0 +1,9 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $N where $N != 0, Int $D where $D != 0);
+
+my $rat = $N / $D;
+
+my ($base, $rep) = $rat.base-repeating;
+
+say $base, ( $rep ?? "($rep)" !! '' ); \ No newline at end of file
diff --git a/challenge-106/arne-sommer/raku/maximum-gap b/challenge-106/arne-sommer/raku/maximum-gap
new file mode 100755
index 0000000000..e201b5e385
--- /dev/null
+++ b/challenge-106/arne-sommer/raku/maximum-gap
@@ -0,0 +1,42 @@
+#! /usr/bin/env raku
+
+multi sub MAIN (*@N where @N.elems == 1, :v($verbose))
+{
+ say 0;
+}
+
+multi sub MAIN (*@N where @N.elems > 1 && all(@N) ~~ Int, :v($verbose))
+{
+ my @pairs = all-pairs(@N.sort, $verbose);
+
+ say ": Pairs: { @pairs.raku }" if $verbose;
+
+ say @pairs>>.reduce(&difference).max;
+}
+
+sub all-pairs (@list is copy, $verbose)
+{
+ my $first = @list.shift;
+ my $second;
+ my @result;
+
+ while (@list)
+ {
+ $second = @list.shift;
+
+ @result.push: ($first.Int => $second.Int);
+
+ say ": Added Pair: $first -> $second" if $verbose;
+
+ $first = $second;
+ }
+
+ return @result;
+}
+
+sub difference (Pair $p)
+{
+ return abs( $p.key - $p.value );
+}
+
+
diff --git a/challenge-106/arne-sommer/raku/maximum-gap-ERROR b/challenge-106/arne-sommer/raku/maximum-gap-ERROR
new file mode 100755
index 0000000000..4dde3934c9
--- /dev/null
+++ b/challenge-106/arne-sommer/raku/maximum-gap-ERROR
@@ -0,0 +1,42 @@
+#! /usr/bin/env raku
+
+multi sub MAIN (*@N where @N.elems == 1, :v($verbose))
+{
+ say 0;
+}
+
+multi sub MAIN (*@N where @N.elems > 1 && all(@N) ~~ Int, :v($verbose))
+{
+ my @pairs = all-pairs(@N.sort, $verbose);
+
+ say ": Pairs: { @pairs.raku }" if $verbose;
+
+ say @pairs>>.reduce(&difference).max;
+}
+
+sub all-pairs (@list is copy, $verbose)
+{
+ my $first = @list.shift;
+ my $second;
+ my @result;
+
+ while (@list)
+ {
+ $second = @list.shift;
+
+ @result.push: ($first => $second);
+
+ say ": Added Pair: $first -> $second" if $verbose;
+
+ $first = $second;
+ }
+
+ return @result;
+}
+
+sub difference (Pair $p)
+{
+ return abs( $p.key - $p.value );
+}
+
+
diff --git a/challenge-106/arne-sommer/raku/maximum-gap-simplified b/challenge-106/arne-sommer/raku/maximum-gap-simplified
new file mode 100755
index 0000000000..bde8035a34
--- /dev/null
+++ b/challenge-106/arne-sommer/raku/maximum-gap-simplified
@@ -0,0 +1,33 @@
+#! /usr/bin/env raku
+
+multi sub MAIN (*@N where @N.elems == 1, :v($verbose))
+{
+ say 0;
+}
+
+multi sub MAIN (*@N where @N.elems > 1 && all(@N) ~~ Int, :v($verbose))
+{
+ my @diffs = diff-pairs(@N.sort, $verbose);
+
+ say @diffs.max;
+}
+
+sub diff-pairs (@list is copy, $verbose)
+{
+ my $first = @list.shift;
+ my $second;
+ my @result;
+
+ while (@list)
+ {
+ $second = @list.shift;
+
+ @result.push: abs($first - $second);
+
+ say ": Added diff from Pair: $first,$second -> { abs($first - $second) }" if $verbose;
+
+ $first = $second;
+ }
+
+ return @result;
+}