diff options
| author | Ben Davies <kaiepi@outlook.com> | 2021-10-05 17:41:43 -0300 |
|---|---|---|
| committer | Ben Davies <kaiepi@outlook.com> | 2021-10-05 17:42:16 -0300 |
| commit | 3183f0b695018c7450e8c442b2404595c895efb1 (patch) | |
| tree | a29d145f304ec21a53b4e2fd83df0a9a24505234 | |
| parent | 9d2de008f04860056bb23509a008880f80a031c3 (diff) | |
| download | perlweeklychallenge-club-3183f0b695018c7450e8c442b2404595c895efb1.tar.gz perlweeklychallenge-club-3183f0b695018c7450e8c442b2404595c895efb1.tar.bz2 perlweeklychallenge-club-3183f0b695018c7450e8c442b2404595c895efb1.zip | |
Revise Ben Davies' challenge 133 task 1 solution
Actually use one of the square root algorithms suggested.
| -rw-r--r-- | challenge-133/ben-davies/raku/ch-1.raku | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/challenge-133/ben-davies/raku/ch-1.raku b/challenge-133/ben-davies/raku/ch-1.raku index 98fd70d0ee..44ce0d2ba2 100644 --- a/challenge-133/ben-davies/raku/ch-1.raku +++ b/challenge-133/ben-davies/raku/ch-1.raku @@ -1,4 +1,12 @@ use v6; unit sub MAIN(Int:D $n where * > 0) { - say (1..$n).first({ $^x == $n div $^x }); + # Newton's method. Adapted from Algorithm 1.13 of: + # https://maths-people.anu.edu.au/~brent/pd/mca-cup-0.5.9.pdf + my $x; + my $L = $n; + repeat { + $x = $L; + $L = ($x + $n div $x) div 2; + } until $L >= $x; + say $x; } |
