Skip to content

Commit

Permalink
work on multidimensional support for array calc
Browse files Browse the repository at this point in the history
  • Loading branch information
tmhglnd committed Nov 13, 2021
1 parent 11daa22 commit 41d4446
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 16 deletions.
60 changes: 52 additions & 8 deletions src/utility.js
Original file line number Diff line number Diff line change
Expand Up @@ -147,14 +147,25 @@ function add(a, v=0){
let l1 = a.length, l2 = v.length, r = [];
let l = Math.max(l1, l2);
for (let i=0; i<l; i++){
r[i] = a[i % l1] + v[i % l2];
let a1 = a[i % l1];
let v1 = v[i % l2];
if (Array.isArray(a1) || Array.isArray(v1)){
r[i] = add(a1, v1);
} else {
r[i] = a1 + v1;
}
}
return r;
}
if (!Array.isArray(a)){
return a + v;
}
return a.map(x => x + v);
return a.map(x => {
if (Array.isArray(x)){
return add(x, v);
}
return x + v;
});
}
exports.add = add;

Expand All @@ -172,14 +183,25 @@ function subtract(a, v=0){
let l1 = a.length, l2 = v.length, r = [];
let l = Math.max(l1, l2);
for (let i=0; i<l; i++){
r[i] = a[i % l1] - v[i % l2];
let a1 = a[i % l1];
let v1 = v[i % l2];
if (Array.isArray(a1) || Array.isArray(v1)){
r[i] = subtract(a1, v1);
} else {
r[i] = a1 - v1;
}
}
return r;
}
if (!Array.isArray(a)){
return a - v;
}
return a.map(x => x - v);
return a.map(x => {
if (Array.isArray(x)){
return subtract(x, v);
}
return x - v;
});
}
exports.subtract = subtract;
exports.sub = subtract;
Expand All @@ -198,14 +220,25 @@ function multiply(a, v=1){
let l1 = a.length, l2 = v.length, r = [];
let l = Math.max(l1, l2);
for (let i=0; i<l; i++){
r[i] = a[i % l1] * v[i % l2];
let a1 = a[i % l1];
let v1 = v[i % l2];
if (Array.isArray(a1) || Array.isArray(v1)){
r[i] = multiply(a1, v1);
} else {
r[i] = a1 * v1;
}
}
return r;
}
if (!Array.isArray(a)){
return a * v;
}
return a.map(x => x * v);
return a.map(x => {
if (Array.isArray(x)){
return multiply(x, v);
}
return x * v;
});
}
exports.multiply = multiply;
exports.mul = multiply;
Expand All @@ -224,14 +257,25 @@ function divide(a, v=1){
let l1 = a.length, l2 = v.length, r = [];
let l = Math.max(l1, l2);
for (let i=0; i<l; i++){
r[i] = a[i % l1] / v[i % l2];
let a1 = a[i % l1];
let v1 = v[i % l2];
if (Array.isArray(a1) || Array.isArray(v1)){
r[i] = divide(a1, v1);
} else {
r[i] = a1 / v1;
}
}
return r;
}
if (!Array.isArray(a)){
return a / v;
}
return a.map(x => x / v);
return a.map(x => {
if (Array.isArray(x)){
return divide(x, v);
}
return x / v;
});
}
exports.divide = divide;
exports.div = divide;
Expand Down
22 changes: 14 additions & 8 deletions test/serialism.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,18 +59,23 @@ console.log();
// markov.clear();
// console.log(markov.table);

fullTest();
// fullTest();

console.log(Util.div([[1, 11, 111], 2, 3], [2, 10]));
console.log(Util.div([1, [2, [3, 5]], 4], [10, [20, 30]]))
console.log(Util.div([1, 2, [3, [4, 5]]], [10, [[20, 100], 30]]));
console.log(Util.div(10, [1, 2, 3, 4]));

function fullTest(){
console.time('Total Time');

testSerial();
testGen();
testAlgo();
testRand();
testMod();
testStat();
testTranslate();
// testSerial();
// testGen();
// testAlgo();
// testRand();
// testMod();
// testStat();
// testTranslate();
testUtil();

pagebreak("All Tests Passed");
Expand Down Expand Up @@ -346,6 +351,7 @@ function testMod(){
test("Mod.lookup([0, 1, 1, 2, 0, 2, 2, 1], ['c4', 'e4', 'f4', 'g4'])");
test("Mod.lookup([0, [1, 1, [2, 3 ], 0], 2], ['c4', 'e4', 'f4', 'g4'])");
test("Mod.lookup([-2, 5, 7, 12], ['c4', 'e4', 'f4', 'g4'])");
test("Mod.lookup(Gen.cosine(16, 5.32, 0, 12), [0, 0, 2, 3, 3, 5, 7, 7, 8, 8, 11, 11])");

// var merArr1 = [0, 3, 7];
// var merArr2 = [3, 12];
Expand Down

0 comments on commit 41d4446

Please sign in to comment.