From 0fd8715cbcb88e3d3100b72cb1f2ce8ecce9446c Mon Sep 17 00:00:00 2001 From: Adam Russell Date: Sun, 10 Oct 2021 17:58:40 -0400 Subject: challenge 133 --- challenge-133/adam-russell/nuweb/ch-1.w | 63 +++++++++++++++++++++++++++++++++ challenge-133/adam-russell/perl/ch-1.pl | 32 +++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 challenge-133/adam-russell/nuweb/ch-1.w create mode 100644 challenge-133/adam-russell/perl/ch-1.pl diff --git a/challenge-133/adam-russell/nuweb/ch-1.w b/challenge-133/adam-russell/nuweb/ch-1.w new file mode 100644 index 0000000000..116ba25bd7 --- /dev/null +++ b/challenge-133/adam-russell/nuweb/ch-1.w @@ -0,0 +1,63 @@ +\documentclass{article} + +\usepackage{listings} +\lstset{extendedchars=true , keepspaces=true , language=perl} + +\begin{document} + +Challenge 133 + +\section{Integer Square Root} + +You are given a positive integer \$N. +Write a script to calculate the integer square root of the given number. +Please avoid using built-in function. + +@o perl/ch-1.pl +@{ + @ + @ + @ + @ +@} + +@d preamble: use statements, introductory comments, etc. +@{ + use strict; + use warnings; +@} + +@d nth root +@{ + sub nth_root{ + my($n, $k) = @@_; + my $x_i = int(rand(10) + 1); + my $r; + for my $i (0 .. 100){ + $x_i = (1 / $n) * (($n - 1) * $x_i + ($k / $x_i ** ($n - 1))); + } + return $x_i; + } +@} + +@d square root +@{ + sub integer_square_root{ + my($k) = @@_; + my $x = int(nth_root(2, $k)); + return $x; + } +@} + +@d main +@{ + MAIN:{ + print integer_square_root(10) . "\n"; + print integer_square_root(27) . "\n"; + print integer_square_root(85) . "\n"; + print integer_square_root(101) . "\n"; + } + +@} + +\end{document} diff --git a/challenge-133/adam-russell/perl/ch-1.pl b/challenge-133/adam-russell/perl/ch-1.pl new file mode 100644 index 0000000000..22d99b6820 --- /dev/null +++ b/challenge-133/adam-russell/perl/ch-1.pl @@ -0,0 +1,32 @@ + + + use strict; + use warnings; + + + sub nth_root{ + my($n, $k) = @_; + my $x_i = int(rand(10) + 1); + my $r; + for my $i (0 .. 100){ + $x_i = (1 / $n) * (($n - 1) * $x_i + ($k / $x_i ** ($n - 1))); + } + return $x_i; + } + + + sub integer_square_root{ + my($k) = @_; + my $x = int(nth_root(2, $k)); + return $x; + } + + + MAIN:{ + print integer_square_root(10) . "\n"; + print integer_square_root(27) . "\n"; + print integer_square_root(85) . "\n"; + print integer_square_root(101) . "\n"; + } + + -- cgit