aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchirvasitua <stuart-little@users.noreply.github.com>2021-03-01 07:33:14 -0500
committerchirvasitua <stuart-little@users.noreply.github.com>2021-03-01 07:33:14 -0500
commit393f862ab4d9c2da07f5d89b1ebb3d625f07ffa4 (patch)
tree9a0a30abbabefbb62638950b55b53e0b6e7029cf
parent2e7bba2423ac520245be83ea15504303968b466b (diff)
downloadperlweeklychallenge-club-393f862ab4d9c2da07f5d89b1ebb3d625f07ffa4.tar.gz
perlweeklychallenge-club-393f862ab4d9c2da07f5d89b1ebb3d625f07ffa4.tar.bz2
perlweeklychallenge-club-393f862ab4d9c2da07f5d89b1ebb3d625f07ffa4.zip
1st commit on 102_raku
-rwxr-xr-xchallenge-102/stuart-little/raku/ch-1.p6156
-rwxr-xr-xchallenge-102/stuart-little/raku/ch-2.p613
2 files changed, 169 insertions, 0 deletions
diff --git a/challenge-102/stuart-little/raku/ch-1.p6 b/challenge-102/stuart-little/raku/ch-1.p6
new file mode 100755
index 0000000000..4af2e9b74c
--- /dev/null
+++ b/challenge-102/stuart-little/raku/ch-1.p6
@@ -0,0 +1,156 @@
+#!/usr/bin/env perl6
+use v6;
+
+# run <script> <number>
+
+sub isSq($n) {
+ (my $m = $n.sqrt) == $m.Int
+}
+
+sub isRare($n) {
+ my $rev=$n.Str.flip.Int;
+ isSq($n+$rev) && ($n >= $rev) && isSq($n-$rev)
+}
+
+sub rarePals($d) {
+ my $halfDigs = ($d/2).ceiling;
+ my $rest = $d - $halfDigs;
+ return (10**($halfDigs-1)..^10**$halfDigs).map({ $_.Str ~ $_.Str.substr(0,$rest).flip }).grep({ isSq(2*($_.Int)) })
+}
+
+my $digs = @*ARGS[0].Int;
+
+($digs <= 22) && do {
+ my @basenrs=$=finish.lines;
+ my @all = (|(@basenrs.grep({ $_.chars == $digs })),|rarePals($digs)).sort;
+ for (@all) {.say};
+ exit;
+}
+
+for ((10**($digs-1)..^10**$digs).grep(*.&isRare)) {.say}
+
+=finish
+65
+621770
+281089082
+2022652202
+2042832002
+868591084757
+872546974178
+872568754178
+6979302951885
+20313693904202
+20313839704202
+20331657922202
+20331875722202
+20333875702202
+40313893704200
+40351893720200
+200142385731002
+204238494066002
+221462345754122
+244062891224042
+245518996076442
+248359494187442
+403058392434500
+441054594034340
+816984566129618
+2078311262161202
+2133786945766212
+2135568943984212
+2135764587964212
+2135786765764212
+4135786945764210
+6157577986646405
+6889765708183410
+8052956026592517
+8052956206592517
+8191154686620818
+8191156864620818
+8191376864400818
+8650327689541457
+8650349867341457
+22542040692914522
+67725910561765640
+86965750494756968
+225342456863243522
+225342458663243522
+225342478643243522
+284684666566486482
+284684868364486482
+297128548234950692
+297128722852950692
+297148324656930692
+297148546434930692
+497168548234910690
+619431353040136925
+619631153042134925
+631688638047992345
+633288858025996145
+633488632647994145
+653488856225994125
+811865096390477018
+865721270017296468
+871975098681469178
+898907259301737498
+2042401829204402402
+2060303819041450202
+2420424089100600242
+2551755006254571552
+2702373360882732072
+2825378427312735282
+6531727101458000045
+6988066446726832640
+8066308349502036608
+8197906905009010818
+8200756128308135597
+8320411466598809138
+22134434735752443122
+22134434753752443122
+22134436953532443122
+22136414517954423122
+22136414971554423122
+22136456771730423122
+61952807156239928885
+61999171315484316965
+65459144877856561700
+208393425242000083802
+219518549668074815912
+257661195832219326752
+286694688797362186682
+837982875780054779738
+2414924301133245383042
+2414924323311045383042
+2414946523311023183042
+2576494891793995836752
+2576494893971995836752
+2620937863931054483162
+2620937863931054483162
+2620955641393276283162
+2622935621573476481162
+2622935643751276481162
+2622937641933274481162
+2622955841933256281162
+2622957843751254281162
+2727651947516658327272
+2747736918335953517072
+2788047668617596408872
+2788047848617776408872
+2788047868437576408872
+2788047888617376408872
+2939501759705522349392
+2939503375709360349392
+2939503537707740349392
+2939521359525562149392
+2939521557527542149392
+2939523577527340149392
+2939523779525320149392
+2959503377707360349192
+6344828989519887483525
+8045841652464561594308
+8045841654642561594308
+8655059576513659814468
+8655059772157639814468
+8655079374155679614468
+8655079574515659614468
+8888070771864228883913
diff --git a/challenge-102/stuart-little/raku/ch-2.p6 b/challenge-102/stuart-little/raku/ch-2.p6
new file mode 100755
index 0000000000..0408b8ba47
--- /dev/null
+++ b/challenge-102/stuart-little/raku/ch-2.p6
@@ -0,0 +1,13 @@
+#!/usr/bin/env perl6
+use v6;
+
+# run <script> <number>
+
+sub hshCount($n) {
+ $n == 0 && return "";
+ $n == 1 && return "#";
+ my $stub = qq{$n} ~ "#";
+ return hshCount($n-$stub.chars) ~ $stub;
+}
+
+say hshCount(@*ARGS[0].Int)