@luncheon/fibonacci-code
v1.1.0
Published
A Fibonacci coding implementation.
Readme
@luncheon/fibonacci-code
A Fibonacci coding implementation.
import assert from "node:assert/strict";
import { encodeFibonacci, decodeFibonacci } from "@luncheon/fibonacci-code";
assert.deepEqual(encodeFibonacci(1), [1, 1]);
assert.deepEqual(encodeFibonacci(2), [0, 1, 1]);
assert.deepEqual(encodeFibonacci(3), [0, 0, 1, 1]);
assert.deepEqual(encodeFibonacci(4), [1, 0, 1, 1]);
assert.deepEqual(encodeFibonacci(5), [0, 0, 0, 1, 1]);
assert.deepEqual(encodeFibonacci(6), [1, 0, 0, 1, 1]);
assert.deepEqual(encodeFibonacci(7), [0, 1, 0, 1, 1]);
assert.deepEqual(encodeFibonacci(8), [0, 0, 0, 0, 1, 1]);
for (let n = 1; n < 1_000_000; n++) {
assert.equal(decodeFibonacci(encodeFibonacci(n)), n);
}CLI
$ npx @luncheon/fibonacci-code 3 10-20 0x80
3 0011
10 010011
11 001011
12 101011
13 0000011
14 1000011
15 0100011
16 0010011
17 1010011
18 0001011
19 1001011
20 0101011
128 00010001011Reference
License
See also
- @luncheon/golomb-code: A Golomb coding implementation.
- @luncheon/exponential-golomb-code: An exponential-Golomb coding implementation.
- @luncheon/varint: A
BigInt-native varint codec supporting arbitrary chunk sizes and zigzag encoding.
