diff options
| -rw-r--r-- | challenge-106/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-106/arne-sommer/raku/ch-1.raku | 33 | ||||
| -rwxr-xr-x | challenge-106/arne-sommer/raku/ch-2.raku | 9 | ||||
| -rwxr-xr-x | challenge-106/arne-sommer/raku/decimal-string | 9 | ||||
| -rwxr-xr-x | challenge-106/arne-sommer/raku/maximum-gap | 42 | ||||
| -rwxr-xr-x | challenge-106/arne-sommer/raku/maximum-gap-ERROR | 42 | ||||
| -rwxr-xr-x | challenge-106/arne-sommer/raku/maximum-gap-simplified | 33 |
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; +} |
