aboutsummaryrefslogtreecommitdiff
path: root/challenge-133/adam-russell/nuweb/ch-1.w
blob: 116ba25bd70945d5dad5895d7db9fd4cee38729d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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 
@{
    @<preamble...@>
    @<nth root@>
    @<square root@>
    @<main@>
@}

@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}