JSFiddle - React, Tailwind, and code Playground
Binary Double Delta Compression Test - Fail
by skibulk
JavaScript
console.clear();
// Just looking at the numbers, without flagging their bit lengths at this point
var int;
var data = [];
var dataBits = 0;
// State the difference for each number relative to the min or max value in the data
for(var i = 0; i < 50; i++){
int = Math.floor(Math.random() * 1000);
data.push(int);
dataBits += int.toString(2).length;
}
data.sort(function(a,b){return a-b});
console.log(dataBits, data);
var min = data[0];
var max = data[data.length - 1];
// Include the min and max numbers
var data2 = "" + min.toString(2) + max.toString(2);
for(var i = 0; i < data.length; i++){
var diffMin = data[i] - min;
var diffMax = max - data[i];
if( diffMin <= diffMax){
// Flag 0 = relative to min
data2 += "0" + diffMin.toString(2);
} else {
// Flag 1 = relative to max
data2 += "1" + diffMax.toString(2);
}
}
console.log(data2.length, data2);
function isGreaterThan(a, b){
return a / b % 1 ? true : false;
}
console.log(isGreaterThan(3,4));
/*
// Try giving the difference between the previous number and the current number
// If the difference to 0 is lower, use the original number
var current, change;
var bits = 0;
var data2 = [];
data2.push(data[0]);
for(var i = 0; i < 49; i++){
change = data[i+1] - data[i];
bits += change.toString(2).length;
data2.push(change);
}
console.log(bits, data2);
bits = 0;
var data3 = [];
data3.push(data2[0]);
for(var i = 0; i < 49; i++){
current = data2[i+1];
change = current - data2[i];
if(Math.abs(change) < current){
// If negative, sign included in length
bits += change.toString(2).length;
// If positive, add 1 bit for sign header
if(change >= 0) bits++;
data3.push(change);
} else {
bits += current.toString(2).length;
bits++; // Sign header
data3.push(current);
}
}
console.log(bits, data3);
*/