From 634c23f2a6f68b9ced2e12368504fae3b1824c5e Mon Sep 17 00:00:00 2001 From: Arne Sommer Date: Wed, 11 Jun 2025 23:33:30 +0200 Subject: Arne Sommer --- challenge-325/arne-sommer/blog.txt | 1 + challenge-325/arne-sommer/raku/ch-1.raku | 12 +++++++++++ challenge-325/arne-sommer/raku/ch-2.raku | 29 ++++++++++++++++++++++++++ challenge-325/arne-sommer/raku/consecutive-one | 12 +++++++++++ challenge-325/arne-sommer/raku/final-price | 29 ++++++++++++++++++++++++++ 5 files changed, 83 insertions(+) create mode 100644 challenge-325/arne-sommer/blog.txt create mode 100755 challenge-325/arne-sommer/raku/ch-1.raku create mode 100755 challenge-325/arne-sommer/raku/ch-2.raku create mode 100755 challenge-325/arne-sommer/raku/consecutive-one create mode 100755 challenge-325/arne-sommer/raku/final-price 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 -- cgit