aboutsummaryrefslogtreecommitdiff
path: root/challenge-041/noud
diff options
context:
space:
mode:
authorNoud Aldenhoven <noud.aldenhoven@gmail.com>2020-01-04 11:03:01 +0100
committerNoud Aldenhoven <noud.aldenhoven@gmail.com>2020-01-04 11:03:01 +0100
commit3469b83f7fa98f887c79973e498d3138da73e11e (patch)
treed9cbaf7e6f4a0dc9f4ef16c25a72efad4402b977 /challenge-041/noud
parent7fd8514508842aecb0e6b11dfb12792d9824b420 (diff)
downloadperlweeklychallenge-club-3469b83f7fa98f887c79973e498d3138da73e11e.tar.gz
perlweeklychallenge-club-3469b83f7fa98f887c79973e498d3138da73e11e.tar.bz2
perlweeklychallenge-club-3469b83f7fa98f887c79973e498d3138da73e11e.zip
Solutions to challenge 041 task 1 and 2 in Raku by Noud
Diffstat (limited to 'challenge-041/noud')
-rw-r--r--challenge-041/noud/perl6/ch-1.p627
-rw-r--r--challenge-041/noud/perl6/ch-2.p624
2 files changed, 51 insertions, 0 deletions
diff --git a/challenge-041/noud/perl6/ch-1.p6 b/challenge-041/noud/perl6/ch-1.p6
new file mode 100644
index 0000000000..e5bdb8c5df
--- /dev/null
+++ b/challenge-041/noud/perl6/ch-1.p6
@@ -0,0 +1,27 @@
+# Write a script to display attractive number between 1 and 50.
+#
+# A number is an attractive number if the number of its prime factors is
+# also prime number.
+#
+# The number 20 is an attractive number, whose prime factors are 2, 2 and 5.
+# The total prime factors is 3 which is also a prime number.
+
+
+# From Challenge 023.#2
+sub decomp(Int $n) {
+ if ($n > 1) {
+ my $prime = (2..Inf).grep({ $n %% $_ })[0];
+ ($prime, |(decomp(($n / $prime).Int)));
+ }
+}
+
+sub attractive-number(Int $n) {
+ is-prime(decomp($n).elems);
+}
+
+say "All attractive numbers between 1 and 50:";
+for 1..50 -> $n {
+ if (attractive-number($n)) {
+ say $n;
+ }
+}
diff --git a/challenge-041/noud/perl6/ch-2.p6 b/challenge-041/noud/perl6/ch-2.p6
new file mode 100644
index 0000000000..acbd775229
--- /dev/null
+++ b/challenge-041/noud/perl6/ch-2.p6
@@ -0,0 +1,24 @@
+# Write a script to display first 20 Leonardo Numbers. Please checkout wiki
+# page for more information.
+#
+# For example:
+# L(0) = 1
+# L(1) = 1
+# L(2) = L(0) + L(1) + 1 = 3
+# L(3) = L(1) + L(2) + 1 = 5
+#
+# and so on.
+
+# Define a lazy fibonacci sequence.
+constant @fib = 0, 1, * + * ... *;
+
+# Leonard numbers are related to Fibonacci numbers as
+# leonard(n) = 2 * fib(n) + 1
+sub leonard(Int $n) {
+ 2 * @fib[$n] + 1;
+}
+
+say "Leonard numbers 0 to 20:";
+for 0..20 -> $n {
+ leonard($n).say;
+}