diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-05-15 11:31:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-15 11:31:05 +0100 |
| commit | 1de1a8d1d16162f6b7516dba40e6fbe7b51bd94a (patch) | |
| tree | 3d9bed30e1c1f3209205bb66378331d88b3e5287 /challenge-164 | |
| parent | 4a5f38a2d4cd826e084132cf3599d75396535b05 (diff) | |
| parent | d3fb38e7f3aeafd43e2321c0b0d58446deb10d93 (diff) | |
| download | perlweeklychallenge-club-1de1a8d1d16162f6b7516dba40e6fbe7b51bd94a.tar.gz perlweeklychallenge-club-1de1a8d1d16162f6b7516dba40e6fbe7b51bd94a.tar.bz2 perlweeklychallenge-club-1de1a8d1d16162f6b7516dba40e6fbe7b51bd94a.zip | |
Merge pull request #6105 from Hiranyaloka/ch-164
ch-164 Prime Palindrome and Happy Numbers
Diffstat (limited to 'challenge-164')
| -rwxr-xr-x | challenge-164/rick-bychowski/raku/ch-1.raku | 6 | ||||
| -rwxr-xr-x | challenge-164/rick-bychowski/raku/ch-2.raku | 48 |
2 files changed, 54 insertions, 0 deletions
diff --git a/challenge-164/rick-bychowski/raku/ch-1.raku b/challenge-164/rick-bychowski/raku/ch-1.raku new file mode 100755 index 0000000000..840e7b0985 --- /dev/null +++ b/challenge-164/rick-bychowski/raku/ch-1.raku @@ -0,0 +1,6 @@ +#!/usr/bin/env raku + +# Task 1: Prime Palindrome +# find all prime numbers less than 1000, which are also palindromes in base 10 +# +say (1 ... 999).grep( *.is-prime).grep({ $_ eq .flip}) diff --git a/challenge-164/rick-bychowski/raku/ch-2.raku b/challenge-164/rick-bychowski/raku/ch-2.raku new file mode 100755 index 0000000000..480eebb577 --- /dev/null +++ b/challenge-164/rick-bychowski/raku/ch-2.raku @@ -0,0 +1,48 @@ +#!/usr/bin/env raku +# Happy Numbers +# Find the first 8 Happy Numbers in base 10. +# https://en.wikipedia.org/wiki/Happy_number +# This script also outputs _all_ the Happy and Sad numbers found, +# not just the first n = 8. + +my %happy; +my %sad; + +sub MAIN( Int $n = 8 ){ + for (1 ... *) -> $i { + my @happy = %happy.keys.map({$_.Int}).sort; + my @sequential = @happy.grep( { $_ <= $i} ); + if @sequential.elems >= $n { + say "First $n Happy Numbers:"; + say @sequential; + last; + } + is-happy( $i ); + } + + say "All Happy Numbers Found:"; + say %happy.keys.map({$_.Int}).sort; + say "All Sad Numbers Found:"; + say %sad.keys.map({$_.Int}).sort; +} + +sub is-happy( $l, :%seen? ){ + my $sum = 0; + for ($l.Str.split('')) -> $m { + $sum += $m**2; + %seen{ $l } = 1; + } + if ( defined %happy{ $sum } or $sum == 1 ) + { + for keys %seen -> $k { %happy{ $k } = 1 }; + } + elsif ( defined %sad{ $sum } or defined %seen{ $sum } ) + { + for keys %seen -> $k { %sad{ $k } = 1 }; + } + else + { + %seen{ $sum } = 1; + is-happy( $sum, seen => %seen ); + } +} |
