diff options
| author | dmaestro <dmaestro@cpan.org> | 2019-04-18 07:56:19 -0500 |
|---|---|---|
| committer | dmaestro <dmaestro@cpan.org> | 2019-04-18 07:57:57 -0500 |
| commit | c6f7abe46de7a71de82890b455e6ce06c91170dc (patch) | |
| tree | 20ad3426316f4616556ba8bf717f76fa71c4cd7a /challenge-004 | |
| parent | 4a48560dc096968a5dec73a357bc614505ca81e2 (diff) | |
| download | perlweeklychallenge-club-c6f7abe46de7a71de82890b455e6ce06c91170dc.tar.gz perlweeklychallenge-club-c6f7abe46de7a71de82890b455e6ce06c91170dc.tar.bz2 perlweeklychallenge-club-c6f7abe46de7a71de82890b455e6ce06c91170dc.zip | |
Solutions to Challenge 4 for Doug Schrag
Diffstat (limited to 'challenge-004')
| -rw-r--r-- | challenge-004/doug-schrag/perl6/ch-1.p6 | 27 | ||||
| -rw-r--r-- | challenge-004/doug-schrag/perl6/ch-2.p6 | 13 |
2 files changed, 40 insertions, 0 deletions
diff --git a/challenge-004/doug-schrag/perl6/ch-1.p6 b/challenge-004/doug-schrag/perl6/ch-1.p6 new file mode 100644 index 0000000000..dc93ecece7 --- /dev/null +++ b/challenge-004/doug-schrag/perl6/ch-1.p6 @@ -0,0 +1,27 @@ +use v6; + +my $chars = $*PROGRAM.slurp.chars; +say pi-rat.Str.substr(0,$chars); +say "$chars digits!"; + +sub postfix:<!> ($n) { [*] 1..$n } +sub f($k) { + FatRat.new: (4*$k)! * (1103 + 26390 * $k), ($k!)**4 * 396**(4*$k) +} +sub pi-rat () { + 9801 * sqrt-rat(2, 1e-500) / 4 + / [+] (^80).map: *.&f +} + +multi sub sqrt-rat ($n where * > 0, $eps) { + my $base = $n.FatRat($eps); + my $r = sqrt($base).FatRat($eps); + my $est; + repeat { + $est = $r; + $r = ($base / $est + $est) / 2; + } while abs($r - $est) > $eps; + + return $r; +} +multi sub sqrt-rat (0) { 0 } diff --git a/challenge-004/doug-schrag/perl6/ch-2.p6 b/challenge-004/doug-schrag/perl6/ch-2.p6 new file mode 100644 index 0000000000..754f7849f6 --- /dev/null +++ b/challenge-004/doug-schrag/perl6/ch-2.p6 @@ -0,0 +1,13 @@ +use v6; + +sub MAIN(:$file?, *@letters where *.all.chars == 1) { + say @letters; + my $file-handle = .IO with $file; + $file-handle ||= $*IN; + my $tiles = Bag.new(@letters>>.fc); + for $file-handle.lines>>.fc -> $word { + $word.comb.Bag (<=) $tiles + and say $word; + } + +} |
