diff options
| -rw-r--r-- | challenge-325/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-325/arne-sommer/raku/ch-1.raku | 12 | ||||
| -rwxr-xr-x | challenge-325/arne-sommer/raku/ch-2.raku | 29 | ||||
| -rwxr-xr-x | challenge-325/arne-sommer/raku/consecutive-one | 12 | ||||
| -rwxr-xr-x | challenge-325/arne-sommer/raku/final-price | 29 |
5 files changed, 83 insertions, 0 deletions
diff --git a/challenge-325/arne-sommer/blog.txt b/challenge-325/arne-sommer/blog.txt new file mode 100644 index 0000000000..6949433b16 --- /dev/null +++ b/challenge-325/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/one-final.html diff --git a/challenge-325/arne-sommer/raku/ch-1.raku b/challenge-325/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..85386e0d33 --- /dev/null +++ b/challenge-325/arne-sommer/raku/ch-1.raku @@ -0,0 +1,12 @@ +#! /usr/bin/env raku + +subset BinaryDigit of Int where * eq any(0,1); + +unit sub MAIN (*@binary where @binary.elems >= 1 && all(@binary) ~~ BinaryDigit, + :v(:$verbose)); + +my @ones = @binary.join.split(/0+/); + +say ": One strings: { @ones.join(",") }" if $verbose; + +say @ones.max.chars;
\ No newline at end of file diff --git a/challenge-325/arne-sommer/raku/ch-2.raku b/challenge-325/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..ccc1de3e9e --- /dev/null +++ b/challenge-325/arne-sommer/raku/ch-2.raku @@ -0,0 +1,29 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@prices where @prices.elems >= 1 && all(@prices) ~~ UInt, + :v(:$verbose)); + +my @final; + +for ^@prices.elems -> $i +{ + my $price = @prices[$i]; + my $lower = @prices[$i+1 .. Inf].grep(* <= $price).first; + + if defined $lower + { + my $new = $price - $lower; + + say ": Price: $price - lower $lower = $new" if $verbose; + + @final.push: $new; + } + else + { + say ": Price: $price -> no lower = $price" if $verbose; + + @final.push: $price; + } +} + +say @final;
\ No newline at end of file diff --git a/challenge-325/arne-sommer/raku/consecutive-one b/challenge-325/arne-sommer/raku/consecutive-one new file mode 100755 index 0000000000..85386e0d33 --- /dev/null +++ b/challenge-325/arne-sommer/raku/consecutive-one @@ -0,0 +1,12 @@ +#! /usr/bin/env raku + +subset BinaryDigit of Int where * eq any(0,1); + +unit sub MAIN (*@binary where @binary.elems >= 1 && all(@binary) ~~ BinaryDigit, + :v(:$verbose)); + +my @ones = @binary.join.split(/0+/); + +say ": One strings: { @ones.join(",") }" if $verbose; + +say @ones.max.chars;
\ No newline at end of file diff --git a/challenge-325/arne-sommer/raku/final-price b/challenge-325/arne-sommer/raku/final-price new file mode 100755 index 0000000000..ccc1de3e9e --- /dev/null +++ b/challenge-325/arne-sommer/raku/final-price @@ -0,0 +1,29 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@prices where @prices.elems >= 1 && all(@prices) ~~ UInt, + :v(:$verbose)); + +my @final; + +for ^@prices.elems -> $i +{ + my $price = @prices[$i]; + my $lower = @prices[$i+1 .. Inf].grep(* <= $price).first; + + if defined $lower + { + my $new = $price - $lower; + + say ": Price: $price - lower $lower = $new" if $verbose; + + @final.push: $new; + } + else + { + say ": Price: $price -> no lower = $price" if $verbose; + + @final.push: $price; + } +} + +say @final;
\ No newline at end of file |
