90deg
Version:
90deg is an OISC around vector dot product and addition
41 lines (31 loc) • 1.03 kB
JavaScript
const vm = {
run(s, code, log = true) {
const dimensions = s.length;
if (code.length % (dimensions*2+1) !== 0) throw new Error("Not enough parameters");
let pc = 0;
while (pc < code.length) {
// Calculate dot product
let dotProd = 0n;
for (let i = 0; i < dimensions; i++) {
dotProd += code[i+pc] * s[i];
}
// Condition
if (dotProd !== 0n) {
for (let i = 0; i < dimensions; i++) {
s[i] += code[i+pc+dimensions];
}
// Loop back
pc = parseInt(code[pc+dimensions*2]) * (dimensions*2+1);
if (log) {
console.log(`s = (${s.toString()})`);
}
} else {
pc += dimensions*2+1;
}
}
return s;
}
};
if (typeof module === "object") {
module.exports = vm;
}