18 characters of English..
"Fibonacci Sequence"
ok, I fail. :)
13 chars of Golfscript:
2,~{..p@+.}do
Update to explain the operation of the script:
2,
makes an array of [0 1]
~
puts that array on the stackdo
, we start the stack off with 0 1
(1 at top of stack)The do
loop:
.
duplicates the top item of the stack; here, we do this twice (leaving us with 0 1 1 1
on initial run)p
prints the topmost value (leaving us with 0 1 1
)@
rotates the top 3 items in the stack, so that the third-topmost is at the top (1 1 0
)+
adds the top 2 items in the stack (leaving 1 1
).
duplicates the top value, so that the do
loop can check its truthiness (to determine whether to continue)Tracing this mentally a couple of loops will be enough to tell you that this does the required addition to generate the Fibonacci sequence values.
Since GolfScript has bignums, there will never be an integer overflow, and so the top-of-stack value at the end of the do
loop will never be 0. Thus, the script will run forever.
1↓[2?+1]
Or 10 chars with printing:
1↓[2?+↓£1]
Run using:
RePeNt "1↓[2?+1]"
RePeNt is a stack based toy language I wrote (and am still improving) in which all operators/functions/blocks/loops use Reverse Polish Notation (RPN).
Command Explanation Stack
------- ----------- -----
1 Push a 1 onto the stack 1
↓ Push last stack value 1 1
[ Start a do-while loop 1 1
2? Push a two, then pop the 2 and copy the last 2 stack 1 1 1 1
items onto the stack
+ Add on the stack 1 1 2
↓£ Push last stack value then print it 1 1 2
1 Push a 1 onto the stack 1 1 2 1
] Pop value (1 in this case), if it is a 0 exit the loop 1 1 2
otherwise go back to the loop start.
The answer is on the stack which builds itself up like:
1 1
1 1 2
1 1 2 3
1 1 2 3 5
It never terminates (it has the eqivilent of a C#/JAVA do { } while(true)
loop) because the sequence will never terminate, but a terminating solution can be written thus:
N_1↓nI{2?+}
which is 12 chars.
I wonder if anyone will ever read this :(
Language: C++ Compiler Errors
Characters: 205
#define t template <int n> struct
#define u template <> struct f
t g { int v[0]; };
t f { enum { v = f<n-1>::v + f<n-2>::v }; g<v> x;};
u<1> { enum { v = 1 }; };
u<0> { enum { v = 0 }; };
int main() { f<10> x; }
Perl 6 - 22 characters:
sub f{1,1...{$^a+$^b}}
x86 (C-callable) realmode, 14 bytes.
Input is n on stack, returns Fn in AX.
59 31 C0 E3 08 89 C3 40 93 01 D8 E2 FB C3
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With