diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-04-12 01:52:12 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-12 01:52:12 +0100 |
| commit | ee3b89e38878a17ff678323b3bcd4036dcfdf346 (patch) | |
| tree | 071d2c0cd1d5ae98a21d8aba346fffebf4105972 /challenge-107 | |
| parent | fad6fd8049bbaa0b2c36e4eabffe069441891b5b (diff) | |
| parent | afac06bf3918be02ba7a6c1410464177deee4f0a (diff) | |
| download | perlweeklychallenge-club-ee3b89e38878a17ff678323b3bcd4036dcfdf346.tar.gz perlweeklychallenge-club-ee3b89e38878a17ff678323b3bcd4036dcfdf346.tar.bz2 perlweeklychallenge-club-ee3b89e38878a17ff678323b3bcd4036dcfdf346.zip | |
Merge pull request #3872 from jaldhar/challenge-107
Challenge 107 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-107')
| -rw-r--r-- | challenge-107/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-107/jaldhar-h-vyas/perl/ch-1.pl | 70 | ||||
| -rwxr-xr-x | challenge-107/jaldhar-h-vyas/perl/ch-2.pl | 20 | ||||
| -rwxr-xr-x | challenge-107/jaldhar-h-vyas/raku/ch-1.raku | 47 | ||||
| -rwxr-xr-x | challenge-107/jaldhar-h-vyas/raku/ch-2.raku | 16 |
5 files changed, 154 insertions, 0 deletions
diff --git a/challenge-107/jaldhar-h-vyas/blog.txt b/challenge-107/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..c55ca55aff --- /dev/null +++ b/challenge-107/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2021/04/perl_weekly_challenge_week_107.html diff --git a/challenge-107/jaldhar-h-vyas/perl/ch-1.pl b/challenge-107/jaldhar-h-vyas/perl/ch-1.pl new file mode 100755 index 0000000000..fa6b833238 --- /dev/null +++ b/challenge-107/jaldhar-h-vyas/perl/ch-1.pl @@ -0,0 +1,70 @@ +#!/usr/bin/perl +use 5.020; +use warnings; + +sub base { + my ($number, $base) = @_; + my @digits = (0 .. 9, 'A' .. 'Z'); + my @result; + while ($number > ($base - 1)) { + my $digit = $number % $base; + push @result, $digits[$digit]; + $number /= $base; + } + push @result, $digits[$number]; + + return join '', reverse @result; +} + +sub is_harshad { + my ($n) = @_; + my $total = 0; + my @digits = split //, $n; + for my $digit (@digits) { + $total += $digit; + } + + return @digits == $total; +} + +sub is_sdn { + my ($n) = @_; + + if (!is_harshad($n)) { + return undef; + } + + my @digits = split //, $n; + + my %count; + for my $i (0 .. scalar @digits - 1) { + $count{ $digits[$i] }++; + } + + for my $i (0 .. scalar @digits - 1) { + if (!exists $count{$i}) { + next; + } + if ($count{$i} != $digits[$i]) { + return undef; + } + } + + return 1; +} + +my @sdns; + +for my $base (4 .. 5) { + for my $i (10 ** ($base - 2) .. 10 ** ($base - 1) - 1) { + my $n = base($i, $base); + if (is_sdn($n)) { + push @sdns, $n; + } + if (scalar @sdns == 3) { + last; + } + } +} + +say join q{, }, @sdns;
\ No newline at end of file diff --git a/challenge-107/jaldhar-h-vyas/perl/ch-2.pl b/challenge-107/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..dfc410e6fb --- /dev/null +++ b/challenge-107/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,20 @@ +#!/usr/bin/perl + +package Calc +{ + use strict; + use warnings; + + sub new { bless {}, shift; } + sub add { } + sub mul { } + sub div { } + 1; +} +package main; +use 5.020; +use warnings; + +for my $key (sort keys %Calc::) { + say $key; +}
\ No newline at end of file diff --git a/challenge-107/jaldhar-h-vyas/raku/ch-1.raku b/challenge-107/jaldhar-h-vyas/raku/ch-1.raku new file mode 100755 index 0000000000..5c001f5ddc --- /dev/null +++ b/challenge-107/jaldhar-h-vyas/raku/ch-1.raku @@ -0,0 +1,47 @@ +#!/usr/bin/raku + +sub is_harshad(Str $n) { + return $n % $n.comb.sum == 0; +} + +sub is_sdn(Str $n) { + if !is_harshad($n) { + return False; + } + + my @digits = $n.comb; + + my %count; + for 0 ..^ @digits.elems -> $i { + %count{ @digits[$i] }++; + } + + for 0 ..^ @digits.elems -> $i { + if %count{$i}:!exists { + next; + } + if %count{$i} != @digits[$i] { + return False; + } + } + + return True; +} + +sub MAIN() { + my @sdns; + + for 4 .. 5 -> $base { + for 10 ** ($base - 2) ..^ 10 ** ($base - 1) -> $i { + my $n = $i.base($base); + if is_sdn($n) { + @sdns.push($n); + } + if (@sdns.elems == 3) { + last; + } + } + } + + @sdns.join(q{, }).say; +}
\ No newline at end of file diff --git a/challenge-107/jaldhar-h-vyas/raku/ch-2.raku b/challenge-107/jaldhar-h-vyas/raku/ch-2.raku new file mode 100755 index 0000000000..7ae9ee4dd8 --- /dev/null +++ b/challenge-107/jaldhar-h-vyas/raku/ch-2.raku @@ -0,0 +1,16 @@ +#!/usr/bin/raku + +class Calc +{ + method new { } + method add { } + method mul { } + method div { } +} + +sub MAIN( +) { + for Calc.^methods -> $method { + say $method; + } +}
\ No newline at end of file |
