aboutsummaryrefslogtreecommitdiff
path: root/challenge-164
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-05-15 11:31:05 +0100
committerGitHub <noreply@github.com>2022-05-15 11:31:05 +0100
commit1de1a8d1d16162f6b7516dba40e6fbe7b51bd94a (patch)
tree3d9bed30e1c1f3209205bb66378331d88b3e5287 /challenge-164
parent4a5f38a2d4cd826e084132cf3599d75396535b05 (diff)
parentd3fb38e7f3aeafd43e2321c0b0d58446deb10d93 (diff)
downloadperlweeklychallenge-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-xchallenge-164/rick-bychowski/raku/ch-1.raku6
-rwxr-xr-xchallenge-164/rick-bychowski/raku/ch-2.raku48
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 );
+ }
+}