aboutsummaryrefslogtreecommitdiff
path: root/challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm6
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-01-14 17:03:31 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-01-14 17:03:31 +0000
commitb38db58f0c4edc7ac9407f5bc03402dbdb2e530e (patch)
treee92b07cb066fa48e63d2a399707ff77f1ea101cc /challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm6
parent53bacd059cb8446ddc447d9d1172468b3fa50f68 (diff)
parent921eb4d2a09b0a9837cb53c209fb3c17e961e10c (diff)
downloadperlweeklychallenge-club-b38db58f0c4edc7ac9407f5bc03402dbdb2e530e.tar.gz
perlweeklychallenge-club-b38db58f0c4edc7ac9407f5bc03402dbdb2e530e.tar.bz2
perlweeklychallenge-club-b38db58f0c4edc7ac9407f5bc03402dbdb2e530e.zip
Merge branch 'master' of git://github.com/holli-holzer/perlweeklychallenge-club into holli-holzer-043
Diffstat (limited to 'challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm6')
-rw-r--r--challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm633
1 files changed, 33 insertions, 0 deletions
diff --git a/challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm6 b/challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm6
new file mode 100644
index 0000000000..974f0c532a
--- /dev/null
+++ b/challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm6
@@ -0,0 +1,33 @@
+unit module Math::SelfDescriptiveNumbers;
+
+multi sub is-self-descriptive( Int $number, Int $base ) is export {
+ is-self-descriptive( :$number, :$base );
+}
+
+multi sub is-self-descriptive( Int :$number, Int :$base ) is export {
+ $number.base( $base ) ∈ self-descriptive-numbers-of( $base );
+}
+
+multi sub is-self-descriptive( Str $number, Int $base ) is export {
+ is-self-descriptive( :$number, :$base );
+}
+
+multi sub is-self-descriptive( Str :$number, Int :$base ) is export {
+ $number ∈ self-descriptive-numbers-of( $base );
+}
+
+sub self-descriptive-numbers is export {
+ ( 1 .. 36 ).map( -> $base { ( $base, self-descriptive-numbers-of( $base ) ) });
+}
+
+sub self-descriptive-numbers-dec is export {
+ ( 1 .. 36 ).map( -> $base { ( $base, self-descriptive-numbers-of( $base ).map({ parse-base($_, $base ) }) ) });
+}
+
+multi sub self-descriptive-numbers-of( Int $base where $_ ~~ 1|2|3|6 ) is export { () }
+multi sub self-descriptive-numbers-of( Int $base where $_ == 4 ) is export { ('1210', '2020') }
+multi sub self-descriptive-numbers-of( Int $base where $_ == 5 ) is export { ('21200') }
+multi sub self-descriptive-numbers-of( Int $base ) is export {
+ ( ($base - 4).base( $base ) ~ "21" ~ ( '0' x ($base - 7) ) ~ '1000' )
+}
+