3 ms·
> This program will vibrate with increase frequency using the Fibonacci numbers 2, 3, 5, 8, 13, 21, 34.. No it won't. The sequence it follows is 2, 1, 1, 1, ..
by tzs 1y ago
> This program will vibrate with increase frequency using the Fibonacci numbers 2, 3, 5, 8, 13, 21, 34..
No it won't. The sequence it follows is 2, 1, 1, 1, ...
After spotting that I was curious if LLMs would also spot it. I asked Perplexity this and gave it the code:
> This is Python code someone posted for a hypothetical vibrator. They said it will vibrate with increasing frequency following Fibonacci numbers: 2, 3, 5, 8, ...
> Does the frequency really increase following that sequence?
It correctly found the actual sequence, explained why the code fails, and offered a fix.
- kh_hk 1y agoWeird, after the fix vibrator sleeps the longer it is used. Also, at some point it burst into flames
- maxbond 1y ago> The sequence it follows is 2, 1, 1, 1, ... I just ran it, and as long as you start counting at 1, their code works fine, outputting `1, 1, 2, 3, 5, ...`. (Not sure why they say the Fibonacci sequence starts with 2, that's odd.)
- amluto 1y agoOne can reasonably debate where the Fibonacci sequence starts. Their fib implementation is unquestionably broken for negative inputs, but fortunately they don’t supply negative inputs. But try reading the code that calls fib. It’s so outrageously wrong that it’s fairly easy to read it and pretend they wrote something sensible. Never mind that there isn’t actually a straightforward single-line fix - next_fib would be an entirely different beast from fib. If they had started with frequency = 4, the real effect of the code would have been to send a couple pulses and then to spend very rapidly (worse than exponentially) increasing time and stack space trying to compute fib.
- maxbond 1y agoI had missed that, thanks. That is whack. (The input to fibonacci() is it's last output.)
- maxbond 1y agoThis doesn't really matter but it does occur to me that you can't really reasonably debate where the Fibonacci sequence starts, because if it started at 2, then 1 wouldn't be a Fibonacci number. But indeed, it's not only a Fibonacci number, but the only one to be in the sequence twice. (You can of course skip ahead if you have some need to do so.)
- numpad0 1y agothis doesn't need if statement but 3 variables: nm2 = 0; nm1 = 1; n; f_next(){n = nm1 + nm2; nm2 = nm1; nm1 = n;} Fibonacci sequence is defined as "F0 = 0, F1 = 1, Fn = F(n-1) + F(n-2)". The author implemented F1 as a special case but it doesn't need to be. That's the weird part.
- modderation 1y agoIt's even more fun when you extend it to negative integers, reals, and the complex plane! Matt Parker (Stand-up Maths) delves into this in a very approachable manner: https://www.youtube.com/watch?v=ghxQA3vvhsk https://www.youtube.com/watch?v=ghxQA3vvhsk
- Onavo 1y agoNow ask the the AI to write a formal verification program to prove it :)
- jackdoe 1y agoah, i fixed it, i wasn't actually thinking about the code when writing it, didnt even try it :facepalm: absolute brainfart haha I guess it makes the transparency point even stronger