My worst mathematical program in perl

I have a Mathe-crap-matical friend. Who keeps digging into graves of dead formulas and equations and all possible Math related stuffs.
Since I started understanding Mathematics (that it’s not my cup of tea), I tried to stay away from it.

Now, that enthu creature mailed me his requirement. He says he “eat mathematics”, I prefer to stay away from such guys. But as a good friend I read his mails.

His requirement was to create a program. His requirements are:

N is a natural number falling in range [1 – 999999]
X is a number given by user with range [6000 – 20000]

You have to write a program such that you find a number N whose square root or cube root is such that the first digit of X comes in the Xth decimal place and second digit of X comes in the (X+1)th decimal place and so on…

e.g. user enters 12…
then the number N would be such that CubeRoot(N) or SqRoot(N) = dddd.ddddddddddd12

You may write program in any language.

Check screen shot to understand what it does [note the name]:

maths program

Alright, I understood the dooms day is closing in… Did you notice the decimal places correction he was asking? 6000!! Damn…

Any ways, I chose perl and accomplished the task. I’m not sure how and why he need this thing but still I hope it rested his soul. 🙂

This post is for people like me who have such math-e-manic friends.
You may download my script my_mathematics_pgm.pl.

print "Enter X:";
my $X = <STDIN>;
$X=trim($X);
my $N=1;
while ($N < 100) {
	$SQRT_VAL=$N**(1/2);
	$CUBERT_VAL=$N**(1/3);

	$PosAfterDesimal=index ($SQRT_VAL,'.');
	$PosOfXInSQRT =index ($SQRT_VAL, $X,$PosAfterDesimal);
	$PosOfXInSQRT = $PosOfXInSQRT -1;
	$PosAfterDesimal=index ($CUBERT_VAL,'.');
	$PosOfXInCUBERT =index ($CUBERT_VAL, $X, $PosAfterDesimal);
	$PosOfXInCUBERT= $PosOfXInCUBERT -1;

#	print $N . "->" . $SQRT_VAL . "->" . $X . "->> " .trim($PosOfXInSQRT). "\n";
	if (trim($PosOfXInSQRT) == $X) {
		print $X. " matched SQRT of " . $N . " at " . $X . "th Position \n" ;
		print "\t Where, N=" . $N . ", SQRT VAL=" . $SQRT_VAL . ", X=" . $X . "\n";
		exit;
	} elsif (trim($PosOfXInCUBERT) == $X) {
		print $X. " matched Cube Root of " . $N . " at " . $X . "th Position \n";
		print "\t Where, N=" . $N . ", CUBEROOT VAL=" . $CUBERT_VAL . ", X=" . $X . "\n";
		exit;
	}
	$N++;
}
sub trim($)
{
        my $string = shift;

        if ( $string eq undef || $string eq "" )
        {
                return "";
        }
        $string =~ s/^\s+//;
        $string =~ s/\s+$//;

        return $string;
}#trim Ends
Exit mobile version