1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-04-14 03:01:58 +02:00
This commit is contained in:
Justin Lin 2020-01-26 17:19:50 +08:00
parent 67a5465e09
commit 60d9cba21a
3 changed files with 29 additions and 16 deletions

View File

@ -0,0 +1,17 @@
use <__comm__/__fast_fibonacci.scad>;
function _fibonacci_sequence(seq, n, i = 2) =
i > n ? seq :
_fibonacci_sequence(
concat(seq, [seq[i - 1] + seq[i - 2]]),
n,
i + 1
);
function _fibseq_impl(from, to) =
let(f = __fast_fibonacci(from))
from == to ? [f] :
_fibonacci_sequence(
[f, __fast_fibonacci(from - 1) + f],
to - from
);

View File

@ -8,20 +8,6 @@
*
**/
include <__comm__/__fast_fibonacci.scad>;
use <_impl/_fibseq_impl.scad>;
function _fibonacci_sequence(seq, n, i = 2) =
i > n ? seq :
_fibonacci_sequence(
concat(seq, [seq[i - 1] + seq[i - 2]]),
n,
i + 1
);
function fibseq(from, to) =
let(f = __fast_fibonacci(from))
from == to ? [f] :
_fibonacci_sequence(
[f, __fast_fibonacci(from - 1) + f],
to - from
);
function fibseq(from, to) = _fibseq_impl(from, to);

View File

@ -0,0 +1,10 @@
use <unittest.scad>;
use <util/fibseq.scad>;
module test_fibseq() {
echo("==== test fibseq ====");
assert([1, 1, 2, 3, 5, 8, 13, 21, 34, 55] == fibseq(1, 10));
}
test_fibseq();