Well done Graeme!
Posted below is what I used to generate the asnwer, I myself had
dificulty to get it. Let me know if you used another method.
The Source Code
==================================================
<?php
function f($c) {
$c++;
if ($c % 2) { return f($c); }
return $c++;
}
function g($n) {
for ($i=1;$i<10;$i++) {
$n = f($n*$i);
}
return ($n);
}
$x = 0.00;
while ($x < 10){
$x = round($x, 2) + 0.01;
$l = (g($x));
if ($l == 4277108){
echo("<font color='red'>:: x = $x : $l</font> <br/>");
}
//echo ("> $x : $l<br/>");
}
?>
=================================================
On 4/20/05, graeme <[EMAIL PROTECTED]> wrote:
> Yes it is an issue with floating point numbers since:
>
> 8.35 will give the answer but if you increment by .01 in a loop then you
> will not get the answer, when it is on 8.35. However, increment by 0.001
> then 8.35 will provide the correct answer. It's all to do with how in
> calculates 0.01 in binary, a rational fraction in binary.
>
> graeme.
>
> JC Botha wrote:
>
> >It is possible, and "10.642868165785" is incorrect. The question says
> >"$x is a number between 1 and 10 and has 2 decimal places."
> >
> >Try again, if more try then I will post the source code that generates
> >the asnwer?
> >
> >
> >
> >On 4/20/05, M. Sokolewicz <[EMAIL PROTECTED]> wrote:
> >
> >
> >>JC Botha wrote:
> >>
> >>
> >>>The following is a section of PHP code (see Apache.org and PHP.net).
> >>>
> >>> function f($c) {
> >>> $c++;
> >>> if ($c % 2) { return f($c); }
> >>> return $c++;
> >>> }
> >>>
> >>> function g($n) {
> >>> for ($i=1;$i<10;$i++) {
> >>> $n = f($n*$i);
> >>> }
> >>> return ($n);
> >>> }
> >>>
> >>> print(g($x));
> >>>
> >>>What is the smallest value that $x can have if 4277108 is outputted to
> >>>the screen after running this code?
> >>>$x is a number between 1 and 10 and has 2 decimal places.
> >>>
> >>>
> >>it's not a jawbreaker, it's impossible IMO.
> >>f() always returns the number if it's uneven, or if it's even, it
> >>returns (n+1). So, it always returns uneven. which means the result of
> >>g() can *never* be even.
> >>
> >>[[side note:
> >>unless "return $c++;" does first add 1 to it before returning, but I
> >>think it doesn't, since it's a postincrement operator.
> >>]]
> >>
> >>--
> >>PHP Windows Mailing List (http://www.php.net/)
> >>To unsubscribe, visit: http://www.php.net/unsub.php
> >>
> >>
> >>
> >>
> >
> >
> >
>
> --
> Experience is a good teacher, but she sends in terrific bills.
>
> Minna Antrim
>
>
--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php