diff options
| author | arnesom <arne@bbop.org> | 2021-12-12 20:32:44 +0100 |
|---|---|---|
| committer | arnesom <arne@bbop.org> | 2021-12-12 20:32:44 +0100 |
| commit | a718547851575dd341cde25d6914d3ac5a182c87 (patch) | |
| tree | 45b30746eec3e57b12d1b861ee3370f4b1196d46 /challenge-142 | |
| parent | afe0e37af2d810d218db86d0b44b2493545e8af2 (diff) | |
| download | perlweeklychallenge-club-a718547851575dd341cde25d6914d3ac5a182c87.tar.gz perlweeklychallenge-club-a718547851575dd341cde25d6914d3ac5a182c87.tar.bz2 perlweeklychallenge-club-a718547851575dd341cde25d6914d3ac5a182c87.zip | |
Arne Sommer
Diffstat (limited to 'challenge-142')
| -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; |
