
japhy
Enthusiast
Dec 15, 2000, 1:43 PM
Post #1 of 3
(47682 views)
|
Sure, we all know the fibonacci set (1, 1, 2, 3, 5, 8, 13, 21, ...), and we all know the general equations: F[1] = F[2] = 1, and F[n] = F[n-1] + F[n-2]. And we could probably generate these numbers easily in Perl:
{ my @fib = (1,1); # generate the Nth fibonacci number sub fibonacci { my $n = shift() - 1; unless ($fib[$n]) { my $m = $n; $m-- while not $fib[$m]; $fib[$m+1] = $fib[$m] + $fib[$m-1], $m++ while $m <= $n; } return $fib[$n]; } } There's your fibonacci code. So what is it this quiz is all about? I am here to tax your mathematical prowess. Notice that 1+1+2 is 4, which 5-1. Notice that 1+1+2+3 is 7, which is 8-1. And 1+1+2+3+5 is 12, which is 13-1. So what do 5, 8, and 13 have in common? They're also three numbers in the sequence. 1+1+2 is 5-1, and 5 is the 2nd number after 2. 1+1+2+3 is 8-1, and 8 is the 2nd number after 3. 1+1+2+3+5 is 13-1, and 13 is the 2nd number after 5. Do you see the pattern? So I'd like any able mathematicians out there to develop a proof, which states that F[1] + F[2] + ... + F[k] = F[k+2] - 1 for all k > 0. (So maybe this isn't a Perl quiz, but this problem is directly related to a specific anomoly in Huffman encoding, which is a simple means of compressing files. It turns out that Huffman coding is very inefficient for files whose character frequencies are the Fibonacci sequence.) (If that last paragraph made no sense, nevermind. Just try the proof. It's fun.) Jeff "japhy" Pinyan -- accomplished hacker, teacher, lecturer, and author
|