diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-07-19 23:33:24 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-07-19 23:33:24 +0100 |
| commit | cbadb2c76098dbbf5f5d3a5e2cb73e46dd58adea (patch) | |
| tree | 474590597eec94e9f005fbd4cb7d9730bb663348 /challenge-174 | |
| parent | 34b4535feb8f28d524db90f36f17af1b81c99269 (diff) | |
| download | perlweeklychallenge-club-cbadb2c76098dbbf5f5d3a5e2cb73e46dd58adea.tar.gz perlweeklychallenge-club-cbadb2c76098dbbf5f5d3a5e2cb73e46dd58adea.tar.bz2 perlweeklychallenge-club-cbadb2c76098dbbf5f5d3a5e2cb73e46dd58adea.zip | |
- Added solutions by Laurent Rosenfeld.
Diffstat (limited to 'challenge-174')
| -rw-r--r-- | challenge-174/laurent-rosenfeld/awk/ch-1.awk | 23 | ||||
| -rw-r--r-- | challenge-174/laurent-rosenfeld/bc/ch-1.bc | 22 | ||||
| -rw-r--r-- | challenge-174/laurent-rosenfeld/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-174/laurent-rosenfeld/c/ch-1.c | 36 | ||||
| -rw-r--r-- | challenge-174/laurent-rosenfeld/julia/ch-1.jl | 14 | ||||
| -rw-r--r-- | challenge-174/laurent-rosenfeld/perl/ch-1.pl | 18 | ||||
| -rw-r--r-- | challenge-174/laurent-rosenfeld/python/ch-1.py | 17 | ||||
| -rw-r--r-- | challenge-174/laurent-rosenfeld/raku/ch-1.raku | 12 |
8 files changed, 143 insertions, 0 deletions
diff --git a/challenge-174/laurent-rosenfeld/awk/ch-1.awk b/challenge-174/laurent-rosenfeld/awk/ch-1.awk new file mode 100644 index 0000000000..1b1cc37279 --- /dev/null +++ b/challenge-174/laurent-rosenfeld/awk/ch-1.awk @@ -0,0 +1,23 @@ +function is_disarium(num) { + n = num + sum = 0 + len = length(n) + while (n > 0) { + sum += (n % 10) ^ len + n = int(n/10) + len-- + } + return (sum == num) +} + +BEGIN { + count = 0 + i = 0 + while (count < 19) { + if (is_disarium(i)) { + printf("%d\n", i) + count++ + } + i++ + } +} diff --git a/challenge-174/laurent-rosenfeld/bc/ch-1.bc b/challenge-174/laurent-rosenfeld/bc/ch-1.bc new file mode 100644 index 0000000000..0b51683e3b --- /dev/null +++ b/challenge-174/laurent-rosenfeld/bc/ch-1.bc @@ -0,0 +1,22 @@ +define is_disarium (num) { + n = num + sum = 0 + len = length(n) + while (n > 0) { + sum += (n % 10) ^ len + n = n/10 + len -= 1 + } + return (sum == num) +} + +count = 0 +i = 0 +while (count < 19) { + if (is_disarium(i)) { + print i, "\n" + count += 1 + } + i += 1 +} +quit diff --git a/challenge-174/laurent-rosenfeld/blog.txt b/challenge-174/laurent-rosenfeld/blog.txt new file mode 100644 index 0000000000..b625ad10ec --- /dev/null +++ b/challenge-174/laurent-rosenfeld/blog.txt @@ -0,0 +1 @@ +http://blogs.perl.org/users/laurent_r/2022/07/perl-weekly-challenge-174-disarium-numbers-and-permutation-rankings.html diff --git a/challenge-174/laurent-rosenfeld/c/ch-1.c b/challenge-174/laurent-rosenfeld/c/ch-1.c new file mode 100644 index 0000000000..813b22c6f9 --- /dev/null +++ b/challenge-174/laurent-rosenfeld/c/ch-1.c @@ -0,0 +1,36 @@ +#include <stdio.h> +#include <stdlib.h> +#include <math.h> + +int power (int base, int exponent) { + int result = 1; + for (int i = 1; i <= exponent; i++) { + result *= base; + } + return result; +} + +int is_disarium (int num) { + int n = num; + int sum = 0; + int len = n <= 9 ? 1 : floor(log10(n)) + 1; + while (n > 0) { + sum += power(n % 10, len); + n /= 10; + len--; + } + + return num == sum; +} + +int main() { + int count = 0; + int i = 0; + while (count < 19) { + if (is_disarium(i)) { + printf("%d\n", i); + count++; + } + i++; + } +} diff --git a/challenge-174/laurent-rosenfeld/julia/ch-1.jl b/challenge-174/laurent-rosenfeld/julia/ch-1.jl new file mode 100644 index 0000000000..a7a1c3110c --- /dev/null +++ b/challenge-174/laurent-rosenfeld/julia/ch-1.jl @@ -0,0 +1,14 @@ +function is_disarium(n) + s = sum(i ^ p for (p, i) in enumerate(reverse(digits(n)))) + return s == n +end + +count = 0 +i = 0 +while count < 19 + if is_disarium(i) + println(i) + global count += 1 + end + global i += 1 +end diff --git a/challenge-174/laurent-rosenfeld/perl/ch-1.pl b/challenge-174/laurent-rosenfeld/perl/ch-1.pl new file mode 100644 index 0000000000..8c2c0ce4eb --- /dev/null +++ b/challenge-174/laurent-rosenfeld/perl/ch-1.pl @@ -0,0 +1,18 @@ +use strict; +use warnings; +use feature "say"; + +sub is_disarium { + my $num = shift; + my @digits = split '', $num; + my $i = 1; + my $sum = 0; + $sum += $_ for map { $_ ** $i++ } @digits; + return $num == $sum; +} +my $i = 0; +my $count = 0; +while ($count < 19) { + say $i and $count++ if is_disarium $i; + $i++; +} diff --git a/challenge-174/laurent-rosenfeld/python/ch-1.py b/challenge-174/laurent-rosenfeld/python/ch-1.py new file mode 100644 index 0000000000..476c6831e6 --- /dev/null +++ b/challenge-174/laurent-rosenfeld/python/ch-1.py @@ -0,0 +1,17 @@ +def is_disarium(num): + n = num + size = len(str(n)) + sum = 0 + while n > 0: + sum += (n % 10) ** size + n //= 10 + size -= 1 + return sum == num + +i = 0 +count = 0 +while count < 19: + if is_disarium(i): + print(i) + count += 1 + i += 1 diff --git a/challenge-174/laurent-rosenfeld/raku/ch-1.raku b/challenge-174/laurent-rosenfeld/raku/ch-1.raku new file mode 100644 index 0000000000..171bebd568 --- /dev/null +++ b/challenge-174/laurent-rosenfeld/raku/ch-1.raku @@ -0,0 +1,12 @@ +sub is-disarium($num) { + my @digits = $num.comb; + my $sum = [+] map { $^b ** ($^a + 1) }, @digits.kv; + return $num == $sum; +} +my $count = 0; +my $i = 0; +while $count < 19 { + ++$count and say $i if is-disarium($i); + $i++; + # say "i: $i"; +} |
