aboutsummaryrefslogtreecommitdiff
path: root/challenge-148
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-01-23 22:32:52 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-01-23 22:32:52 +0000
commit7b2a4c167050e35bc8b823008b854da55dc5c393 (patch)
treed37ca123c14445cf9727cbfb286eb4b8c85ae0e9 /challenge-148
parent605e1363299f7cb38b6c8a56b2ed1d9c9a15056f (diff)
downloadperlweeklychallenge-club-7b2a4c167050e35bc8b823008b854da55dc5c393.tar.gz
perlweeklychallenge-club-7b2a4c167050e35bc8b823008b854da55dc5c393.tar.bz2
perlweeklychallenge-club-7b2a4c167050e35bc8b823008b854da55dc5c393.zip
- Added solutions by Mark Senn.
Diffstat (limited to 'challenge-148')
-rw-r--r--challenge-148/mark-senn/blog.txt1
-rw-r--r--challenge-148/mark-senn/blog1.txt1
-rw-r--r--challenge-148/mark-senn/raku/ch-1.raku42
-rw-r--r--challenge-148/mark-senn/raku/ch-2.raku33
4 files changed, 77 insertions, 0 deletions
diff --git a/challenge-148/mark-senn/blog.txt b/challenge-148/mark-senn/blog.txt
new file mode 100644
index 0000000000..d386aead6c
--- /dev/null
+++ b/challenge-148/mark-senn/blog.txt
@@ -0,0 +1 @@
+https://engineering.purdue.edu/~mark/twc-148-1.pdf
diff --git a/challenge-148/mark-senn/blog1.txt b/challenge-148/mark-senn/blog1.txt
new file mode 100644
index 0000000000..f624dbc163
--- /dev/null
+++ b/challenge-148/mark-senn/blog1.txt
@@ -0,0 +1 @@
+https://engineering.purdue.edu/~mark/twc-148-2.pdf
diff --git a/challenge-148/mark-senn/raku/ch-1.raku b/challenge-148/mark-senn/raku/ch-1.raku
new file mode 100644
index 0000000000..6429cdce48
--- /dev/null
+++ b/challenge-148/mark-senn/raku/ch-1.raku
@@ -0,0 +1,42 @@
+$_ = q:to/END/;
+ unused
+ one two three four five
+ six seven eight nine ten
+ eleven twelve thirteen fourteen fifteen
+ sixteen seventeen eighteen nineteen twenty
+ ? ? ? ? ?
+ ? ? ? ? thirty
+ ? ? ? ? ?
+ ? ? ? ? forty
+ ? ? ? ? ?
+ ? ? ? ? fifty
+ ? ? ? ? ?
+ ? ? ? ? sixty
+ ? ? ? ? ?
+ ? ? ? ? seventy
+ ? ? ? ? ?
+ ? ? ? ? eighty
+ ? ? ? ? ?
+ ? ? ? ? ninety
+ ? ? ? ? ?
+ ? ? ? ? one hundred
+ END
+
+# Change all newlines to two spaces.
+s:g/\n/ /;
+
+# Delete spaces at the end of line.
+s/\s*$$//;
+
+# Split on two or more spaces.
+my @spelled = .split(/\s\s+/);
+
+# Fill in 21...29, 31...39, 41...49, ..., 91...99.
+for (20, 30, 40 ... 90) -> $i {
+ for (1 .. 9) -> $j {
+ @spelled[$i+$j] = @spelled[$i] ~ '-' ~ @spelled[$j];
+ }
+}
+
+# Print out numbers with no 'e' in the numbers' names.
+(1..100).map({@spelled[$_].contains('e') or .say});2
diff --git a/challenge-148/mark-senn/raku/ch-2.raku b/challenge-148/mark-senn/raku/ch-2.raku
new file mode 100644
index 0000000000..6877562c67
--- /dev/null
+++ b/challenge-148/mark-senn/raku/ch-2.raku
@@ -0,0 +1,33 @@
+# Print first $n Candano triplets.
+my $n = 5;
+
+# From https://engineering.purdue.edu/~mark/twc-148-2.pdf:
+# From between equations (15) and (16):
+# a = 2 + 3k
+# From equation (19):
+# b^2 c = (k+1)^2 (8k+5)
+
+# The first element is not used.
+my $square := 0, 1**2, 2**2, 3**3 .. Inf;
+
+for (0 .. Inf) -> $k {
+
+ # "rhs" is short for "right hand side".
+ my $rhs = ($k+1)**2 * (8*$k+5);
+
+ for (1 .. Inf) -> $b {
+
+ # If b^2 > $rhs we've gone too far.
+ ($square[$b] > $rhs) and last;
+
+ # If $rhs is not evenly divisible by b^2 then c will not be an integer.
+ ($rhs %% $square[$b]) or next;
+
+ # Found one.
+ my $a = 2 + 3*$k;
+ my $c = $rhs / $square[$b];
+ say "($a,$b,$c)";
+
+ (--$n) or exit 0;
+ }
+}