1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #!perl -T
- use utf8;
- use 5.006;
- use strict;
- use warnings;
- use Test::More;
- plan tests => 4;
- use Sidef;
- my @codes = (<<'EOT1', <<'EOT2', <<'EOT3', <<'EOT4');
- func fib((0)) { 0 }
- func fib((1)) { 1 }
- func fib(n) is cached { fib(n-1) + fib(n-2) }
- fib(12)
- EOT1
- module Fibonacci {
- func nth(n) {
- n > 1 ? nth(n-2)+nth(n-1) : n
- }
- }
- Fibonacci::nth(12)
- EOT2
- func fib({.is_neg}) { NaN }
- func fib({.is_zero}) { 0 }
- func fib({.is_one}) { 1 }
- func fib(n) { fib(n-1) + fib(n-2) }
- fib(12)
- EOT3
- func fib (Number n { _ <= 1} = 0) {
- return n
- }
- func fib (Number n) is cached {
- fib(n-1) + fib(n-2)
- }
- fib(12)
- EOT4
- my $i = 0;
- foreach my $code (@codes) {
- ++$i;
- my $sidef = Sidef->new(name => "fibonacci-$i");
- my $result = $sidef->execute_code($code);
- is("$result", "144", "fib-$i");
- }
|