aboutsummaryrefslogtreecommitdiff
path: root/challenge-043
diff options
context:
space:
mode:
authorholli-holzer <holli.holzer@gmail.com>2020-01-14 17:15:17 +0100
committerholli-holzer <holli.holzer@gmail.com>2020-01-14 17:15:17 +0100
commitd42bbd788c1b240cc5eccd183291b8eef9aec7e3 (patch)
treeb21bd16751b2d951ed7c56331ea66c65f30358e1 /challenge-043
parent79dddd500946c47f2dc942d9a9114516650fd28d (diff)
downloadperlweeklychallenge-club-d42bbd788c1b240cc5eccd183291b8eef9aec7e3.tar.gz
perlweeklychallenge-club-d42bbd788c1b240cc5eccd183291b8eef9aec7e3.tar.bz2
perlweeklychallenge-club-d42bbd788c1b240cc5eccd183291b8eef9aec7e3.zip
better ways than brute force
Diffstat (limited to 'challenge-043')
-rw-r--r--challenge-043/markus-holzer/perl6/ch-2.p69
-rw-r--r--challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm616
2 files changed, 17 insertions, 8 deletions
diff --git a/challenge-043/markus-holzer/perl6/ch-2.p6 b/challenge-043/markus-holzer/perl6/ch-2.p6
index f3123b70ce..141a4ccc61 100644
--- a/challenge-043/markus-holzer/perl6/ch-2.p6
+++ b/challenge-043/markus-holzer/perl6/ch-2.p6
@@ -7,6 +7,11 @@ multi sub MAIN()
{
say output( $base, $numbers );
}
+
+ for self-descriptive-numbers-dec() -> ($base, $numbers)
+ {
+ say $base, $numbers;
+ }
}
multi sub MAIN( Int $base where 1 < $base < 37 )
@@ -26,8 +31,8 @@ multi sub MAIN( "test" )
sub output( $base, $numbers )
{
- my $num-base = $numbers.map( *.base( $base ) ).join(',');
- my $num-dec = $numbers.join(',');
+ my $num-base = $numbers.join(',');
+ my $num-dec = $numbers.map({ parse-base( $_, $base ) }).join(',');
"Base $base, " ~ ( $numbers.elems ?? "$num-base; $num-dec (decimal)" !! '---' );
} \ No newline at end of file
diff --git a/challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm6 b/challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm6
index 8409826549..974f0c532a 100644
--- a/challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm6
+++ b/challenge-043/markus-holzer/perl6/lib/Math/SelfDescriptiveNumbers.pm6
@@ -5,7 +5,7 @@ multi sub is-self-descriptive( Int $number, Int $base ) is export {
}
multi sub is-self-descriptive( Int :$number, Int :$base ) is export {
- $number ∈ self-descriptive-numbers-of( $base );
+ $number.base( $base ) ∈ self-descriptive-numbers-of( $base );
}
multi sub is-self-descriptive( Str $number, Int $base ) is export {
@@ -13,17 +13,21 @@ multi sub is-self-descriptive( Str $number, Int $base ) is export {
}
multi sub is-self-descriptive( Str :$number, Int :$base ) is export {
- parse-base( $number, $base ) ∈ self-descriptive-numbers-of( $base );
+ $number ∈ self-descriptive-numbers-of( $base );
}
sub self-descriptive-numbers is export {
- ( 1 .. 36 ).map({ ( $_, self-descriptive-numbers-of( $_ ) ) });
+ ( 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 { (100, 136) }
-multi sub self-descriptive-numbers-of( Int $base where $_ == 5 ) is export { (1425) }
+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 {
- ( parse-base( ($base - 4).base( $base ) ~ "21" ~ ( '0' x ($base - 7) ) ~ '1000', $base ) )
+ ( ($base - 4).base( $base ) ~ "21" ~ ( '0' x ($base - 7) ) ~ '1000' )
}