mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-10 16:54:23 +02:00
use scad
This commit is contained in:
17
src/util/_impl/_fibseq_impl.scad
Normal file
17
src/util/_impl/_fibseq_impl.scad
Normal 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
|
||||||
|
);
|
@@ -8,20 +8,6 @@
|
|||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
|
|
||||||
include <__comm__/__fast_fibonacci.scad>;
|
use <_impl/_fibseq_impl.scad>;
|
||||||
|
|
||||||
function _fibonacci_sequence(seq, n, i = 2) =
|
function fibseq(from, to) = _fibseq_impl(from, to);
|
||||||
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
|
|
||||||
);
|
|
10
test/util/test_fibseq.scad
Normal file
10
test/util/test_fibseq.scad
Normal 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();
|
Reference in New Issue
Block a user