diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-12-13 02:22:19 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-13 02:22:19 +0000 |
| commit | a831aede4405deda76624ba06ddb9d33d466f920 (patch) | |
| tree | 9fa6feeae3b0bc3dde13f706fa8a5b3b02089839 | |
| parent | e210b71fb5bc226c32b4ea0c7ad5c49520804362 (diff) | |
| parent | a718547851575dd341cde25d6914d3ac5a182c87 (diff) | |
| download | perlweeklychallenge-club-a831aede4405deda76624ba06ddb9d33d466f920.tar.gz perlweeklychallenge-club-a831aede4405deda76624ba06ddb9d33d466f920.tar.bz2 perlweeklychallenge-club-a831aede4405deda76624ba06ddb9d33d466f920.zip | |
Merge pull request #5364 from arnesom/branch-for-challenge-142
Arne Sommer
| -rw-r--r-- | challenge-142/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-142/arne-sommer/raku/ch-1.raku | 29 | ||||
| -rwxr-xr-x | challenge-142/arne-sommer/raku/ch-2.raku | 13 | ||||
| -rwxr-xr-x | challenge-142/arne-sommer/raku/dld | 29 | ||||
| -rwxr-xr-x | challenge-142/arne-sommer/raku/sleep-sort | 13 | ||||
| -rwxr-xr-x | challenge-142/arne-sommer/raku/sleep-sort-milliseconds | 13 |
6 files changed, 98 insertions, 0 deletions
diff --git a/challenge-142/arne-sommer/blog.txt b/challenge-142/arne-sommer/blog.txt new file mode 100644 index 0000000000..550bab55e5 --- /dev/null +++ b/challenge-142/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/last-sleep.html diff --git a/challenge-142/arne-sommer/raku/ch-1.raku b/challenge-142/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..e9a2d06131 --- /dev/null +++ b/challenge-142/arne-sommer/raku/ch-1.raku @@ -0,0 +1,29 @@ +#! /usr/bin/env raku + +subset PosInt of Int where * >= 1; +subset Digit of Int where * == any(0..9); + +unit sub MAIN (PosInt $m, Digit $n, :v(:$verbose)); + +my @divisors = divisors($m); +my @result = @divisors.grep({ /$n$/ }) ; + +say ": - Ending with $n: { @result.join(", ") }" if $verbose; + +say @result.elems; + +sub divisors ($number, :$not-self, :$not-one) +{ + my @divisors; + + for ($not-one ?? 2 !! 1) .. $number/2 -> $candidate + { + @divisors.push: $candidate if $number %% $candidate; + } + + @divisors.push: $number unless $not-self; + + say ": $number has { @divisors.elems } divisors: { @divisors.join(", ") }" if $verbose; + + return @divisors; +} diff --git a/challenge-142/arne-sommer/raku/ch-2.raku b/challenge-142/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..9361ddab8f --- /dev/null +++ b/challenge-142/arne-sommer/raku/ch-2.raku @@ -0,0 +1,13 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@values where @values.elems > 0, :v(:$verbose)); + +my @promises; + +for @values -> $value +{ + next unless $value ~~ Numeric; + @promises.push: Promise.in($value).then: { say $value; }; +} + +await @promises; diff --git a/challenge-142/arne-sommer/raku/dld b/challenge-142/arne-sommer/raku/dld new file mode 100755 index 0000000000..e9a2d06131 --- /dev/null +++ b/challenge-142/arne-sommer/raku/dld @@ -0,0 +1,29 @@ +#! /usr/bin/env raku + +subset PosInt of Int where * >= 1; +subset Digit of Int where * == any(0..9); + +unit sub MAIN (PosInt $m, Digit $n, :v(:$verbose)); + +my @divisors = divisors($m); +my @result = @divisors.grep({ /$n$/ }) ; + +say ": - Ending with $n: { @result.join(", ") }" if $verbose; + +say @result.elems; + +sub divisors ($number, :$not-self, :$not-one) +{ + my @divisors; + + for ($not-one ?? 2 !! 1) .. $number/2 -> $candidate + { + @divisors.push: $candidate if $number %% $candidate; + } + + @divisors.push: $number unless $not-self; + + say ": $number has { @divisors.elems } divisors: { @divisors.join(", ") }" if $verbose; + + return @divisors; +} diff --git a/challenge-142/arne-sommer/raku/sleep-sort b/challenge-142/arne-sommer/raku/sleep-sort new file mode 100755 index 0000000000..9361ddab8f --- /dev/null +++ b/challenge-142/arne-sommer/raku/sleep-sort @@ -0,0 +1,13 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@values where @values.elems > 0, :v(:$verbose)); + +my @promises; + +for @values -> $value +{ + next unless $value ~~ Numeric; + @promises.push: Promise.in($value).then: { say $value; }; +} + +await @promises; diff --git a/challenge-142/arne-sommer/raku/sleep-sort-milliseconds b/challenge-142/arne-sommer/raku/sleep-sort-milliseconds new file mode 100755 index 0000000000..6eee23ede6 --- /dev/null +++ b/challenge-142/arne-sommer/raku/sleep-sort-milliseconds @@ -0,0 +1,13 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@values where @values.elems > 0, :v(:$verbose)); + +my @promises; + +for @values -> $value +{ + next unless $value ~~ Numeric; + @promises.push: Promise.in($value / 1000).then: { say $value; }; +} + +await @promises; |
